· kaynak dev.to (home feed)
SneakPeek açığı, Claude Code Desktop'taki repo HTML önizlemelerinin yerel dosyaları okuyup dışarı sızdırmasına izin verdi
Noma Labs'ın SneakPeek zinciri, Claude Code Desktop'un önizleme bölmesini kullanarak şişirilmiş bir HTML dosyasından JavaScript çalıştırdı ve ev dizinindeki kimlik bilgilerini çaldı; Anthropic ağustos ayında eksiksiz bir düzeltme yayımladı.

14 Ekim'de Noma Labs, Claude Code Desktop'taki önizleme bölmesini hedef alan SneakPeek adlı bir açıklama zincirinin ayrıntılarını yayımladı. Bulgulara ilişkin bir dev.to yazısına göre, herkese açık bir depoya yerleştirilmiş kötü niyetle büyütülmüş bir HTML dosyası, Claude dosyayı önizlediği anda JavaScript çalıştırabiliyor, kullanıcının ev dizinindeki dosyaları okuyabiliyor ve bunları saldırgan kontrollü bir sunucuya gönderebiliyordu. Anthropic sorunu CVSS 8.7, Yüksek olarak derecelendirdi ve 17 Ağustos'ta eksiksiz bir düzeltme yayımladı.
Saldırı nasıl çalıştı
Claude bir HTML dosyasını okuduğunda veya düzenlediğinde, masaüstü uygulaması dosyayı bir önizleme bölmesinde görüntüler. Noma Labs bu bölme çevresindeki üç koruma katmanını şöyle anlatıyor: script'leri engelleyen bir Content Security Policy, sayfaların opak bir origin'e sahip olması için data: URL olarak yüklenmesi ve dev-server proxy'sine bağlı bir istek filtresi.
Her koruma katmanı yüzeyin yalnızca bir bölümünü kapsıyordu. 256KB altındaki dosyalar CSP uygulanarak data: URL olarak yükleniyordu. Bu eşiği aşan dosyalar ise geçici bir konuma yazılıyor ve file:// URL olarak açılıyordu — CSP'yi hiç almayan bir yol; ayrıca Chromium'da bir file:// sayfası diğer yerel dosyaları fetch ile çekebilir. İstek filtresi ise yalnızca bölme canlı bir dev server'a proxy yaparken çalışıyordu, diskteki statik bir dosyayı görüntülerken değil.
Saldırı için bu nedenle yalnızca hacim gerekiyordu. Noma Labs bir HTML belgesini 256KB'nin üzerine kadar doldurdu, içine bir script gömdü ve bunu bir test kapsama raporu olarak maskeledi — o boyutta kimse şüphelenmeyeceği bir dosya. Depoyu klonlayıp Claude'dan raporu incelemesini isteyen bir kurban, tek bir izin istemi bile görmeden script'i tetikledi; çünkü agent ne bir komut çalıştırdı ne de bir dosya yazdı — kod, dosyayı göstermenin salt bir yan etkisi olarak uygulamanın renderer'ında çalıştı. Kavram kanıtı rapor edildiğine göre SSH özel anahtarlarını, AWS anahtarlarını, npm ve GitHub token'larını ile Docker ve Kubernetes kimlik bilgilerini ele geçirdi.
Önce bir yama, sonra bir bypass
Noma Labs hatayı 4 Temmuz'da bildirdi. Anthropic'in ilk yaması, önizlenen sayfadan file:// hedeflerine yapılan fetch() ve XMLHttpRequest çağrılarını engelledi. Noma Labs bunu, aynı fetch işlemini blob: URL'den oluşturulmuş bir Web Worker içinde çalıştırarak aştı — filtrein kapsamadığı bir bağlam — ve bypass'ı 24 Temmuz'da bildirdi. Anthropic 3 Ağustos'ta ilk düzeltmenin eksik olduğunu kabul etti ve CSP'yi, file:// yükleme yolunu ve Worker açığını birlikte ele alan kapsamlı bir yeniden yazım başlattı. Düzeltme 17 Ağustos'ta Claude Desktop 1.30096.1 ve sonrasında, otomatik güncelleme yoluyla dağıtıldı; yani uygulamaları kendi kendine güncellenen kullanıcılar yaklaşık iki aydır korunuyor.
dev.to yazarına göre asıl öğretici olan bypass'ın kendisi: ilk yama, kavram kanıtının kullandığı belirli API'leri engelledi ve saldırgan simply başka bir API'ye uzandı. Nihai düzeltme ise tekil çağrılar yerine temel koşulları hedefledi.
Depo içeriklerini görüntüleyen araçlar için dersler
Yazının yazarı — Reado adlı bir kod okuma IDE'si geliştiren — bu hatadan daha geniş sonuçlar çıkarıyor. 256KB eşiği büyük olasılıkla bir performans kararıydı, ancak bir boyut eşiği, büyük dosyaları farklı bir güvenlik modeline sahip ikinci bir kod yoluna sessizce yönlendirdi. Agent izin mekanizması — komut onayı, yazma kısıtlamaları, shell sandboxing — hiç devreye girmedi; çünkü saldırı agent'ın yaptığı herhangi bir şeyde değil, agent'ı çevreleyen uygulamadaydı. Tetikleyici ise bir inceleme talebiydi: bir dosyanın kullanıcının güvendiği biri tarafından henüz denetlenmemiş olması en olası an, uygulamanın en yetenekli yüzeylerinden biri tarafından ele alınıyordu.
Yazar ayrıca açıklamayı okuduktan sonra kendi aracını denetlediğini ve gömülü tarayıcı bölmesinde artık ikisi de düzeltilmiş iki ilgili kusur bulduğunu anlatıyor.
Neden önemli
SneakPeek, agent'lı kodlama araçlarının saldırı yüzeyinin agent'ın çok ötesine uzandığını gösteriyor. Güvenlik çabası modelin neler yapabileceğini kısıtlamaya odaklandı; oysa burada agent tümüyle masumca davranırken, klonlanmış bir depodan gelen bir dosya kimlik bilgilerini UI üzerinden dışarı sızdırdı. Depo içeriğini görüntüleyen her şey — önizlemeler, Markdown, notebook'lar, görseller, gömülü tarayıcılar — agent ne kadar sıkı yönetilirse yönetilsin saldırgan tarafından erişilebilir durumda.
Kullanıcılar için pratik adım, Claude Desktop'ın 1.30096.1 veya sonraki bir sürümde olduğunu doğrulamak; GitHub danışma belgesi ve CVE tanımlayıcısı yazı zamanında hâlâ beklemede olarak listeleniyordu. Üreticiler için tavsiye ise şudur: bir klondaki her dosyayı yabancıdan gelen bir girdi olarak ele alın, dosya boyutundan bağımsız olarak aynı kısıtlamalara sahip tek bir görüntüleme yolu bulundurun, içerik hangi API'leri çağırabileceğine göre değil nereden geldiğine göre kısıtlayın ve varsayılan olarak kaynağı göstererek yalnızca gerekli olanı render edin.
- #claude-code
- #security
- #vulnerability
- #anthropic
- #chromium
İlgili yazılar
- Anthropic: Agent saatleri altı bire bir oranına ulaşırken, teknik alanlarda junior işe alımlar yüzde 27'den yüzde 9'a düştü
- İki TP-Link açığı, Tapo kameralarda ve TL-WR841N yönlendiricide işletim sistemi komutu çalıştırılmasına imkân veriyor
- Döndürülmüş Kubernetes service account token'ları son kullanma tarihine kadar geçerli kalır; bağlı Secret'lar bunları iptal eder