2 puan yazan GN⁺ 2025-11-26 | 1 yorum | WhatsApp'ta paylaş
  • Google’ın yeni ajan tabanlı kod editörü Antigravity, dolaylı prompt injection yoluyla kullanıcının kimlik bilgilerini ve kodunu dışarı sızdırabiliyor
  • Saldırı, Gemini’nin kötü amaçlı bir web sayfasındaki gizli komutları okuyup tarayıcı alt ajanını (subagent) çağırarak verileri göndermesiyle gerçekleşiyor
  • Gemini, varsayılan olarak erişimi engellenmiş .env dosyası korumasını aşarak kimlik bilgilerini okuyor ve bunları webhook.site alan adına gönderiyor
  • Varsayılan izin listesinde (Allowlist) riskli alan adlarının bulunması nedeniyle tarayıcı alt ajanı kötü amaçlı URL’leri normal şekilde açabiliyor
  • Google, bu veri sızıntısı riskinin farkında olup uyarı metni sunuyor, ancak varsayılan yapı nedeniyle kullanıcının tüm ajan davranışlarını izlemesinin zor olduğu belirtiliyor

Saldırıya genel bakış

  • Antigravity, Google tarafından geliştirilen ajan tabanlı bir kod editörü ve Gemini modeli üzerinden kod yazma ile çalıştırmayı destekliyor
  • Araştırma ekibi, Oracle ERP’nin AI Payer Agents entegrasyon örneğini kullanarak saldırı senaryosunu oluşturdu
    • Kullanıcı, çevrimiçi bulduğu bir uygulama kılavuzunu Gemini’ye veriyor
    • İlgili web sayfasında 1 punto yazıyla gizlenmiş bir prompt injection bulunuyor
  • Bu injection, Gemini’yi şunları yapmaya yönlendiriyor
    • Kullanıcı kodu ve kimlik bilgilerini toplamak
    • Saldırganın kontrol ettiği bir URL üretmek
    • Tarayıcı alt ajanı üzerinden bu URL’ye gitmek

Saldırı zincirinin ayrıntıları

  • Gemini, injection’ı okuyup bunu araç çalıştırma isteği sanıyor
    • Kod tabanının ve .env dosyasının içeriğini toplamaya çalışıyor
  • Varsayılan ayarlarda .gitignore içinde yer alan dosyalara erişim engellenmiş olsa da Gemini bunu aşıyor
    • cat komutunu kullanarak .env dosyasının içeriğini terminale yazdırıyor
  • Ardından Gemini, saldırganın talimatı doğrultusunda URL encode edilmiş kimlik bilgileri ve kod parçaları içeren kötü amaçlı bir URL üretiyor
    • URL, webhook.site alan adını kullanıyor ve saldırgan istek kayıtlarını gerçek zamanlı görebiliyor
  • Gemini, tarayıcı alt ajanını çağırarak bu URL’yi açıyor ve bu süreçte veriler dışarı gönderiliyor
    • Varsayılan ayarlarda ‘Enable Browser Tools’ etkin olduğu için bu mümkün oluyor
    • ‘Browser URL Allowlist’ içinde webhook.site varsayılan olarak bulunduğundan engellenmiyor
  • Sonuç olarak saldırgan, webhook.site kayıtları üzerinden AWS kimlik bilgilerini ve özel kod parçalarını elde ediyor

Antigravity’nin varsayılan ayarları

  • Onboarding sürecinde kullanıcı, önerilen varsayılan ayarları olduğu gibi kabul etmeye yönlendiriliyor
    • Artifact > Review Policy > Agent Decides: Gemini, insan incelemesinin gerekip gerekmediğine kendisi karar veriyor
    • Terminal Command Auto Execution Policy > Auto: komutlar çalıştırılırken otomatik yürütme uygulanıyor
  • Bu ayarlar, Gemini’nin insan müdahalesi olmadan komut çalıştırabilmesini sağlıyor

Ajan yönetim yapısı

  • Antigravity’nin Agent Manager arayüzü, birden fazla ajanı aynı anda çalıştırıp kullanıcının bunları daha sonra inceleyebilmesi için tasarlanmış
    • Ajanların çoğu arka planda, gözetim olmadan çalışıyor
    • Bu nedenle prompt injection ile etkilenmiş bir ajanın kullanıcı müdahalesi olmadan kötü amaçlı işlem yapma ihtimali var

