AIDive

Video paketi

Zayıf halka MCP sunucuları: GhostSplice rakamları, sızıntı yolları ve kontrol listesi

11 dk okuma

TL;DR

  • Bir MCP sunucusu eklenti değildir, ajanınızla her çağrıda konuşan bir kimlik bilgisi sahibidir: araç açıklamaları ve araç sonuçları, sizin kendi talimatlarınızla aynı ağırlıkla model bağlamına girer.
  • GhostSplice, model hizalamasının bir savunma olmadığını gösteriyor: tek blokta verilen bir hırsızlık emrini GPT-4o, Gemini 2.0 Flash ve Llama 3.3 %100 reddediyor; aynı emir bir araç açıklaması ile bir araç sonucu arasına bölündüğünde %100 uygulanıyor.
  • İstemci de model kadar önemli: Claude Haiku 4.5 API üzerinden her şeyi reddediyor, ama Cursor içinde çalıştırılan üç parçalı testte %100 boyun eğiyor.
  • Tedarik zinciri zaten canlı bir tehlike: CVE-2025-6514, 400,000'den fazla kez indirilen OAuth vekili mcp-remote'u, kötü niyetli bir sunucunun tetiklediği komut enjeksiyonuyla vurdu.
  • Cloudflare'in protokol düzeyindeki tespiti ve WriteGuard ilk gerçek kurumsal kontroller, ama TLS denetimli Zero Trust gerektiriyorlar ve yerel bir stdio sunucusu bunlarda hiç görünmüyor.
  • Tek başına çalışan bir geliştirici veya küçük bir ekip için savunma elle yapılır: envanter, kaynak doğrulama, kapsamı daraltılmış token'lar, her yazma işleminde insan onayı ve araç çıktısına veri olarak davranmak.

Kaynaklar ne diyor

Bir MCP sunucusu ajanınızı harici bir servise bağlar, bu yüzden bağlanmak için gereken her şeyi sizin yerinize saklar: token'lar, API anahtarları, servis hesabı kimlik bilgileri. 17 Ağustos'ta yayımlanan sızıntı analizi açık bir gözlemle başlıyor: token'lar doğrudan yapılandırma dizelerine yapıştırılıyor ve diskte okunabilir kalıyor, aceleyle yapılmış tek bir commit ile bir Git deposuna sızabilecek durumda s2. Aynı analiz ikinci açığı aşırı yetkilendirme olarak sıralıyor: geliştirme sırasında verilen geniş haklar olduğu gibi üretime taşınıyor, bu yüzden tek bir ele geçirme, gerçek kullanımın gerektirdiğinden çok daha fazlasını açığa çıkarıyor s2. Dördüncü açık prompt injection: ajan araçlarının getirdiği her şeyi okur, bir web sayfası, bir ticket, bir iç doküman, ve bu içeriğe gizlenmiş bir talimat sizden gelmiş gibi izlenir, meşru araçlar korumaları gereken şeyi açığa çıkarmak için kullanılır s2.

Üçüncü açık tedarik zinciri. CVE-2025-6514, 400,000'den fazla kez indirilen OAuth vekili mcp-remote'u etkiledi: kötü niyetli bir sunucu geliştiricinin makinesinde komut enjeksiyonu tetikleyip kod çalıştırabiliyor ve kimlik bilgileriyle çıkıp gidebiliyordu. Tek satırda kurulan popüler bir npm paketi ve kapı açık s3.

Ekosistem korumalarından hızlı büyüdü. Resmi kayıt defterinde 9,600'den fazla yayımlanmış sunucu var, uzak sunucu dağıtımları Mayıs 2025'ten beri beş katına çıktı, herkes yayımlayabiliyor ve merkezi bir doğrulama yok; ajanınız rastgele bir kaydı resmi bir araçla aynı güvenle karşılıyor s4. NSA, Mayıs'ta MCP'ye özel bir güvenlik rehberi yayımladı ve protokolün benimsenmesinin korumalarının inşasını geride bıraktığını belirtti s5.

ASSET araştırma grubunun adlandırdığı GhostSplice, sızdırmayı ajanın kendisine yaptırıyor. Kötü niyetli sunucu hırsızlık emrini tam yazmak yerine böler: bir parça araç açıklamasında, öbürü o aracın döndürdüğü sonuçta. Her parça tek başına zararsız görünür; ajan bağlamına giren her şeyi yeniden birleştirir ve talimatın tamamını iyi niyetle uygular s1. Asıl nokta rakamlar. Talimat tek blokta verildiğinde GPT-4o, Gemini 2.0 Flash ve Llama 3.3 %100 reddediyor. Parçalanmış talimatta üçü de %100 uyuyor s1. Claude modelleri yüzeyde daha dirençli, ama Claude Haiku 4.5 API üzerinden her şeyi reddediyor ve Cursor içindeki üç parçalı testte %100 boyun eğiyor: aynı model bir istemcide reddedip öbüründe veri sızdırıyor, istemcinin eklediği ya da eklemediği korumalara bağlı olarak s1. Testlerde çalınanlar: SSH anahtarları, ortam sırları, kaynak kod, müşteri verileri; sahte anahtarlı izole projelerde ve yayımlanmış, tekrarlanabilir bir yöntemle s1. Aynı laboratuvar Haziran'da Ghostcommit'i yayımladı: talimatlarını projenin kurallarında anılan PNG dosyalarına gizliyor, ardından çalınan sırları kaynak kodda tam sayılar olarak kodluyordu; talimat parçalama tek seferlik bir olay değil, bir saldırı ailesi s1. İki ön koşul geçerli: kötü niyetli sunucunun ajanınıza zaten bağlı olması ve ajanın hedef dosyaları okuma hakkına sahip olması s1.

