AI Entegrasyonlarında
Güvenlik Riski
Bir geliştirici yeni bir Claude
Desktop eklentisi keşfediyor. Kuruyor, config'e ekliyor, uygulamayı yeniden
başlatıyor. Birkaç saniye içinde saldırgan sistemin tam kontrolünü ele
geçiriyor, hiçbir tıklama, hiçbir onay gerekmeden. Bu makale, tam olarak bunun
nasıl gerçekleştiğini anlatıyor.
MCP protokolü yapay zekaya gerçek
dünya ile etkileşim gücü verirken, her yeni bağlantı noktası potansiyel bir
saldırı vektörü haline gelir ve sadece “veri sızıntısı” tehdidi ile karşı
karşıya kalmazsınız.
MCP’yi Anlamak
Anthropic tarafından geliştirilen
Model Bağlam Protokolünün sitesinde yer alan tanımı şöyledir: Bugün, yapay zekâ asistanlarını içerik
depoları, iş araçları ve geliştirme ortamları da dahil olmak üzere verilerin
bulunduğu sistemlere bağlamak için yeni bir standart olan Model Bağlam Protokolü'nü (MCP) açık kaynaklı hale getiriyoruz.
Amacı, öncü modellerin daha iyi ve daha alakalı yanıtlar üretmesine yardımcı
olmaktır[1].
MCP’yi şöyle düşünebiliriz, USB-C
tür portunun her cihazı bağladığı gibi, MCP de AI’I her servise bağlar. Ama USB-C’den
çok önemli bir farkı var, bağladığınız şey sadece veri aktarmıyor, komut
yürütüyor.
MCP Remote’un Doğuşu
MCP, yapay zekâ modelleri ile
gerçek dünya sistemleri arasında standart bir iletişim protokolü olarak
tasarlandı, tıpkı USB-C'nin cihazlar için yaptığı gibi. Ancak protokolün ilk
döneminde önemli bir sınırlama vardı: Claude Desktop, Cursor ve Windsurf gibi
büyük MCP client'ları yalnızca lokal
(stdio) transport'u destekliyordu. Yani AI asistanınız sadece kendi
makinenizde çalışan MCP sunucularıyla konuşabiliyordu.
Bu sınırlama, uzak API'lere,
bulut servislerine veya paylaşılan araçlara bağlanmak isteyen kullanıcılar için
ciddi bir engel oluşturuyordu. Resmi client'lar bu desteği henüz sunmadığı için
topluluk kendi çözümlerini geliştirdi. Bu çözümlerden en popüleri mcp-remote
oldu, JFrog'un Temmuz 2025 raporuna göre mcp-remote o tarih itibarıyla
437.000'den fazla kez indirilmişti [2]. Resmi bir bileşen olmayan, topluluk
tarafından geliştirilen bu araç lokal stdio client'ları ile uzak HTTP/SSE
sunucuları arasında köprü kuran bir proxy. Cloudflare, Hugging Face ve Auth0
gibi platformların entegrasyon rehberlerinde yer aldı.
İşte tam bu noktada güvenlik
riski ortaya çıktı. MCP ekosisteminin kritik bir altyapı parçası haline gelen
bu araç, resmi güvenlik denetimlerinden hiç geçmemişti.
Nasıl Saldırdılar?*
(Zero-Click)
Temmuz 2025'te JFrog güvenlik
araştırmacıları CVE-2025-6514'ü keşfetti, CVSS 9.6 skoruyla kritik seviyede bir
güvenlik açığıdır. Güvenlik açığı mcp-remote'un 0.0.5 ile 0.1.15 arasındaki
sürümlerini etkiliyor ve 0.1.16 sürümünde düzeltildi [3].
Saldırıyı anlayabilmek için
öncelikle normal akışı bilmemiz gerekiyor. Her şey yolundayken yeni bir şey
geliştiriyorken Claude Desktop’u kullanıyoruz ve uzaktaki bir MCP sunucusuna
bağlanmak istiyoruz. Yapmamız gereken tek şey Claude’un config dosyasına
aşağıdaki satırları eklemek:
|
{
"mcpServers": {
"remote-example": {
"command": "npx",
"args": ["mcp-remote", "https://remote.server.com/mcp"] } } } |
Claude Desktop uygulamamızı
yeniden başlattığımızda şu olur:
- Claude, npx
mcp-remote komutunu çalıştırır
- mcp-remote,
belirtilen sunucuya HTTP isteği gönderir
- Sunucu
"401 — Kimlik doğrulama gerekli" der
- mcp-remote,
"Tamam, o zaman OAuth ile kimlik doğrulayalım" der ve sunucuya
sorar: "Senin OAuth
endpoint'lerin nerede?"
- Sunucu
şunu döner: {"authorization_endpoint":
"https://remote.server.com/authorize", ...}
- mcp-remote
bu URL'yi kullanıcının tarayıcısında açar — kullanıcı orada giriş yapar
- Bağlantı
kurulur, her şey çalışır
Burada kritik nokta 5. Adım:
sunucu, mcp-remote'a "kullanıcıyı şu adrese yönlendir" diyor ve
mcp-remote bunu sorgusuz sualsiz yapıyor.
İşler Tersine Döndüğünde
Şimdi aynı senaryo, ama sunucu
bir saldırganın kontrolünde. Geliştirici heyecanlı bir şekilde yeni bir Claude
eklentisi keşfediyor, config'e URL'yi ekliyor, Claude'u yeniden başlatıyor. Her
şey aynı şekilde ilerliyor... 5. adıma kadar. 5. Adımda saldırgan farklı bir
şey döner.
Her şey normalken sunucu şunu dönerdi:
{"authorization_endpoint":
"https://remote.server.com/authorize"}
Saldırgan şunu döner:
{"authorization_endpoint":
"file:/c:/windows/system32/calc.exe"}
Şimdi 6. adımda mcp-remote bu değeri alıyor ve Node.js'in
open()
fonksiyonuna veriyor. Bu fonksiyonun tek işi: verilen şeyi aç. URL ise
tarayıcıda aç, dosya ise dosyayı aç. Windows'ta bu fonksiyon arka planda
PowerShell'i çağırıyor ve şunu çalıştırıyor:
Start
"file:/c:/windows/system32/calc.exe?response_type=code..."
Sonuç: Hesap makinesi açılıyor.
Kullanıcı hiçbir şey tıklamadı, hiçbir şeyi onaylamadı. Claude Desktop'ı açtığı
anda saldırı gerçekleşti.
Bütün
saldırı tek bir güven ihlali üzerine kurulu: mcp-remote, uzak sunucudan gelen authorization_endpoint değerini hiç
doğrulamadan open()
fonksiyonuna veriyordu. URL mi, dosya yolu mu, komut mu, hiç kontrol etmiyordu.
Ve bu değer PowerShell üzerinden işlendiği için, saldırgan PowerShell'in kendi
özelliklerini kullandı.
Bunu
şuna benzetebiliriz: birine "şu adrese git" diyorsun, o da adresin
gerçek bir adres mi yoksa tuzak mı olduğunu kontrol etmeden gidiyor. Ama o kişi
giderken polis kimliği taşıyor, gizli kapıları açma yetkisi var, her yere
girebiliyor. İşte mcp-remote o kişi, yetkili ama saf.
Paradigma Değişimi
Eski dünyada AI sadece metin
üretiyordu, yeni dünyada AI komut yürütüyor, dosya yazıyor, API çağırıyor.
Sistemin tamamının ele geçirilmesi riski ortaya çıkıyor, tehdit modeli veri
sızıntısından yanal hareket ve ayrıcalık yükseltmeye dönüşüyor. Savunmak mümkün
mü? Elbette,
MCP
sunucu config dosyalarının periyodik audit'i: Hangi MCP sunucularına
bağlısınız, bunların kaynağı güvenilir mi, sürümleri güncel mi?
Dependency
scanning, npm audit ve pip-audit gibi araçları CI/CD pipeline'ınıza entegre
edin; mcp-remote benzeri bağımlılıklardaki bilinen açıklar otomatik tespit
edilsin.
Network
policy enforcement ve TLS inspection: MCP bağlantılarını yalnızca HTTPS
üzerinden kabul edin, HTTP bağlantıları policy ile engelleyin.
AI
araçlarını containerize etme: mcp-remote'u Docker container içinde
çalıştırarak, bir ele geçirme durumunda saldırganın host sisteme erişimini
sınırlayın.
Process
creation log izleme: AI client binary'lerinin (node, npx) spawn ettiği
beklenmedik child process'leri (cmd.exe, powershell.exe, bash) tespit edin.
Network
log izleme: AI araçlarının whitelist dışı outbound bağlantılarını anomali
olarak işaretleyin.
Saldırı
yüzeyi yeni olsa da güvenlik ilkeleri hala aynı. Ama bu ilkeleri yeni yüzeye
uyarlamazsak, AI asistanımız en büyük güvenlik açığımız haline gelir.
Hemen
Yapılması Gerekenler:
·
Ortamınızdaki MCP bağlantılarının envanterini çıkarın
·
mcp-remote sürümünüzü kontrol edin, 0.1.16 veya üzeri olmalı
·
AI araçlarının ağ erişimini izlemeye başlayın
Kaynaklar
[1] Model Context Protocol
Duyurusu: https://www.anthropic.com/news/model-context-protocol
[2] JFrog Security Research: https://jfrog.com/blog/2025-6514-critical-mcp-remote-rce-vulnerability/
[3] NVD: https://nvd.nist.gov/vuln/detail/CVE-2025-6514
[4] GitHub Advisory: https://github.com/advisories/GHSA-6xpm-ggf7-wc3p
[5] mcp-remote GitHub: https://github.com/geelen/mcp-remote
[6] MCP Resmi Dokümantasyon: https://modelcontextprotocol.io/docs
[7] The Hacker News: https://thehackernews.com/2025/07/critical-mcp-remote-vulnerability.html
Yorumlar
Yorum Gönder