Wiz araştırmacıları, altı popüler yapay zeka kodlama asistanında bir güvenlik açığı tespit etti. Bu açık sayesinde, tuzaklanmış bir kod projesi geliştiricinin bilgisayarını sessizce ele geçirebiliyor. Asistan, masum görünen bir dosyayı düzenlemek için izin istiyor ancak yazma işlemi hassas bir dosyaya yapılıyor.
Etkilenen araçlar şunlar: Amazon Q Developer, Anthropic'in Claude Code'u, Augment, Cursor, Google Antigravity ve Windsurf. Wiz, bu saldırı modeline GhostApproval adını verdi ve bulgularını 8 Temmuz'da yayınladı.
Altı araçtan üçü güncelleme yayınlarken, ikisi henüz bir düzeltme sunmadı. Anthropic ise bunun bir hata olmadığını savunuyor. En büyük risk altında olanlar, kullanıcı onay vermeden dosyaları değiştiren araçlar.
Saldırı Nasıl Çalışıyor?
Saldırı, sembolik bağlantı (symlink) adı verilen eski bir Unix özelliğini kötüye kullanıyor. Yapay zeka asistanları bu bağlantıları kontrol etmiyor. Bir symlink, diskteki başka bir dosyayı işaret ediyor ve ona yazmak aslında hedef dosyaya yazmak anlamına geliyor.
Wiz, project_settings.json adında bir symlink içeren kötü niyetli bir depo oluşturdu. Bu symlink aslında kurbanın SSH giriş dosyası olan ~/.ssh/authorized_keys'i işaret ediyor. Depodaki README dosyası, asistana "project_settings.json'a bir satır ekle" talimatı veriyor ve bu satır, saldırganın SSH anahtarı olarak gizleniyor.
Asistana "çalışma alanını kur" veya "README'yi takip et" dendiğinde, asistan SSH anahtarını doğrudan symlink üzerinden giriş dosyasına yazıyor. Eğer makinede saldırganın erişebileceği bir SSH hizmeti çalışıyorsa, saldırgan şifresiz giriş yapabiliyor.
Saldırının ikinci bir versiyonu ise kabuk başlangıç dosyası olan ~/.zshrc'ye yazıyor. Bu dosya, terminal bir sonraki açılışta çalıştırılıyor, bu nedenle SSH gerekmeyen bir saldırı mümkün oluyor. Henüz bu açığın gerçek saldırılarda kullanıldığına dair bir kanıt bulunmuyor; Wiz bunu bir araştırma olarak sunuyor.
Onay Kutusu Yanlış Bilgi Gösteriyor
Symlink hileleri onlarca yıldır biliniyor. Symlink sadece bir araç; asıl sorun onay kutusunda yatıyor. GhostApproval'da bu kutu yalan söylüyor.
Claude Code'u test eden Wiz, asistanın kendi mantık yürütmesinde gerçek hedefi tespit ettiğini gördü. Asistan, project_settings.json'un "aslında bir zsh yapılandırma dosyası" olduğunu belirtmişti. Ancak geliştiriciye gösterilen kutuda yalnızca masum dosya adı yer alıyordu.