2 puan yazan GN⁺ 2025-04-07 | 1 yorum | WhatsApp'ta paylaş
  • MCP, LLM'leri araçlara bağlayan standart bir protokoldür, ancak varsayılan olarak güvenlik içermez
  • Komut enjeksiyonu, araç zehirlenmesi, tanım manipülasyonu gibi çeşitli güvenlik açıkları bulunur
  • MCP; kimlik doğrulama, şifreleme ve bütünlük doğrulama özelliklerine sahip olmadığından güvenmesi zor bir yapıdır
  • Şimdilik en iyi yaklaşım, ScanMCP gibi araçlarla görünürlük ve kontrol kazanmaktır

MCP nedir ve neden önemlidir

  • MCP, Model Context Protocol ifadesinin kısaltmasıdır ve Claude, GPT, Cursor gibi LLM'lerin araçlar ve verilerle nasıl entegre olduğunu tanımlayan yeni bir standarttır
  • "Yapay zeka ajanları için USB-C" diye anılacak kadar standartlaştırılmış bir bağlantı yöntemi sunar
  • MCP sayesinde yapay zeka ajanları şunları yapabilir
    • Araçlara standartlaştırılmış API ile bağlanma
    • Oturum durumunu koruma
    • Komut çalıştırma (aşırı serbest şekilde çalıştırılabilir)
    • İş akışları arasında bağlam paylaşma
  • Ancak varsayılan olarak güvenlik uygulanmış değildir
  • Kullanıcı farkında olmadan sisteme erişebilen yan kanallar açma riski vardır

MCP'de ortaya çıkan başlıca güvenlik açıkları

  • Komut enjeksiyonu açığı (Equixly araştırması)

    • 2025 itibarıyla bile komut enjeksiyonu yoluyla uzaktan kod çalıştırma (RCE) yaşanıyor
    • Equixly'nin araştırmasına göre tüm MCP sunucu uygulamalarının %43'ünden fazlası güvenli olmayan shell çağrıları kullanıyor
    • Saldırganlar, araç girişlerine shell komutları ekleyerek güvenilir bir ajan üzerinden uzaktan kod çalıştırabilir
  • Araç zehirlenmesi (Tool Poisoning, Invariant Labs)

    • Saldırganın kötü niyetli komutları araç açıklamasının içine gizlediği yöntem
    • Kullanıcının gözünde görünmez, ancak yapay zeka bunu olduğu gibi algılar ve uygular
    • Basit bir matematik işlemi gibi görünen bir araç, gerçekte kullanıcının sistemindeki SSH anahtarlarını veya hassas yapılandırma dosyalarını okuyabilir
  • Sessiz araç yeniden tanımlama (Rug Pull)

    • Araç, kurulduktan sonra kendi tanımını değiştirebilir
      1. günde normal olan bir araç, 7. günde saldırganın API anahtarı toplama aracına dönüşebilir
    • Bu, tedarik zinciri güvenliği sorununun LLM içinde ortaya çıkan yeni bir biçimidir
  • Sunucular arası araç gölgeleme

    • Birden çok MCP sunucusu tek bir ajana bağlıyken, kötü niyetli bir sunucu güvenilir bir sunucunun çağrılarını ele geçirebilir veya override edebilir
    • Bunun sonucunda şu sorunlar ortaya çıkabilir
      • Kullanıcıya gönderilmiş gibi yapıp saldırgana e-posta gönderme
      • Araçlara gizli mantık enjekte etme
      • Kodlanmış veri sızdırma

MCP neden hâlâ güvenli değil

  • MCP şu önceliklere sahip
    • ✅ Kolay entegrasyon
    • ✅ Birleşik arayüz
  • Ancak şu alanlarda eksik
    • ❌ Kimlik doğrulama standardı yok
    • ❌ Bağlam şifrelemesi yok
    • ❌ Araç bütünlüğü doğrulanamıyor
  • Kullanıcılar, ajanın gerçekte hangi açıklamaya dayanarak araç kullandığını bilemez

