Yapay zeka kodlama asistanınız, siz fark etmeden SSH anahtarlarınızı yeniden yazıyor olabilir. Wiz Research, kötü niyetli bir project_settings.json sembolik bağlantısının (symlink) özel anahtarları işaret etmesine olanak tanıyan ve her işlem için çıkan onay diyaloğunun yalnızca sembolik bağlantının adını gösteren bir “GhostApproval” açığı keşfetti. Diyaloğu onayladığınızda, asistana kimlik bilgileriniz üzerinde sınırsız erişim sağlamış olursunuz.

Exploit nasıl çalışıyor

  • Bir saldırgan, bir depoya (repository) project_settings.json adlı bir dosya ekler.
  • Bu dosya sıradan bir JSON dosyası değildir; kullanıcının ~/.ssh/id_rsa (veya eşdeğeri) özel anahtarına yönlendiren bir sembolik bağlantıdır (symlink).
  • Geliştirici yapay zeka asistanından “çalışma alanını kurmasını” (set up the workspace) istediğinde, asistan sembolik bağlantıyı takip eder ve gerçek SSH anahtarı dosyasına yazmaya hazırlanır.
  • Görünen onay diyaloğu yalnızca project_settings.json dosyasını listeler. Sembolik bağlantıyı çözümleyerek diskteki gerçek yolu göstermez.
  • “Approve” (Onayla) butonuna tıklamak, asistana özel anahtarı değiştirme izni verir ve bu da o anahtara güvenen her serviste kullanıcının kimliğini fiilen tehlikeye atar.

Hata, yaygın olarak kullanılan altı araçta görülmektedir: Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity ve Windsurf. Hepsi aynı yanıltıcı diyaloğu gösteriyor çünkü kullanıcı arayüzü (UI), çözümlenmiş hedefi değil, kendisine gelen ismi görüntülüyor.

İşlem başına onaylar neden yeterli değil

İşlem başına onay (per-action approval), bir insanın yapay zekanın yaptığı her işlemi inceleyebileceğini varsayar. Uygulamada ise bu, sizi her birkaç saniyede bir kusursuz kararlar vermeye zorlar; ki kimse bir ajandan daha hızlı hareket edemez.

Üreticiler ne yapıyor – ve bu neden önemli

  • Amazon, Google ve Cursor bunu çoktan düzeltti.
  • Anthropic (Claude Code'un yapımcısı), kullanıcıların yalnızca anladıkları şeyleri onaylaması gerektiğini söylüyor. Bu yaklaşım, sembolik bağlantıları fark etmenin getirdiği bilişsel yükü göz ardı ediyor ve kullanıcıların her dosya yolunu anında denetleyebileceğini varsayıyor; bu gerçekçi olmayan bir beklentidir.
  • Cursor ayrıca, saldırganların herhangi bir onay istemi olmadan bir makinede kod yürütmesine olanak tanıyan DuneSlide adlı ayrı bir sorunu da ifşa etti. Şirket bu hatayı yamaladı ve izin kontrolleri zayıf olduğunda bu asistanların ne kadar hızlı birer saldırı vektörüne dönüşebileceğini gösterdi.

Yanıtlar arasındaki bu ayrım daha derin bir soruyu gündeme getiriyor: Güvenlik, olay gerçekleştikten sonra çıkan bir diyalog mu olmalı, yoksa asistanın asla aşamayacağı önceden tanımlanmış bir sınır mı?

Kapsamlı izinler: Pratik bir alternatif

Her dosya işlemi için onay istemek yerine, geliştiriciler asistan çalışmadan önce bir kapsam (scope) belirleyebilir:

  • Yapay zekanın okuyabileceği veya yazabileceği bir dizin ağacı (örneğin /src) tanımlayın.
  • ~/.ssh/id_rsa gibi o dizin ağacının dışındaki dosyalara dokunma girişimlerinin tamamı, işletim sistemi veya bir sandbox (kum havuzu) katmanı tarafından engellenir.
  • Kapsam bir kez belirlenir; bu da asistanın etkisini sınırlandırırken insanın vermesi gereken karar sayısını azaltır.

Kapsam belirleme, güvenlik modelini “her seferinde sor” mantığından “yalnızca gerekenlere izin ver” mantığına kaydırır. Bu, konteyner çalışma zamanlarının ve mobil işletim sistemlerinin uygulamaları nasıl sandbox içine aldığını yansıtır ve bir şeyler ters gittiğinde hasarı sınırlar.

Sırada ne var?

  • Üretici güncellemeleri: Etkilenen altı aracın güncelleme notlarını takip edin.

Özetle

GhostApproval açığı, bir açılır pencere diyaloğuna güvenmenin sahte bir güvenlik hissi verdiğini kanıtlıyor. Her yapay zeka kodlama asistanı sembolik bağlantıları çözümleyip tam yolları gösterene kadar, geliştiriciler kapsamlı yazma izinlerini zorunlu kılmalıdır; yani asistana başlamadan önce tam olarak nerede çalışabileceğini söylemelidir. Bu basit değişiklik, tıklama yorgunluğu yaratmadan en tehlikeli saldırı türlerini engeller.

Kaynak: dev.to/girish_r/your-coding-agents-approval-dialog-is-lying-to-you-ih1