24 açık kaynaklı MCP (Model-Control-Protocol) sunucu projesini tarayan bir güvenlik araştırmacısı, CVSS ölçeğinde 9.8 puan alan tek ancak ciddi bir sandbox komut enjeksiyonu açığı ortaya çıkardı. Hata, orta seviye bir yapay zeka ajanı çerçevesi olan AgenticX'te bulunuyor ve bir saldırganın sunucuyu çalıştıran Docker konteynerine rastgele kabuk (shell) komutları enjekte etmesine olanak tanıyor.
MCP sunucuları neden önemlidir
MCP, otonom yapay zeka ajanlarının dosya, veritabanı, tarayıcı ve benzeri harici araçlarla iletişim kurmasını sağlayan yapıştırıcıdır. Geliştiriciler, bir dil modeline gerçek dünyadaki kaynakları okuma, yazma ve bunlar üzerinde işlem yapma yeteneği kazandırmak için uygulamalarına bir MCP sunucusu yerleştirirler. Protokolün kendisi hafif ve yaygın olarak benimsenmiş bir yapıdadır, ancak her projenin bakımcıları çevreleyen kodu güvence altına almakla görevlidir.
Cline veya Aider gibi büyük ölçekli MCP uygulamaları halihazırda düzenli denetimlerden geçmekte ve olgun güvenlik süreçlerine sahiptir. Burada incelenen 24 proje, GitHub'da 100 ile 1.000 arasında yıldızı olan "orta seviye" aralığında yer alıyor. Bu depolar genellikle sertleştirilmiş kod yerine hızlı özellik sunmaya öncelik veriyor; bu da herhangi bir açık kaynaklı MCP sunucusunun varsayılan olarak güvenli olduğunu varsayan kullanıcılar için bir kör nokta oluşturuyor.
Tarama
Araştırmacı, beş klasik web uygulaması saldırı desenini arayan bir tarayıcı oluşturdu:
- Komut enjeksiyonu
- Yol aşımı (Path traversal)
- Sunucu Taraflı İstek Sahteciliği (SSRF)
- SQL enjeksiyonu
- Sandbox'tan kaçış
Tarayıcının 5.911 kaynak dosyası üzerinde çalıştırılması 94 ilk uyarı üretti. Manuel ayıklama (triage) işleminden sonra, yalnızca bir uyarı gerçek bir güvenlik açığı olarak kanıtlandı.
AgenticX hatasının detayları
AgenticX, kabuk komutlarını kullanıcı tarafından sağlanan dizeleri Python f-string'lerine yerleştirerek oluşturuyor ve ardından sonucu doğrudan konteynerin kabuğuna (shell) iletiyor. Dosya yollarının doğrulanması veya tırnak içine alınması gibi bir işlem yapılmıyor. Bu nedenle, kötü niyetli bir istem (prompt), bir noktalı virgül veya başka bir kabuk meta karakteri enjekte ederek konteynerin saldırganın seçtiği herhangi bir komutu yürütmesine neden olabiliyor.
Araştırmacı kodu şu şekilde yamaladı:
- Dil modeli tarafından sağlanan herhangi bir yolu güvenli bir şekilde kaçırmak (escape) için
shlex.quote()kullanmak. - Komutu oluşturmadan önce yol aşımı desenleri (
../) için açık kontroller eklemek.
Düzeltmeden sonra tarayıcının yeniden çalıştırılması, risk seviyesinin çarpıcı biçimde düştüğünü göstererek iyileştirmenin kök nedeni giderdiğini doğruladı.
Kim kazanıyor, kim kaybediyor
- Yapay zeka geliştiricileri, ürünlerine bir MCP sunucusu yerleştirdiklerinde, tek bir eksik temizleme (sanitization) adımının tüm bir güvenlik zincirini nasıl bozabileceğine dair somut bir örnekle karşı karşıyalar. Herhangi bir harici API yükü (payload) için yaptığınız gibi, bir dil modelinden gelen her parametreyi güvenilmeyen girdi olarak kabul edin.
Madalyonun diğer yüzü
Araştırmacı, MCP protokolünün kendisinin sağlam kaldığını vurguluyor. Hata, iletim formatındaki (wire format) bir tasarım zayıflığı değil, belirli bir uygulamadaki kodlama ihmalidir. Daha büyük ve iyi denetlenmiş projeler benzer sorunları halihazırda çözmüş durumdadır ve açık kaynak topluluğu AgenticX yamasından ders çıkarabilir. Yine de bu olay, "orta seviye" projelerin mütevazı yıldız sayılarına rağmen yüksek etkili hatalar barındırabileceğini gösteriyor.
Sonuç
AgenticX'teki tek bir kontrol edilmemiş f-string, tüm bir MCP sunucusunu rastgele kod yürütme için bir fırlatma rampasına dönüştürdü. Bu olay, yapay zeka ajanı ekosistemlerinin güvenliğinin protokolden ziyade disiplinli uygulamaya bağlı olduğunu kanıtlıyor. Geliştiriciler, LLM tarafından oluşturulan her parametreyi düşmanca olarak ele almalı, platformlar çalışma zamanı (runtime) korumalarını uygulamalı ve güvenlik araçları yapay zeka ajanlarının oluşturduğu benzersiz güven zincirlerini anlayacak şekilde evrilmelidir.
Kaynak: dev.to/easterndev/i-scanned-24-mcp-server-projects-and-found-a-real-sandbox-command-injection-cvss-98-4k9h