Geliştiriciler ve platform operatörleri için güvenlik önlemleri

  • Geliştiriciler

    • Girdi doğrulaması zorunlu
    • MCP sunucusu ve araç sürümlerini sabitleyin (pinning)
    • Araç açıklamalarından hassas bilgileri kaldırın
  • Platform operatörleri

    • Tüm araç metaverisini kullanıcıya gösterin
    • Sunucu güncellemelerinde bütünlük hash'i kullanın
    • Oturum güvenliğini zorunlu kılın
  • Kullanıcılar

    • Güvenilmeyen MCP sunucularına bağlanmayın
    • Oturum günlüklerini üretim ortamı gibi izleyin
    • Şüpheli araç güncellemelerini takip edin

ScanMCP.com önerisi

  • ScanMCP, şu işlevleri yerine getiren bir tarayıcı ve kontrol paneli olarak öneriliyor
    • Bağlı MCP araçlarını denetleme
    • RCE, araç zehirlenmesi, oturum sızıntısı gibi riskleri tespit etme
    • Kullanıcının gördüğü bilgi ile ajanın algıladığı bilgiyi karşılaştırıp görselleştirme
  • Şu kullanıcılar için faydalı olabilir
    • Ajan platformlarının güvenlik ekipleri
    • Yapay zeka altyapısı girişimleri
    • Güvene dayalı araçlar geliştirmek isteyen bağımsız geliştiriciler

Son düşünce

MCP güçlü bir protokol, ancak API güvenlik olgunluğu yetersizken çok hızlı benimseniyor
Secure-by-default yaklaşımı benimsenene kadar, ScanMCP.com gibi araçlar görünürlük ve kontrol sağlamak için en iyi yöntemdir

  • Sonuç: MCP'deki "S", Security anlamına gelmiyor. Ama öyle olmalı

