Wiz araştırmacıları, altı popüler yapay zeka kod asistanında, kötü amaçlı bir kod deposunun geliştiricinin bilgisayarının kontrolünü sessizce ele geçirmesine olanak tanıyan bir güvenlik açığı keşfetti. GhostApproval adı verilen bu zafiyet, asistanın masum görünen bir dosyayı düzenlemek için izin istemesi, ancak yazma işleminin hassas bir dosyaya yönlendirilmesi prensibine dayanıyor. Etkilenen araçlar arasında Amazon Q Developer, Anthropic'in Claude Code'u, Augment, Cursor, Google Antigravity ve Windsurf bulunuyor. Wiz, bu açığı 8 Temmuz'da yayınladı. Altı araçtan üçü düzeltme yayınlarken, ikisi henüz düzeltme sunmadı. Anthropic ise bunun bir hata olmadığını iddia ediyor. En fazla risk altında olanlar, dosyaları kullanıcı onayından önce değiştiren araçlar.
Saldırı, AI asistanlarının kontrol etmediği eski bir Unix özelliği olan sembolik bağlantıyı (symlink) kötüye kullanıyor. Sembolik bağlantı, diskteki başka bir dosyayı işaret eder ve bu bağlantıya yazmak, aslında hedef dosyaya yazmak anlamına gelir. Wiz, kurbanın SSH giriş dosyasını (~/.ssh/authorized_keys) işaret eden project_settings.json adında bir sembolik bağlantı içeren kötü amaçlı bir depo oluşturdu. Deponun README dosyası, asistana project_settings.json'a 'bir satır' eklemesini söylüyor ve bu satır, saldırganın SSH anahtarı olarak gizleniyor. Geliştirici, asistandan 'çalışma alanını kurmasını' veya 'README'yi takip etmesini' istediğinde, asistan anahtarı sembolik bağlantı üzerinden doğrudan giriş dosyasına yazıyor. Makinede SSH hizmeti çalışıyorsa, saldırgan şifresiz giriş yapabiliyor. İkinci bir varyantta ise hedef, kabuk başlangıç dosyası (~/.zshrc) oluyor; bu dosya, terminal bir sonraki açılışında çalıştırılıyor, böylece SSH'ye gerek kalmıyor. Wiz, bu saldırıların gerçek dünyada kullanıldığına dair bir işaret olmadığını belirtiyor.
Sembolik bağlantı hileleri onlarca yıldır biliniyor. Asıl sorun, onay kutusunun yanlış bilgi göstermesi. GhostApproval'da onay kutusu yalan söylüyor. Wiz, Claude Code'u test ettiğinde, asistanın kendi muhakemesinde gerçek hedefi tespit ettiğini, project_settings.json'ın 'aslında bir zsh yapılandırma dosyası' olduğunu not ettiğini buldu. Ancak geliştiriciye gösterilen kutuda yalnızca masum dosyanın adı yer alıyordu. Geliştirici, yerel bir yapılandırma dosyasını düzenlediğini sanarak Kabul'e tıklıyor, ancak yazma işlemi kabuk başlangıç dosyasına veya SSH anahtarlarına gidiyor. Wiz buna 'bilgilendirilmiş onam atlatması' adını veriyor: insan hâlâ döngüde, ancak döngü ona yanlış şeyi gösteriyor. Bazı araçlar daha da kötü: onay kapısını tamamen atlıyorlar, böylece müdahale anı hiç olmuyor. Windsurf, dosyayı Kabul ve Reddet düğmeleri görünmeden önce diske yazıyor, bu nedenle istem yalnızca bir geri alma düğmesi oluyor ve anahtar zaten yerine yerleşmiş oluyor. Augment hiçbir diyalog göstermiyor ve Wiz, proje dışındaki bir AWS kimlik bilgisi dosyasını sessizce okuduğunu gösterdi. Yine de istem gösteren araçlar daha güvenli değil; istem yalnızca yanlış dosyayı adlandırıyor.
Wiz, açığı altı satıcıya da bildirdi. Yayın anındaki durum şöyle: Amazon Q Developer, Language Server 1.69.0 ile düzeltildi (CVE-2026-12958). Çoğu kullanıcı için otomatik güncellenir; IDE yeniden yüklendiğinde güncelleme gelir. Cursor, v3.0 ile düzeltildi (CVE-2026-50549). Eklenti yöneticisinden güncelleyin. Google Antigravity, düzeltildi (CVE bekliyor). Güncel sürüme geçin. Augment, açığı kabul etti ancak henüz düzeltme yok. Güvenilmeyen depolara yönlendirmeyin. Windsurf, açığı kabul etti ancak henüz düzeltme yok. Güvenilmeyen depolara yönlendirmeyin. Anthropic Claude Code ise açığı reddetti; mevcut sürümler uyarı veriyor. Güncelleyin ve kabul etmeden önce sembolik bağlantı uyarısını okuyun. Anthropic, Wiz'e durumun 'tehdit modellerinin dışında' olduğunu söyledi: geliştirici, oturumu başlatırken klasöre güvenmeyi seçmiş ve ardından düzenlemeyi onaylamış, bu nedenle karar onlara ait. Ayrıca Claude Code'un sembolik bağlantı uyarısının, Wiz'in özel raporundan önce Şubat başında, rutin bir sağlamlaştırma olarak gönderildiğini ve daha önceki 'yorum yok' ifadesinin otomatik bir yanıt olduğunu belirtti. Altı satıcıdan yalnızca Anthropic bunun bir hata olmadığını söylüyor; üçü düzeltme yayınladı, ikisi üzerinde çalışıyor. Anthropic'in duruşu gerçek bir soruyu gündeme getiriyor: Kötü amaçlı bir depoya zaten güvenmiş bir geliştiriciyi korumak için bir kod asistanı ne kadar ileri gitmeli?
Uzmanların Görüşleri
Yamalamanın ötesinde, hangi aracı kullanırsanız kullanın, riski azaltacak birkaç alışkanlık var. Asistanı sınırlı dosya erişimiyle veya bir sanal alan/kapsayıcı içinde çalıştırın. Bir deponun README'sini ve gizli yapılandırma dosyalarını, asistanın 'kurulumunu' yapmasına izin vermeden önce inceleyin. Yabancı bir depoda çalıştıktan sonra, saldırının hedef aldığı dosyaları kontrol edin; bunlar proje dışında olduğu için git status'ta görünmezler: kabuk başlangıç dosyanız, SSH anahtarlarınız ve AI aracınızın kendi yapılandırması. Zaman damgalarını kontrol etmek (örneğin, ls -la ~/.zshrc ~/.ssh/authorized_keys) asistan çalışırken bir şeyin değişip değişmediğini gösterir. Wiz'in araç üreticilerine tavsiyesi kısa: sembolik bağlantıyı çözün ve gerçek hedefi sormadan önce gösterin, proje klasörü dışına yazılan herhangi bir yazma işlemini işaretleyin ve kullanıcı fiilen onaylayana kadar diske dokunmayın.
Önemli Gelişmeler
Mayıs ayında Adversa AI, altı kod asistanına (Claude Code, Cursor, GitHub Copilot ve Grok Build dahil) karşı aynı sembolik bağlantı ve onay modeli olan SymJack'i yayınladı. İki bağımsız ekibin bunu bulması, tek bir satıcının hatası değil, ortak bir tasarım zayıflığına işaret ediyor: Bu asistanlar, sıradan dosya işlemleri kullanarak bir sembolik bağlantıyı takip ediyor, ardından yazma işleminin gerçekte hangi yola gittiğine değil, kendilerine verilen yola dayanarak onay istiyor. Örtüşme CVE'lere kadar uzanıyor. Cursor'un kendi sembolik bağlantı hatası danışmanlığı, hem Wiz'i hem de The Hacker News'in DuneSlide olarak ele aldığı daha önceki çalışmaları yapan Cato AI Labs'ı kredilendiriyor. Bir AI asistanının güvendiği dosyalar artık yalnızca kod değil. Bu asistanlar için, bunlar aynı zamanda asistanın takip ettiği talimatlar ve üzerinde işlem yaptığı yollar olarak ikiye katlanıyor ve onay kutusunun ne gösterdiğini şekillendiriyor. AWS'nin bülteni ayrıca, zehirli bir deponun bir yapılandırma dosyasını otomatik olarak yüklemesine izin veren ayrı bir Amazon Q hatasını (CVE-2026-12957) kapsıyor.
Kaynak: thehackernews.com