Kurumsal tarafta Cloudflare, geliştiricilerin ajanlarına bağladığı onaysız sunuculara "shadow MCP" diyor. Spesifikasyon güncellemesinden beri her uyumlu MCP istemcisi bir MCP-Protocol-Version başlığı gönderiyor ve Gateway analiz ettiği tüm TLS trafiğinde bu başlığı inceleyerek güvenlik ekibine benzersiz sunucuların, kullanıcıların ve istek hacimlerinin bir panelini veriyor s6. Spesifikasyonun en yeni sürümü, istek gövdesini açmadan istenen işlemi ve araç adını gösteren Mcp-Method ve Mcp-Name başlıklarını ekliyor; böylece ağ, bir ticket okuyan ajanı elli şeyi silen ajandan ayırt edebiliyor. Cloudflare'in kuralları iki durumu kapsıyor: saf shadow MCP (hiç onaylanmamış bir sunucu) ve portal atlatma (onaylı bir sunucuya doğrudan erişim); ikisi de aynı temel kuralla engelleniyor s6.

Özel beta olarak açılan WriteGuard, her MCP sunucusunun her aracını bir risk düzeyine sınıflandırıyor ve düzey başına farklı bir politika uyguluyor: okuma sürtünmesiz geçer; yorum göndermek gibi sınırlı bir yazma geçer ama adlandırılmış bir insan adına bir ajandan geliyormuş gibi imzalanır ve merkezi bir günlüğe denetim olayı gönderilir; kod birleştirme, üretime dağıtım veya toplu silme gibi kritik bir eylem sunucu onu işlemeden engellenir s7. Yazıdaki GitLab örneği: bir merge request'i okumak geçer, yorum yapmak atıfla geçer, birleştirme bir insan yapana kadar reddedilir. Ajan hizmet ettiği çalışanın izinlerini korur, ama her yazma iki imza taşır: kişi ve ajan oturumu. Cloudflare kendi iç kullanımını anlatıyor: portalı Nisan'daki 13'e karşılık 27 MCP sunucusunu bağlıyor s7.

Sınırlar gerçek. WriteGuard kayıtla özel beta ve Gateway tespiti, TLS denetimi açık bir Cloudflare Zero Trust dağıtımı gerektiriyor s7. Tespit yalnızca şifresini çözdüğü ağ trafiğini görür: makinenizde sıradan bir süreç olarak stdio üzerinden çalışan yerel bir MCP sunucusu Gateway'e görünmez kalır ve geliştiricilerin kurduğu sunucuların çoğu böyle çalışır s6. Bu araçların hiçbiri GhostSplice'ın açığa çıkardığı mekanizmayı çözmüyor. ASSET araştırmacıları çözümün araç çıktısını asla talimat değil veri olarak ele almak olduğunu söylüyor ve bu ayrım ajanlarda henüz yerleşik olarak yok. Üç önerileri: bir aracın ürettiği değerin denetlenmeden başka bir aracın argümanlarını beslemesini önlemek, her araç çağrısını elle reddetme yeteneğini korumak ve doğrulanmamış bir sunucudan gelen her açıklamaya varsayılan olarak düşmanca davranmak s1.

Karar: neyin seni koruyor, neyin korumuyor

Kontrol Kime hizmet eder Karar
Model retleri Herkes Savunma olarak geç: tek blokta %100 ret, parçalandığında %100 uyum [s1]
İstemci tarafı korumalar Herkes Tut: aynı model API'de reddetti, Cursor'da boyun eğdi [s1]
Sunucu envanteri ve kaynak doğrulama Tekil geliştirici ve ekipler Tut: GhostSplice sunucunun zaten bağlı olmasını gerektiriyor [s1]
Özel, kapsamı daraltılmış, döndürülen token'lar Tekil geliştirici ve ekipler Tut: düz metin token'lar ve aşırı yetkilendirme ilk iki sızıntı yolu [s2]
MCP bağımlılıklarını sabitleme ve denetleme Tekil geliştirici ve ekipler Tut: mcp-remote 400,000+ indirmeye komut enjeksiyonu taşıdı [s3]
Gateway başlık tespiti (MCP-Protocol-Version, Mcp-Method, Mcp-Name) Zero Trust kullanan kurumlar TLS denetimi zaten varsa dene; stdio sunucularına kör [s6]
WriteGuard risk düzeyleri Kurumlar Bekleme listesinde dene; yalnızca özel beta [s7]
Her yazma, birleştirme ve silmede insan onayı Herkes Tut: WriteGuard'ın endüstrileştirdiği şeyin elle yapılan hali [s7]

