AWS Kiro’da gizli web metniyle RCE: mcp.json yeniden yazımı, CVE yok

Intezer ve Kodem Security, AWS’nin agentic IDE ürünü Kiro’da gizli web metniyle tetiklenen bir remote code execution zinciri açıkladı. Saldırı, görünmez prompt-injection ile ~/.kiro/settings/mcp.json dosyasının anlamlı onay olmadan yeniden yazılması, ardından MCP sunucusunun otomatik reload edilip attacker-controlled startup komutlarının çalıştırılmasına dayanıyor. Yama 0.11.130 ve sonrası sürümlerde mevcut; güncel hat 1.0.x. CVE yok — bu yüzden birçok otomatik scanner kullanıcıyı uyarmayabilir.

Ana Gelişme: trust boundary’yi model yazıyor

Kiro’nun güvenlik modeli “human in the loop” onay diyaloglarına dayanıyor: shell komutu, dosya yazımı ve sonuç doğuran eylemler önce geliştiriciye sorulmalı. Araştırmacılara göre kritik boşluk, fsWrite aracının ~/.kiro/settings/mcp.json dosyasına onay gerektirmeden yazabilmesiydi. MCP / model-context-protocol yapılandırması değişince Kiro dosyayı otomatik reload edip listedeki startup komutlarını geliştiricinin OS yetkileriyle çalıştırıyordu. Yani config dosyası pratikte “çalıştırılacak shell komutları listesi”ydi.

Zincir kavramsal düzeyde şöyle işliyor. Geliştirici sıradan bir “bu dokümantasyon sayfasını özetle” isteğiyle URL fetch ediyor. Sayfadaki görünmez metin — araştırmacıların PoC’sinde beyaz zemin üzerinde beyaz, 1px font — modele talimat taşıyor. Model mcp.json içine rogue MCP server kaydı yazıyor; config reload oluyor; startup komutu çalışıyor. Bazı durumlarda config değişikliği pop-up’ı görünse de reload’un engellenmediği raporlanıyor. Onaylanan tek eylem çoğu zaman “URL’yi getir” oluyor — şüphe uyandırmayan, günlük IDE davranışı.

Saldırı non-deterministic: model gizli talimatı bazen yok sayabiliyor; Intezer testlerinde bir-iki denemede başarı yeterli bulunmuş. Attacker perspektifinden tek başarı yeterli.

Doğrulanan sürümler: 0.9.2 (macOS) ve 0.10.16 (Ubuntu). Patch floor: 0.11.130; 21 Temmuz 2026 itibarıyla güncel örnek 1.0.165. AWS platform düzeltmesi, mcp.json ve diğer sensitive path’ler için explicit approval gerektiren protected-path kontrolleri ekliyor.

CVE yok: scanner gap haberin kendisi

AWS bu vakaya CVE atamadı. National Vulnerability Database’de kayıt olmayınca otomatik vulnerability scanner’lar çoğu ekibi uyarmıyor. 0.11.130 altındaki kurulumlar için güncelleme manuel sürüm kontrolü gerektiriyor. TechTimes’ın vurgusu da burada: yama aylar önce gelmiş olsa bile CVE’siz disclosure, “scanner’da görünmüyor = güvendeyim” yanlış güvenini besleyebilir.

Disclosure zaman çizelgesi ve tekrarlayan desen

Intezer, 11 Şubat 2026’da HackerOne üzerinden AWS’ye bildirdi; Şubat’ta triage yazışmaları sürdü; 6 Mart’ta Coordinated Vulnerability Disclosure ekibine aktarıldı; yama 0.11.130 ile geldi; kamuoyu açıklaması Temmuz 2026’da yapıldı.

Bu, 2025’ten beri Kiro’ya karşı üçüncü mcp.json trust-boundary sınıfı vakası olarak konumlandırılıyor. Johann Rehberger (Embrace The Red) launch gününde benzer write-to-execution desenini belgelemiş; AWS Supervised mode’a confirmation eklemiş ama Autopilot’ta config yazımı devam etmişti. Cymulate’in .vscode/tasks.json varyantı CVE-2026-10591 almıştı. Intezer vakası ise hâlâ 0.9.2 / 0.10.16’da canlıyken raporlanmış ve CVE’siz kapanmıştı.

Cursor Windows git.exe RCE vakasıyla birleştirilmemeli — ürün ve vektör farklı. Ortak şemsiye agentic-ide güvenlik deseni: agent’ın yazabildiği her path, potansiyel execution surface’tir.

Neden Önemli?

ai-agent-security dersi net: agentic IDE’lerde trust boundary model muhakemesine bırakılamaz; platform-enforced path ve onay sınırları gerekir. “Human in the loop” diyaloğu, sessizce yazılabilen privileged config dosyası varken güvenlik tiyatrosuna dönüşebilir. MCP ekosistemi büyüdükçe, config dosyasını sessizce yazmak RCE’ye eşdeğer hale geliyor — çünkü startup komutu attacker’ın seçtiği binary’yi çalıştırır.

Geliştirici ekipleri için ikinci ders: CVE merkezli patch management, agentic tool zincirinde kör nokta bırakabilir. IDE sürümünü semver ve release notes ile takip etmek, scanner alert’ini beklemekten daha güvenli.

Geliştirici aksiyonu

  1. Kiro sürümünü kontrol edin; 0.11.130 altındaysanız hemen güncelleyin (tercihen güncel 1.0.x).
  2. MCP onay / Autopilot ayarlarını gözden geçirin; sensitive config yazımlarının explicit approval istediğini doğrulayın.
  3. CVE beklemeyin — scanner sessiz kalabilir; manuel patch hygiene uygulayın.
  4. Web içeriğini agent context’ine çekerken invisible-text / prompt-injection riskini varsayılan kabul edin; untrusted URL’leri agent’a “özetle” diye vermeden önce gözden geçirin.
  5. ~/.kiro/settings/mcp.json içeriğini periyodik denetleyin; tanımadığınız startup komutları kırmızı bayraktır.

Exploit PoC ayrıntıları, payload içeriği ve reproduction komutları bu yazıda yer almıyor; savunma odaklı rehberlik yeterlidir.

Sonraki Adımlar

Agentic IDE üreticilerinin MCP ve config path’lerini privileged surface olarak ele alıp almayacağı izlenecek. Aynı sınıftaki tekrarlayan Kiro vakaları, “bir kez yama yetmez; sınıfı kapat” mesajını güçlendiriyor. Amazon Q MCP auto-load ve benzeri config saldırılarıyla aynı ailede okunmalı — ürün adı farklı, trust-boundary hatası aynı kökenden.


Kaynaklar