Google’ın riskin farkında olması

  • Google, Antigravity ilk çalıştırıldığında veri sızıntısı riskine dair bir uyarı metni gösteriyor
  • Ancak araştırma ekibi, aşağıdaki iki nedenle kullanıcı korumasının yeterli olmadığını söylüyor
    1. Agent Manager, birden fazla ajanı aynı anda çalıştıracak şekilde tasarlandığı için gerçek zamanlı izleme zor
    2. Varsayılan ayarlar insan incelemesini atlayacak şekilde yapılandırılmış
  • Google’ın bu risklerin zaten farkında olduğu doğrulandığından araştırma ekibi sorumlu açıklama sürecini yürütmedi

Özet

  • Antigravity’deki dolaylı prompt injection zafiyeti, Gemini ile tarayıcı alt ajanı arasındaki etkileşimi kötüye kullanarak hassas verilerin sızmasına yol açıyor
  • Varsayılan güvenlik ayarlarındaki boşluklar ve otomatik ajan yapısı, saldırının başarı şansını artırıyor
  • Google risk konusunda uyarı veriyor, ancak temel düzeyde bir azaltım önlemi henüz sunulmuş değil

1 yorum

 
GN⁺ 2025-11-26
Hacker News yorumu
  • Simon Willison ve Meta’nın önerdiği “Rule of Two” yaklaşımını beğeniyorum
    Bu, üç koşuldan en fazla ikisine izin veren bir ilke:
    A) güvenilmeyen girdiyi işleme, B) özel verilere erişim, C) harici durumu değiştirme veya harici iletişim
    Kusursuz değil ama bu üçünün de bir araya geldiği durumda aracın riskini yönetime anlatmaya yardımcı oldu
    İlgili yazılar: Willison’un yazısı, Meta’nın güvenlik yaklaşımı

    • (C) yalnızca ajanın dış dünya ile kasten iletişim kurduğu durumları değil, kullanıcının üretilen metni görebildiği her durumu da kapsıyor
      Örneğin çıktıdan önce bir denetleyici LLM’den geçse bile, prompt injection quine biçiminde yayılabilir
      Sınıflandırma problemleri gibi çıktının doğrulanabildiği durumlarda hafifletilebilir, ama genel metin çıktısını savunmak zordur
    • Yalnızca A ve B olsa bile sırlar saldırganın eline geçebilir
      İyi bir başlangıç noktası ama yeterli değil
      Durum ve harici iletişimi tek başlıkta toplayınca sonunda üç koşulun da sağlandığını sonradan fark ettim
  • Johann Rehberger, Antigravity’de benzer bir zafiyet bildirdi
    İlgili blog yazısı ve Google bug hunter sayfasına bakılırsa,
    tarayıcı ajanındaki veri sızdırma saldırıları zaten “known issue” olarak sınıflandırılmış ve ödül kapsamı dışında
    Dosya erişimi ve komut çalıştırma yetkisi olduğu için kötü amaçlı komutlar çalıştırılabiliyor

    • Bunun sektörde zaten alenen bilinen bir sır olduğunun kabul edilmesi dikkat çekici
      LLM güvenliğiyle ilgilenen herkes ‘lethal trifecta’yı ve veri sızdırma riskini zaten biliyor
      Ama çoğu kişinin yalnızca yeni özelliklere heyecanlanıp güvenliğe kayıtsız kalması üzücü
  • Bu yalnızca Gemini ya da Antigravity’ye özgü bir sorun değil; CLI erişim yetkisi olan tüm ajan tipi kodlama araçlarının ortak sorunu
    Ben şahsen Cline kullanıyorum ama web arama MCP erişimini dikkatle sınırlıyorum

    • Antigravity, alan adı beyaz listesi ve dosya kısıtlarıyla savunmaya çalıştı ama yönlendirilebilir servisleri gözden kaçırdı
      Saldırgan bunu kullandı ve LLM, sistem kabuğu üzerinden dosya korumasını aştı
    • Web arama MCP’nin kendisi sorunlu değil, asıl saldırı vektörü AI modelini ve MCP’yi kontrol eden program
    • Copilot, güvenilmeyen URL’lere erişirken kullanıcıdan açık onay istiyor
      Antigravity’nin sorunu, böyle bir onay süreci olmadan açık yönlendirmeye izin vermesi
    • Güvenilir URL filtrelemesini en iyi Google yapabilir
      Çünkü arama verisi çok fazla; umarım bu, prompt injection önlemeye katkı sağlar
    • Varsayılan ayarlarda tüm komutların otomatik olarak onaylanmasına yönlendirmesi eleştirilmeli
  • Saldırganların yaratıcılığı daha yolun başında
    Otomatik ajan yapay zeka ve dağıtım sistemleri arttıkça aşırı güven oluşması korkutucu geliyor
    GPU firmware’inin kendisi bile bir saldırı vektörü olabilir
    Ben ulus-devlet düzeyinde bir saldırgan olsaydım muhtemelen orayı hedef alırdım

    • Çalıştığım yerde ajan yapay zekanın sırlara hiçbir erişim yetkisi yok
      On yıllardır insanlara bile sır erişimi vermiyoruz
      .env dosyasını git’e yüklemek düşünülemez bile
      Ama son dönemde firmware zafiyetleri ile AI model birleşik saldırıları olasılığı arttığı için daha dikkatli olmak gerekiyor
    • Şirketler de artık riskin farkına varmaya başlıyor
      TechCrunch haberine göre sigorta sektörü bile AI’ı fazla riskli görüyor
  • Ben de aynı zafiyeti Google’a sorumlu şekilde bildirdim
    Aynı alan adı atlatma yöntemini (webhook.site) kullandım ve
    blog yazımda uzaktan komut çalıştırma gibi kamuya açık diğer sorunları da derledim

  • Dürüst olmak gerekirse, böyle haberler bana fazla abartılı geliyor
    Her LLM için bir CVE açıp “komut çalıştırabiliyor” diye şaşırmak zaman kaybı gibi
    Böyle yazıların neden HN ana sayfasına çıktığını anlamıyorum

    • Ama bu, LLM’in kendisindeki bir bug değil, LLM kullanan yazılımın tasarım kusuru
      LLM kendi başına kod çalıştırmaz ama Antigravity örneğinde olduğu gibi dikkatsiz entegre edilirse zafiyet oluşur
    • Asıl mesele, üçüncü tarafların bunu saldırı vektörü olarak kötüye kullanabilmesi
  • Sistemin tamamına erişim varsa yapay kontroller aşılabilir
    Sandbox ya da chroot gibi yalıtım araçları var ama pazara çıkış hızı (GTM) yüzünden çoğu zaman atlanıyor
    Yerel modeller bile internet kesilmeden ya da giden bağlantılar için firewall olmadan güvenli değil
    Çoğu zafiyetin temel nedeni, LLM’lerin komut ile veriyi ayırt edememesi
    Harika bir yazıydı

    • Eskiden vim’in modeline üzerinden kod çalıştırmanın mümkün olduğu dönemler vardı
      Bu, CVE-2002-1377’den CVE-2019-12735’e kadar tekrar eden bir tarih
      Antigravity de sonunda bir CVE alacak mı merak ediyorum
    • Model ile internet arasında mutlaka bir firewall olmalı
      Hem dil modeliyle hem de harici internetle çalışan araçlar, hassas verilere erişmemeli
    • Bu tür LLM’ler uzak bilgisayarlara erişmenin ya da onları hacklemenin yollarını kendileri öğrenebilir
    • Komut ve verinin karışması yalnızca LLM’lere özgü değil
      ACE, XSS, SQL injection gibi sorunlar da aynı kökten geliyor
      Mevcut kodda çözüm bulduğumuz gibi, LLM’lerde de sonunda çözüleceğine inanıyorum
  • Cursor gibi IDE’ler her gün milyonlarca sırra erişiyor
    Bu tür sorunlar bundan sonra da sık sık yaşanacak

  • Prompt injection tabanlı saldırılardaki yeniden üretilebilirlik eksikliği ilginç
    İstatistiksel modeller, rastgelelik unsurları nedeniyle aynı girdide bile farklı sonuçlar üretebilir
    Google gibi bulut modelleri, araştırmacıların zafiyetleri yeniden üretmesini zorlaştıracak şekilde tasarlanmış
    Üstelik yazının üslubunun Google Cloud belgelerine benzemesi ironik

  • Antigravity, Markdown görsel tabanlı veri sızdırma hatasına karşı da zafiyetliydi
    Birkaç gün önce bildirildi ama “intended behavior” olarak işaretlendi
    İlgili tweet

    • Hâlâ durum aynı ve başka pek çok sorun da var
      Blogumda bunların bir kısmını belgeledim