Ajan çerçeveleri sık sık “bu araç yalnızca şu komutları çalıştırır” veya “salt okunur kipte” diye güven sınırı çizer. Açık kaynak bir AgentOS olan AG2’de (autogen paket ailesiyle birlikte) bu sınır, tek bir gözden kaçan ayırıcıyla deliniyor. ABD Ulusal Güvenlik Açığı Veritabanı’nda (NVD) 5 Kasım 2026 akşamı (İstanbul saatiyle 6 Kasım) yayımlanan CVE-2026-113663, yaklaşık CVSS 8.8 ile yüksek önemde. Sınıflandırma CWE-78 (işletim sistemi komutunda özel öğelerin yetersiz temizliği) ve CWE-184 (yasaklanan girdi listesinin eksik olması). GitHub danışma kaydı GHSA-2h4w-29cv-2cmv.
Hedef, SandboxShellTool aracının kısıtlı kipleri: açık bir komut izin listesi (allowed=[...]) ve salt okunur mod (readonly=True). İkinci kip, izin listesi verilmediğinde örtük bir salt okunur komut kümesini aynı filtreye bağlıyor. Yani “yalnızca güvenli komutlar” vaadi ile “yalnızca şunu çalıştır” vaadi aynı kapıdan geçiyor; aynı kapı da aynı baypası paylaşıyor.
Filtre neyi görüyor, kabuk neyi çalıştırıyor?
Kısıtlı kipler, komutun izin verilen bir önekle başlayıp başlamadığını ve seçilmiş kabuk sözdizimini içerip içermediğini denetliyor. Filtrelenen operatörler arasında yönlendirme, boru, noktalı virgül ve klasik zincirleme biçimleri var. Eksik olan ise yeni satır ve satır başı karakterleri. Denetimden geçen ham dizge ardından sh -c ile çalıştırılıyor.
POSIX kabuğu, gömülü bir yeni satırı pratikte ikinci bir ifade gibi ele alabiliyor; tıpkı noktalı virgülle ayrılmış iki komut gibi. Filtre birinci satırın izinli önekine bakıp operatör listesinde yeni satırı görmeyince komutu kabul ediyor. Kabuk ise sonraki satırı da işletiyor. Danışma kaydı bunu “izin listesi veya salt okunur kip varken bile ek, rastgele bir ifadenin çalıştırılması” diye özetliyor.
Neden “sandbox” adı yanıltıcı olabilir?
Varsayılan arka uç LocalEnvironment. Danışmaya göre bu backend, komutları ev sahibi sistemde bir alt süreç olarak çalıştırıyor; aracın kendi dokümantasyonu da burada gerçek bir yalıtım olmadığını belirtiyor. Yani CVE-2026-113663, zaten kapatılmış bir konteynerden kaçış değil. İzin listesinin verdiği söz tutulmayınca komut, ajan sürecinin yetkileriyle makinenin kendisinde yürüyor. Gizlilik, bütünlük ve erişilebilirlik etkileniyor.
Ulaşılabilirlik de yalnızca “geliştirici yanlış komut yazdı” senaryosu değil. Araç argümanları dil modeli tarafından üretiliyor ve ajanın okuduğu bir belge, araç çıktısı veya başka bir metinle — yani dolaylı istem enjeksiyonuyla — yönlendirilebiliyor. Operatörün zararlı satırı kendisinin yazması gerekmiyor.
Hangi paketler etkileniyor?
- ag2 (pip): 0.13.2 dahil, 1.1.1 öncesi sürümler. Düzeltme 1.1.1’de.
- autogen (pip): 0.13.2 ile 0.14.1 arası etkileniyor. Danışma kaydı bu paket için yamalı bir sürüm listelemiyor.
Özellikle kısıtlı kipleri bir güvenlik sınırı sanıp ajanı ev sahibi makinede, geniş yetkili bir hesapla çalıştıran ekipler risk altında. “blocked” listesi zaten aracın kendi dokümantasyonunda güvenlik sınırı sayılmıyor; asıl vaat allowed ve readonly idi. Bu kayıt o vaadi hedef alıyor.
Ne yapılmalı?
AG2 kullananlar 1.1.1 veya sonrası sürüme geçmeli. Hâlâ autogen paket adıyla sabitlenmiş projeler, danışmada yama sürümü verilmediği için ayrı değerlendirilmeli; mümkünse bakım gören ag2 hattına geçmek daha güvenli. Kalıcı bir savunma ilkesi de şu: İzin listeli komutları bir kabuk sarmalayıcısı üzerinden değil, kabuksuz doğrudan çalıştırmak, ayırıcı karakter avını gereksiz kılar. Sayılmayan her özel karakter yeni bir baypas adayıdır.
2026’da peş peşe gördüğümüz ajan kabuk açıklarının ortak dersi tekrar ediyor. “Şu operatörleri yasakladık” listesi, modelin ürettiği serbest metin karşısında eksik kalıyor. AG2 CVE-2026-113663, o listenin yeni satırı unuttuğunda sonucun ev sahibi sistemde komut çalıştırmaya döndüğünü gösteriyor.
Kaynak: ABD Ulusal Güvenlik Açığı Veritabanı (NVD), AG2 güvenlik danışma kaydı (GHSA-2h4w-29cv-2cmv)