1 yorum

 
GN⁺ 2025-04-07
Hacker News görüşü
  • Bu yazı, birkaç gün önce Invariant Labs tarafından yayımlanan güvenlik notunda açıklanan saldırı senaryolarını (tool poisoning, shadowing, MCP rug pull) vurguluyor ve alıntılıyor. Ben ilgili blog yazısının yazarıyım

    • Birçok kişinin şüphelendiğinin aksine, MCP tarzı LLM araç çağrılarındaki güvenlik sorunu farklı MCP sunucusu uygulamalarını yalıtmakla ilgili değil
    • Yerelde çalışan MCP sunucusu uygulamaları, kurulumu için kullanılan paket yöneticisi tarafından doğrulanmalı (uzak MCP sunucularını doğrulamak aslında daha da zor)
    • Sorun, MCP ajan sistemlerinde kullanıldığında ortaya çıkan özel bir dolaylı prompt injection biçimi
    • Ajan aynı bağlam içinde kurulu tüm MCP sunucusu spesifikasyonlarını içerdiği için, güvenilmeyen bir MCP sunucusu başka MCP sunucularının davranışını kolayca manipüle edebilir (örneğin hassas bir veritabanına erişebilen bir sunucu). Buna tool shadowing deniyor
    • Ayrıca, MCP’nin dinamik doğası nedeniyle MCP sunucuları sundukları araç setini yalnızca belirli kullanıcılar için değiştirebilir. Bu da bir MCP sunucusunun herhangi bir anda kötü niyetli hale gelebileceği anlamına geliyor
    • Mevcut MCP istemcileri olan Claude ve Cursor bu değişiklikleri bildirmiyor; bu da ajanı ve kullanıcıyı savunmasız bırakıyor
    • Daha fazla ilgilenenler [1] numaralı bağlantıdaki daha ayrıntılı blog yazısına bakabilir. Uzun süredir ajan güvenliği üzerine araştırma yapıyor ve Invariant’ta bu konu üzerinde çalışıyoruz
    • Ayrıca herkesin deneyebileceği kod parçacıkları da yayımladık; bunlara popüler WhatsApp MCP sunucusuna yönelik bir tool poisoning saldırısı da dahil [2]
  • Bu saldırılar çoğunlukla airlock’un yanlış tarafında duran bir başka örnek. Yetki sınırlarını aşmıyorlar; zaten yapılabilecek bir şeyi tuhaf bir yoldan yapıyorlar

    • MCP sunucuları kullanıcı seviyesinde kod çalıştırır; AI’ı kandırıp SSH anahtarlarını okutmaya gerek yok. Anahtarları zaten doğrudan okuyabilir
    • Geri kalanı temelde diğer geliştirici araçları/ekosistemlerine de (NPM veya VS Code Extensions) yöneltilebilecek aynı şikayetler
  • Şu tür daha iyi bir tasarım hayal etme meydan okuması var:

      1. İnsanların "S security anlamına geliyor" diye yazılar yazmasını gereksiz kılacak uygun güvenlik standartlarına sahip olmak
      1. Programların, bugün en faydalı MCP’lerin sunduğu işlev setinin aynısını sunabilmesini sağlamak; otomatik işlevleri manuel kullanıcı onayı gerektiren şeylere çevirmeden ve genel olarak tüm fikrin amacını boşa çıkarmadan
      1. Her şeyi kurumsal gatekeeper’ları olan kapalı bir marketplace içine kilitlememek
    • Öneriler görmek isterim, çünkü şimdiye kadar gördüğüm şeyler yalnızca genel ve spesifik olmayan "MCP güvenli değil!!!111" türü söylemlerdi. Özellikle de insanlar güvenlik ile kullanışlılığın birbirine zıt güçler olduğunu unuttuğunda bu hiç kolay değil
  • İyi bir makale ama tüm bunların AI tarafından üretilmiş olup olmadığını merak ediyorum

    • Profil fotoğrafı StableDiffusion ile üretilmiş gibi görünüyor, hesap bugün oluşturulmuş ve önceki makale yok
    • Ayrıca Elena Cross hakkında başka bir referans da bulamadım
  • O, observability anlamına geliyor. Bu hafta MCP sunucularını keşfetme ve yazma işine derinlemesine daldım

    • Çoğu uygulamada, benim oyuncak uygulamam da dahil, ne denetim ne de metrik var. Claude, MCP sunucularının log çıktısını saklıyor ama bu DevOps/SecOps için değil, hata ayıklama için
    • Kültürel olarak OP’nin anlattığı sorun, yumuşak beceri tarafındaki insanlar (muggle’lar) için büyük bir problem. Bununla ilgili subreddit’lerde insanlar kendi makinelerinde MCP CLI programlarını çalıştırıp keyifli vakit geçiriyor
    • OP’nin güvenlik yorumları geliştiriciler için bariz, ama bu kullanıcıların ne kadar riskli olduğuna dair bir perspektifi yok
    • İnsanlar Docker öğreniyor ve Claude örneklerde bunun kullanımını gösteriyor. Ama çoğu insan sadece blob’u indirip çalıştırıyor. İnsanlar MCP sunucularını gelişigüzel yazıp çalıştırıyor
    • MCP yaygınlaştıkça framework’ler ve araçlar güvenlik, observability vb. konuları desteklemek için gelişecek. Bu, 90’ların ortasında web inşa etmeye benziyor
    • OP ile ilgili değil ama bunu geliştirirken Claude Desktop’a bir şey yazıp VSCode’da breakpoint tetiklemenin çok ilginç olduğunu düşündüm
  • Doğru. Notu yayımladığımda bu kadar derine inmemiş olsam da ben de aynı şeyi düşünüyordum

  • Kullandığınız yazılım kötü niyetli olmasa ve güvenli biçimde uygulanmış olsa bile, istediğiniz şekilde kullanıldığını nasıl doğrulayabilirsiniz?

    • Yerel dosya sistemini değiştirebilen bir MCP sunucusu ile bulut depolamadaki nesneleri değiştiren bir MCP sunucunuz olduğunu varsayalım. Kullanıcı, LLM ajanının doğru seçimi yaptığını nasıl garanti edebilir?
    • Çok fazla seçenek sunmak ve her eylemi izlemek istemeyebilirsiniz, ama bunu yapmamak daha fazla soruna yol açabilir
  • Equixly’nin test ettiği MCP sunucusu uygulamalarının %43’ünden fazlasında güvensiz shell çağrıları vardı

    • İnsanlar her seferinde bu tuzağa nasıl düşebiliyor
  • MCP’nin ne olduğunu merak ediyorum. Belgeleri birkaç kez okumaya çalıştım ama çözdüğü problemin ne olduğunu anlayamadım. Özellikle AI ajanları açısından neyin özel olduğunu ve onlarca yıldır var olan deterministik ajanlara uygulanmayan şeyin ne olduğunu

  • MCP’nin tüm amacının, Anthropic’in prompt’ları ve çıktıları dinleyip eğitim verisini en üst düzeye çıkarması olduğunu sanıyordum. Bunun tüm AI modelleri için bir middleware olduğunu ilk kez öğreniyorum