Ana içeriğe atla

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:

  1. Claude, npx mcp-remote komutunu çalıştırır
  2. mcp-remote, belirtilen sunucuya HTTP isteği gönderir
  3. Sunucu "401 — Kimlik doğrulama gerekli" der
  4. mcp-remote, "Tamam, o zaman OAuth ile kimlik doğrulayalım" der ve sunucuya sorar: "Senin OAuth endpoint'lerin nerede?"
  5. Sunucu şunu döner: {"authorization_endpoint": "https://remote.server.com/authorize", ...}
  6. mcp-remote bu URL'yi kullanıcının tarayıcısında açar — kullanıcı orada giriş yapar
  7. 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

Bu blogdaki popüler yayınlar

  Splunk'ı Claude'a Bağlamak   Yapay zekâ bir SIEM'in içine girdiğinde ne olur? Doğal dil ile indeks sorgulama, sourcetype keşfi ve canlı healthcheck, gerçek bir lab ortamından notlar. *   Giriş: "Terminal Yorgunluğu" ve Bir Fikir   SOC'de yeterince yıl geçirdikten sonra fark edersiniz: asıl yorgunluk alarm sayısından değil, bağlam değiştirme maliyetinden gelir. Splunk'ta bir sorgu açarsınız, sonucu analiz edersiniz, başka bir sekmeye geçersiniz, tekrar dönersiniz. Bu döngü saatlerce sürer. Bir gün şunu düşündüm: Splunk'a doğal dil ile konuşabilsem ne olurdu? " Son 24 saatte 4625 eventlerini getir, system kullanıcılarını dışla " diyebilsem? Cevap, Model Context Protocol (MCP) ile geldi. Bu makale o serüveni anlatıyor, kurulumdan, canlı ortamdaki gerçek bulgulara kadar.   MCP Nedir? Neden Önemli?   MCP (Model Context Protocol), büyük dil modellerini dış araçlara ve veri kaynaklarına bağlayan açık bir standarttır. Anthro...
  Claude Desktop ile XSOAR Entegrasyonu: CortexSynapse MCP Sunucusunun Sıfırdan Devreye Alınması Bir Vaka Çalışması – Kâmil AKDAĞ, MSc Bu makale, Cortex XSOAR 6.13'ün, CortexSynapse açık kaynak MCP sunucusu üzerinden Claude Desktop'a bağlanması; süreç boyunca karşılaşılan üç ardışık entegrasyon hatasının teşhisi ve kalıcı çözümünü içerir. TL;DR (Çok Uzun; Okumadım) Cortex XSOAR'ı Claude Desktop'a MCP üzerinden bağlamak için CortexSynapse Docker imajını kullanırken üç farklı sorunla karşılaşıldı: SSL sertifika doğrulama hatası: Yanlış env değişkeni ismi ( XSOAR_VERIFY_SSL yerine kodda VERIFY_SSL bekleniyor). HTML 303 redirect cevapları: XSOAR_API_URL değerinin sonundaki / çift slash'a yol açıp XSOAR'ı API yerine UI'ya yönlendiriyor. HTTP 400 "string into Go value" hatası : MCP sunucusunun istek body'sini double-encode etmesi; codegen tarafından üretilen üç dosyada json=body yerine json=(json....