Claude Code, Cursor ve Grok Build gibi yapay zeka kodlama asistanları, bir geliştirici güvenilmeyen bir depoyu (repository) açtığı anda, herhangi bir tıklama veya onay gerektirmeden rastgele komutlar yürütebilir. Bu açık, bu araçların bir projenin dosyalarını taramak için Git'in core.fsmonitor özelliğini çağırma biçiminden kaynaklanmaktadır.

Bu sorun neden şimdi önemli?

Geliştiriciler, kod önermesi, fonksiyonları yeniden yapılandırması (refactor) veya tüm modülleri yazması için giderek daha fazla yapay zeka ajanlarına güveniyor. Bu ajanların çalışma alanının (workspace) hızlı bir anlık görüntüsüne ihtiyacı vardır, bu nedenle arka planda git status çalıştırırlar. Git, bir deponun .git/config dosyasını okuduğunda, core.fsmonitor değerine atanan her türlü değer, Git'in çalıştıracağı bir kabuk (shell) komutu olarak kabul edilir. Kötü niyetli bir aktör, bu yapılandırma girişine özel olarak hazırlanmış bir komut yerleştirebilir ve yapay zekanın arka plandaki Git çağrısı, kullanıcı henüz tek bir satır kod yazmadan bu komutu tetikler.

Kod, yapay zeka ajanının normalde çalıştığı kum havuzunu (sandbox) baypas ederek geliştiricinin kendi yetkileriyle çalışır. Uygulamada, ele geçirilmiş bir depo, geliştirici asistanın yalnızca öneriler sunduğunu düşünürken kötü amaçlı yazılım yükleyebilir, kimlik bilgilerini sızdırabilir veya kaynak dosyaları değiştirebilir.

Saldırı nasıl gerçekleşiyor?

  1. Hazırlık – Bir saldırgan, .git/config dosyası core.fsmonitor = /path/to/malicious/script gibi bir satır içeren bir depo oluşturur.
  2. Teslimat – Depo bir zip dosyası olarak teslim edilir, bir USB bellekten kopyalanır, paylaşılan bir sürücü üzerinden senkronize edilir veya .git klasörü halihazırda mevcut olacak şekilde kurbanın makinesine yerleştirilir.
  3. Tetikleme – Geliştirici, klasörü yapay zeka destekli bir IDE'de açar. Asistan, bağlam toplamak için git status çalıştırır. Git yerel yapılandırmayı okur, core.fsmonitor komutunu yürütür ve kötü amaçlı betik anında çalışır.

Basit bir git clone işlemi bu riski ortaya çıkarmaz çünkü klonlama işlemi, üzerinde oynanmış yapılandırmanın bulunmadığı yeni bir .git dizini oluşturur. Saldırı, yalnızca saldırgan önceden var olan bir .git klasörü sağlayabildiğinde işe yarar.

Riskler neler?

  • Bireysel geliştiriciler, farkında olmadan makinelerinin ele geçirilmesiyle yapay zeka ajanının erişebildiği tüm verileri kaybedebilirler.
  • Ekipler, kodları dahili sürücüler veya yüklenici zip dosyaları aracılığıyla paylaşanlar, zararlı yazılımı (payload) birçok iş istasyonuna yayabilir.
  • Araç sağlayıcıları, kullanıcılar ihlali temel Git etkileşimine değil de yapay zeka asistanına bağlarsa itibar kaybı riskiyle karşı karşıya kalır.

Kötü niyetli komut kullanıcının haklarını devraldığı için, SSH anahtarları, derleme betikleri veya dağıtım kimlik bilgileri dahil olmak üzere geliştiricinin değiştirebildiği her dosyayı değiştirebilir.

Geliştiricilerin bugün alabileceği önlemler

  • Yerel Git ayarlarına güvenmeyin. Bir yapay zeka asistanı projeyi her sorguladığında, deponun yapılandırması küresel değerlerin üzerine yazar.

  • Bir asistanla klasör açmadan önce core.fsmonitor girişini inceleyin:

    git config --get core.fsmonitor
    

    Herhangi bir değer görünüyorsa, bunu şüpheli olarak değerlendirin.

  • Girişi şu komutla kaldırın:

    git config --local --unset core.fsmonitor
    
  • Git'in çalıştırabileceği diğer riskli anahtarları kontrol edin: hooksPath, sshCommand, pager, editor, filter. Bunların boş olduğunu doğrulamak için aynı git config --get desenini kullanın.

  • Bir yapay zeka aracına beslemeyi düşündüğünüz her türlü kod için temiz klonları tercih edin. Bir zip veya aktarılmış klasörle çalışmak zorundaysanız, .git dizinini silin ve depoyu yeniden başlatın (re-initialize) veya önce yukarıdaki kontrolleri yapın.

Sorumluluk kimde?

Bu güvenlik açığı, Claude Code, Cursor veya Grok Build'i çalıştıran dil modellerindeki bir hata değil; bu araçların dosya bilgilerini toplama biçiminin bir sonucudur. Bazı sağlayıcılar Git çağrılarını daha sıkı bir şekilde kum havuzuna (sandbox) almaya başladı, ancak varsayılan davranış hala yerel depo ayarlarına güveniyor. Endüstri, bir yapay zeka ajanı çalışma alanını tararken potansiyel olarak tehlikeli yapılandırma girişlerini kaldıran veya görmezden gelen bir standart benimseyene kadar, geliştiriciler son savunma hattı olmaya devam etmelidir.

Bundan sonra nelere dikkat edilmeli?

  • Araç güncellemeleri: git status komutunu çağırmadan önce Git yapılandırmasını açıkça temizleyen (sanitize) güncellemeler.
  • Topluluk odaklı kılavuzlar: Güvenli yapay zeka destekli geliştirme için, muhtemelen önerilen ön hazırlık kontrollerini de içeren kılavuzlar.
  • Güvenlik araştırmaları: Yukarıda vurgulanan beş anahtarın ötesine geçerek, kod yürütme yeteneğine sahip ek Git yapılandırma anahtarlarını ortaya çıkarabilecek araştırmalar.

Özetle: Bir yapay zeka asistanı kullanışlı bir eş programcı (pair-programmer) olabilir, ancak bir deponun Git yapılandırmasına gizlenmiş herhangi bir komutu memnuniyetle çalıştıracaktır. Asistanın dosyalarınıza dokunmasına izin vermeden önce çalışma alanını doğrulayın.