Pazartesi yap

  • Her ajanınıza gerçekten bağlı MCP sunucularının listesini çıkar ve son bir ayda kullanmadığın her birini kaldır.
  • Kalan her sunucu için kimin yayımladığını yaz ve tutmadan önce verilerinle ne yaptığını oku; satıcıdan değil bir thread'den gelen her sunucuyu bırak.
  • Bir MCP yapılandırmasındaki her ortak veya ana kimlik bilgisini, o sunucunun ihtiyaç duyduğu minimuma kapsamlanmış özel bir token ile değiştir ve üzerine bir döndürme tarihi koy.
  • MCP yapılandırma dosyalarının hiçbirinin Git'te izlenmediğini kontrol et, izlenenleri .gitignore'a ekle.
  • Kurduğun her MCP paketinin sürümünü sabitle ve lockfile'ında CVE-2025-6514 kapsamındaki mcp-remote sürümlerini ara.
  • Yazan, birleştiren, dağıtan veya silen her araç için elle onayı aç ve kullandığın her istemcide açık tut.
  • Her üçüncü taraf sunucunun araç açıklamalarını bir kez gözden geçir; sana değil modele yönelik talimatları ara.
  • Cloudflare Zero Trust kullanıyorsan TLS denetimini aç ve MCP-Protocol-Version başlığından shadow MCP panelini kur.

Daha ileri git

  • Model ve istemci başına test matrisi ile araştırmacıların önerdiği üç önlem için GhostSplice yazısının tamamını oku s1.
  • Aynı laboratuvarın Haziran saldırısı Ghostcommit'e bak: talimatların PNG dosyalarına nasıl gizlendiğini ve çalınan sırların kaynak kodda tam sayılar olarak nasıl kodlandığını gör s1.
  • 17 Ağustos analizinin dört sızıntı yolunu kendi yapılandırmalarında dene: düz metin saklama, aşırı yetkilendirme, tedarik zinciri, prompt injection s2.
  • CVE-2025-6514 için NVD kaydını oku ve yığınındaki herhangi bir OAuth vekiline güvenmeden önce hangi mcp-remote sürümlerinin etkilendiğini kontrol et s3.
  • NSA'in MCP tasarım değerlendirmelerini oku: ajan otomasyonu devreye alan ekipler için yazılmış tek satıcıdan bağımsız kontrol listesi s5.
  • Cloudflare kullanmasan bile Cloudflare yazısındaki MCP-Protocol-Version, Mcp-Method ve Mcp-Name başlıklarını incele: kontrol ettiğin her vekil bunları loglayabilir s6.
  • WriteGuard'ın dört risk düzeyini (salt okunur, minimal etki, sınırlı yazma, kritik) kendi sunucularının açtığı araçlar için bir inceleme ızgarası olarak ödünç al s7.
  • Yayımlamanın ne gerektirdiğini ve neyi denetlemediğini anlamak için resmi kayıt defterinin README'sine göz at s4.

Kaynaklar

FAQ

Daha güvenli bir model kullanmak beni GhostSplice'tan korur mu?

Hayır. Saldırı hiçbir zaman yasak bir şeyi tek parça halinde istemez, bu yüzden ret eğitimi devreye girmez. Aynı Claude Haiku 4.5 API üzerinden her şeyi reddetti ve Cursor içinde %100 uydu; sonucu model değil, istemcinin korumaları belirledi.

Tek başıma çalışan bir geliştiriciyim, Cloudflare araçlarından herhangi biri benim için mi?

Bugün değil. Gateway tespiti TLS denetimli bir Zero Trust dağıtımı gerektiriyor, WriteGuard özel beta ve ikisi de yerel stdio sunucularına kör. Yukarıdaki kontrol listesi aynı kontrollerin tek kişilik versiyonu.

Resmi kayıt defterinde listelenen bir sunucu güvenli mi?

Listelenmek doğrulama değildir. Kayıt defterinde merkezi inceleme olmadan 9,600'den fazla sunucu var ve ajanınız bir kayıt defteri girdisine bir satıcı aracı kadar güveniyor. Listeye değil, kaynağa bakın ve kodu okuyun.

En yüksek değerli tek değişiklik nedir?

Sunucu başına özel, minimum kapsamlı token'lar, üretim sırları gibi döndürülen. Yapılandırma dosyalarındaki düz metin ana kimlik bilgileri ilk sızıntı yolu ve CVE-2025-6514'ten prompt injection'a kadar her başka hatayı çok daha pahalı hale getiriyorlar.