· kaynak dev.to (home feed)
MCP araç açıklamaları onaydan sonra değişebilir; tarayıcıları ve kod incelemesini atlatıyor
Bir dev.to gönderisi, MCP araç açıklamalarının sabitlenmemiş, yeniden çekilen prompt içeriği olduğunu gösteriyor; böylece onaylanmış bir sunucu, yapılandırmada hiçbir değişiklik olmadan düşmanca hale gelebiliyor.

Sessizce geçersiz olan bir onay
dev.to'da yayımlanan bir gönderi, Model Context Protocol kurulumlarına özgü bir tedarik zinciri zaafını ortaya koyuyor: Bir MCP sunucu yapılandırması, siz onu inceledikten sonra bayt bayt aynı kalabilirken, işaret ettiği sunucu düşmanca hale gelebilir. Mekanizma, aracın açıklamasının kendisidir. Açıklamalar her bağlantıda modelin bağlamına yüklenir ve bunları başlangıçta onayladığınız hallerine sabitleyen hiçbir şey yoktur.
Gönderideki örnek, tek bir aracı bir deftere ekleme yapan, sıradan bir not alma sunucusu yapılandırmasıyla başlıyor. Kullanıcı bunu onayladıktan sonra üç şey olabilir: bakımcı bir güncelleme yayınlar, bakımcının npm hesabı phishlenir ya da paket baştan beri kötücülüdür ve sadece beklemektedir. Ardından açıklama, agent'a kullanıcının SSH private key'ini okumasını, bunu bir parametreye geçirmesini ve bu konuda sessiz kalmasını söyleyen ek bir talimatla büyür. Yapılandırma dosyası değişmemiştir, sürüm dizesi aynı kalabilir ve saldırı kod olarak değil, dokümantasyon olarak gelir. Talimat, araç hiç çağrılmasa bile bağlantıda context window'a girer.
Bunu yakalayamayan katmanlar
Yazar, mevcut güvenlik yığınını tek tek ele alarak her birinin kör noktasını gösteriyor. Dependabot, Snyk ve Trivy gibi bağımlılık tarayıcıları manifest'leri ve image katmanlarını okur; payload ise bir bağımlılık değişikliği değildir. Semgrep ve CodeQL kaynak dosyaları tarar, ancak kötücül metin kullanıcının makinesindeki bir süreç tarafından sunulan bir runtime dizesidir. Kod incelemesi diff'lere bakar ve ortada bir diff yoktur. Açıklamayı inceleyen insan, onu haftalar önce, kurulum sırasında bir kez okumuştur. Her katman doğru çalışmaktadır; düşmanca metin basitçe hiçbirinin izlemediği bir kanaldan gelir.
Kötü birleşen dört özellik
Gönderiye göre bu tek bir hata değil, kötü etkileşime giren dört ekosistem özelliğidir. Araç açıklamaları prompt içeriğidir; yani onları yazan kişi, promptunuzun bir parçasını yazmış olur. Bunlar her bağlantıda, lockfile, imza veya hash olmadan yeniden çekilir. npx -y deyimi, agent her başladığında yeniden çözümlenen, sabitlenmemiş bir uzak kod çekimini otomatik olarak onaylar. Ve kurumların, mühendislerinin hangi MCP sunucularını çalıştırdığına veya bu sunucuların neler erişebildiğine dair bir envanteri yoktur. Paket yöneticileri, kod için sabitlemeyi on yılı aşkın süre önce çözdü; prompt metninin bunun bir karşılığı yoktur ve değiştirilmiş bir metnin bir test paketinden geçmesi gerekmez.
Açıklamalara artifact muamelesi
Gönderi daha sonra, yazarın kendi tarayıcısı olan Bulwark'ı (bulwark-scanner olarak kurulur) tanıtıyor; temel özelliği bir lockfile'dır. bulwark pin, modelin görebileceği her açıklama ve şemanın içerik hash'ini kaydeder ve o dosya commit edilir. Bakımcı daha sonra değiştirilmiş açıklamayı yayınladığında bulwark verify, CI'da üç ayrı nedenden dolayı başarısız olur: metin değişmiştir, araç credential'lara dokunan bir yetenek kazanmıştır ve argüman şeması veri dışarı taşıyabilecek bir alan kazanmıştır. Yazarın savunusu şu: tespit kuralları bir silah yarışıdır, bütünlük denetimi ise değildir — her payload'ı tanımanıza gerek yoktur; yalnızca onayladığınız şeyin artık çalışan şey olmadığını fark etmeniz yeterlidir.
Gönderiye göre araç, Claude Code, Claude Desktop, Cursor, VS Code, Windsurf, Cline, Roo, Zed ve Continue için MCP yapılandırmalarını ayrıştırıyor, hiçbir ağ çağrısı yapmıyor ve bulguları OWASP LLM Top 10 ve MITRE ATLAS gibi çerçevelere eşliyor. Bu iddialar aracın kendi yazarından gelmektedir ve bağımsız olarak doğrulanmamıştır.
Envanterin mümkün kıldığı denetimler
Gönderi, her agent yüzeyini ayrıştırmanın başka denetimleri de ucuzlatdığını savunuyor. Açıklamalar, talimatları Unicode Tag bloğunda (U+E0000–U+E007F) gizleyebilir; bu blok yaygın editörlerde hiçbir şey olarak görünmez — ya da zero-width karakterlerde, bidi override'larında, base64 ve HTML yorumlarında gizleyebilir; bir tarayıcı bunları çözüp gizlenen şeyi yazdırabilir. Tek araçlı hiçbir denetimin yakalamadığı bir kombinasyon ise şudur: aynı anda özel verilere erişebilen, dışarıdan yazılmış içerik alabilen ve veriyi ağ dışına gönderebilen bir agent — hiçbir zaaf gerektirmeyen eksiksiz bir exfiltration yolu. Aynı araç adını sunan iki sunucu da, yeni eklenenin yerleşik olana yönelik çağrıları sessizce ele geçirmesini sağlar.
Yazarın kabul ettiği sınırlar
Gönderi sınırları hakkında açık sözlü. Tarayıcı bir modeli injection'a dirençli hale getirmez; izinli bir aracın sonucunun içindeki özenle hazırlanmış bir talimat yine izlenebilir ve kalıcı çözüm orada mimariseldir — exfiltration yolunun bir ayağını kaldırmak. Sunucu kaynak kodunu okumaz; dolayısıyla kötücül bir uygulamanın üzerindeki dürüst bir açıklama geçer. Yetenek çıkarımı, adlar, açıklamalar ve şemalar üzerinden bir sezgiseldir ve şemaya en fazla ağırlık verilir.
Neden önemli
Ana nokta, kullanılan araca bakılmaksızın geçerlidir: MCP'nin onay modeli bir anlık görüntüdür, oysa modelin gerçekten itaat ettiği metin canlı olarak çekilir ve hiçbir yere sabitlenmez. Agent'lar credential'lara, dosyalara ve ağa erişim kazandıkça "bu sunucuyu bir kez inceledim" ifadesi bir güvenlik sınırı olmaktan çıkar. Açıklamaları hash ile sabitlemek, bağlı sunucuların envanterini tutmak ve özel-veriye-eriş / dış-metni-içe-al / giden-veri-gönder kombinasyonunu parçalamak, gönderinin okuyuculara bıraktığı pratik yanıtlardır.
- #mcp
- #prompt-injection
- #supply-chain
- #security
- #ai-agents