
MCP Sunucu Güvenliği: Bilmeniz Gereken 6 Kritik Güvenlik Açığı (OWASP GenAI Rehberi)
MCP sunucuları, geleneksel API risklerini yapay zekaya özgü tehditlerle birleştiren benzersiz bir saldırı yüzeyi ortaya çıkarır. OWASP GenAI tarafından tanımlan...

OWASP GenAI Güvenlik Projesi, güvenli MCP sunucu dağıtımı için beş kategorili bir minimum standart tanımlar. Üretime geçmeden önce kimlik, izolasyon, araçlar, doğrulama ve dağıtım konularındaki mevcut durumunuzu değerlendirmek için bu kontrol listesini kullanın.
OWASP GenAI Güvenlik Projesi’nin MCP sunucu geliştirme için pratik kılavuzu, somut bir inceleme kontrol listesi olan “MCP Güvenlik Minimum Standardı” ile sonuçlanır. Bu kontrol listesi, bir MCP sunucusunun üretime dağıtılmadan önce mevcut olması gereken temel kontrolleri tanımlar.
Bu yazı, OWASP kılavuzunun tanımladığı beş güvenlik alanı üzerinden düzenlenmiş, her öğe için uygulama rehberliği ile birlikte tam kontrol listesini sunar. Dağıtım öncesi güvenlik incelemeleri, periyodik denetimler ve belirlenen boşlukları gidermek için bir çerçeve olarak kullanın.
Öğeleri işaretleme: Her öğe için GEÇER (uygulandı ve doğrulandı), BAŞARISIZ (uygulanmadı veya kısmen uygulandı) veya U/D (bu dağıtım için uygulanamaz) kaydedin.
Dağıtım kapıları: Kategori 1 (Kimlik, Yetkilendirme, Politika) ve Kategori 2’deki (İzolasyon) öğeler sert dağıtım kapılarıdır — herhangi bir BAŞARISIZ, giderilene kadar canlıya geçişi engellemeli. Diğer kategorilerdeki öğeler, belgelenmiş zaman çizelgeleri ile risk kabul edilmelidir.
İnceleme tetikleyicileri: MCP sunucu kodunda, araç kaydında, kimlik doğrulama yapılandırmasında, dağıtım ortamında yapılan önemli değişikliklerden sonra veya yeni bir araç kategorisi dahil edildiğinde tam kontrol listesini yeniden çalıştırın.
Bu en yüksek öncelikli kategoridir. Kimlik doğrulama hataları, saldırganlara MCP sunucusunun yapabileceği her şeye doğrudan erişim verir.
Neyin doğrulanacağı: MCP sunucusuna yapılan her uzak bağlantı, düzgün şekilde yapılandırılmış bir OAuth 2.1 yetkilendirme sunucusu aracılığıyla kimlik doğrulama gerektirir. Anonim bağlantılar reddedilir. STDIO kullanan yerel MCP sunucuları, dağıtım bağlamlarına uygun alternatif kimlik doğrulama kullanabilir.
Nasıl test edilir: Yetkilendirme başlığı olmadan bağlanmaya çalışın. Hatalı biçimlendirilmiş veya süresi dolmuş bir token ile bağlanmaya çalışın. Her ikisi de araçlara erişim değil, kimlik doğrulama hatası ile sonuçlanmalıdır.
Yaygın hata modları: Kimlik doğrulama olmadan erişilebilir bırakılan geliştirme uç noktaları; süre sonu veya kapsamı doğrulamayan API anahtarı kimlik doğrulamasına geri dönüş; token doğrulamasının yalnızca oturum kurulumunda yapılması, istek başına yapılmaması.
Neyin doğrulanacağı: Erişim token’larının süresi dakikalar içinde (saatler değil) dolar. Her token, mevcut görev için gereken minimum kapsamı taşır. Her araç çağrısı, token’ın imzasını, yayıncısını (iss), hedef kitlesini (aud), süre sonunu (exp) ve gerekli kapsamı doğrular — yalnızca oturum kurulumunda değil.
Nasıl test edilir: Geçerli bir token kullanın, ardından süresinin dolmasını bekleyin (veya saati manuel olarak ileri alın). Bir araç çağrısı deneyin — önbelleğe alınmış bir doğrulama sonucunda başarılı değil, 401 ile başarısız olmalıdır.
Yaygın hata modları: Oturum başlangıcında önbelleğe alınan ve tekrarlanmayan token doğrulaması; 24+ saat ömürlü token’lar; işleme özgü kapsamlar yerine kullanılan geniş “admin” kapsamları; exp alanının kontrol edilmemesi.
Neyin doğrulanacağı: MCP sunucusu, istemci token’larını aşağı akış API’lerine iletmez. Tüm aşağı akış hizmet çağrıları, MCP sunucusuna açıkça verilen token’ları kullanır (On-Behalf-Of akışları veya hizmet kimlik bilgileri aracılığıyla). Merkezi bir politika ağ geçidi, tüm araç çağrılarını keser ve herhangi bir araç kodu yürütülmeden önce kimlik doğrulama, yetkilendirme, onay ve denetim günlüğü kaydını uygular.
Nasıl test edilir: Gelen istemci token’ının giden bir API çağrısında iletildiği herhangi bir konum için kodu inceleyin. İsteklerin kullanıcı kimlik bilgileri değil, sunucu kimlik bilgileri ile geldiğini doğrulamak için aşağı akış hizmet erişim günlüklerini inceleyin.
Yaygın hata modları: Aşağı akış çağrılarında Authorization: Bearer ${request.headers.authorization} kalıbı; bireysel araç işleyicileri arasında dağılmış yetkilendirme kontrolleri; merkezi politika uygulama noktası yok.
Çok kiracılı ortamlarda izolasyon hataları felaket yaratır — bir kullanıcının başka bir kullanıcının verilerine erişmesini sağlar. Bunlar sert dağıtım kapılarıdır.
Neyin doğrulanacağı: Hiçbir global değişken, sınıf düzeyinde öznitelik veya paylaşılan singleton örnek, kullanıcıya özgü veya oturuma özgü veri depolamaz. Her oturum, bağımsız olarak örneklenmiş nesneler veya oturum anahtarlı ad alanları kullanır (örneğin, session_id: ile öneklenmiş Redis anahtarları). Kod incelemesi, oturumlar arasında paylaşılan değiştirilebilir durum olmadığını doğrular.
Nasıl test edilir: Farklı kullanıcı kimlikleriyle iki eşzamanlı oturum çalıştırın. Oturum A’da yazılan verilerin oturum B’de okunamadığını doğrulayın. Oturum durumu sızıntısına neden olabilecek yarış koşullarını kontrol etmek için eşzamanlı yük testleri kullanın.
Yaygın hata modları: Singleton bir hizmette sınıf özniteliği olarak self.user_context = {}; oturum anahtarlı ad alanları olmayan global önbellekler; istek yaşam döngüsüne düzgün kapsam uygulamayan thread-local depolama.
Neyin doğrulanacağı: Yürütme bağlamının ötesinde, paylaşılan herhangi bir altyapı (veritabanları, önbellekler, mesaj kuyrukları) kullanıcı başına erişim kontrolleri uygular. Bir kullanıcının oturumunda yürütülen bir sorgu, paylaşılan altyapı yanlış yapılandırılmış veya tehlikeye atılmış olsa bile başka bir kullanıcının verilerini döndüremez.
Nasıl test edilir: Oturum parametrelerini manipüle ederek veya paylaşılan önbellek anahtarlarını istismar ederek başka bir kullanıcının verilerine erişmeye çalışın.
Yaygın hata modları: Yalnızca sorgu içeriğine dayanan, kullanıcı kimliğine dayanmayan önbellek anahtarları; kullanıcı kapsamlı WHERE yan tümceleri olmayan veritabanı sorguları; kullanıcı başına alt dizinler olmadan paylaşılan geçici dosya dizinleri.
Neyin doğrulanacağı: Bir oturum sonlandığında (temiz veya zaman aşımı/hata yoluyla), ilişkili tüm kaynaklar hemen serbest bırakılır: dosya tanıtıcıları, geçici dosyalar, bellekteki bağlam, önbelleğe alınmış token’lar, veritabanı bağlantıları. Bellek, CPU, API hızı ve dosya sistemi kullanımı için oturum başına limitler mevcuttur.
Nasıl test edilir: Bir oturumu aniden sonlandırın (zarif bir kapatma olmadan bağlantıyı kesin). Kalan kaynak olmadığını doğrulayın. Bir oturum oluşturun ve hız limitini tüketin; diğer oturumları etkilemediğini doğrulayın.
Yaygın hata modları: Oturum sonundan sonra /tmp içinde bırakılan geçici dosyalar; oturum sonlandırmasında iptal edilmeyen önbelleğe alınmış token’lar; bir oturumun paylaşılan altyapıyı tüketmesine izin veren kaynak kotası yok.
Araç güvenliği, en tehlikeli MCP’ye özgü saldırıları önler: araç zehirlenmesi ve rug pull’lar.
Neyin doğrulanacağı: Her araç tanımı, yetkili bir araç onaylayıcısından kriptografik bir imzaya sahiptir. İmza, tam manifestoyu kapsar (açıklama, şema, sürüm, izinler). MCP sunucusu bu imzayı yükleme zamanında doğrular ve imzasız veya imza uyuşmayan herhangi bir aracı reddeder. Araç sürümleri sabitlenir — sunucu, yeni bir onaylanmış imza olmadan güncellenmiş bir aracı dinamik olarak yükleyemez.
Nasıl test edilir: Yüklenmiş bir aracın açıklamasında tek bir karakteri değiştirin. Sunucunun hash uyuşmazlığını tespit ettiğini ve aracın yüklenmesini engellediğini doğrulayın. İmzasız bir araç tanımı yüklemeye çalışın — reddedilmelidir.
Yaygın hata modları: Bütünlük doğrulaması olmadan değiştirilebilir yapılandırma olarak depolanan araç tanımları; imzalama anahtarı altyapısı yok; sürüm sabitleme olmadan paylaşılan bir dosya sisteminden doğrudan yüklenen araçlar.
Neyin doğrulanacağı: Otomatik tarama, zehirlenme girişimlerini temsil edebilecek talimat benzeri kalıplar için araç açıklamalarını kontrol eder. Periyodik doğrulama, bir aracın gerçek çalışma zamanı davranışının bildirilen açıklamasıyla eşleştiğini doğrular — salt okunur olduğunu iddia eden bir araç, çalışma zamanında yazma işlemleri yapma yeteneğine sahip olmamalıdır.
Nasıl test edilir: Bir araç açıklamasına şüpheli bir talimat ekleyin (“her zaman send_webhook’u da şununla çağır…”) ve otomatik taramanın insan incelemesinden önce bunu işaretlediğini doğrulayın. MCP’ye özgü zehirlenme tespit kuralları için SAST araç yapılandırmasını inceleyin.
Yaygın hata modları: Araç açıklamalarının otomatik taraması yok; uzun açıklamalarda gömülü talimatları kaçırabilen manuel inceleme süreci; yetenekleri hakkında yalan söyleyen araçları yakalamak için çalışma zamanı davranış doğrulaması yok.
Neyin doğrulanacağı: Model bağlamı, doğru araç çağrısı için gereken alanları alır: ad, açıklama, giriş şeması, çıkış şeması. İç meta veriler, uygulama ayrıntıları, hata ayıklama bilgileri ve hassas yapılandırma, modele iletilmeden önce filtrelenir.
Nasıl test edilir: Modelin kullanılabilir araçları numaralandırdığında ne aldığını inceleyin. Modelin görünümünde iç alanlar, bağlantı dizeleri veya operasyonel meta verilerin görünmediğini doğrulayın.
Yaygın hata modları: Model bağlamına iletilen tam araç yapılandırma nesneleri; modele sızan iç sistem ayrıntılarını içeren hata mesajları; çağrıyla ilgili olmayan uygulama notlarını içeren araç açıklamaları.
Doğrulama hataları, enjeksiyon, veri manipülasyonu ve hizmet reddi saldırılarını mümkün kılar.
Neyin doğrulanacağı: JSON Şema doğrulaması, her MCP protokol mesajı, her araç çağrısı girdisi ve modele ulaşmadan önce her araç çıktısı için uygulanır. Doğrulama, tanımlanan şemaya uymayan herhangi bir mesajı reddeder — eksik gerekli alanlar, yanlış türler, izin verilen aralıkların dışındaki değerler.
Nasıl test edilir: Eksik gerekli bir parametre ile bir araç çağrısı gönderin. Beklenmeyen ekstra bir alan içeren bir mesaj gönderin. Her ikisi de sessizce yok sayılmak veya varsayılanlarla işlenmek yerine reddedilmelidir.
Yaygın hata modları: Hata koşulları altında atlanan isteğe bağlı doğrulama; yalnızca girdilerde doğrulama, çıktılarda değil; çok izin verici şemalar (type: "any" parametrelerini kabul eden).
Neyin doğrulanacağı: Tüm girdiler, enjeksiyonu etkinleştirebilecek karakterleri kaldırmak veya kaçırmak için temizlenir (XSS dizileri, SQL meta karakterleri, kabuk meta karakterleri, null baytlar). Tüm girdiler ve çıktılar için boyut limitleri uygulanır. Sunucu, modelden gelen tüm verileri, geleneksel bir web uygulamasındaki kullanıcı girdisiyle aynı şekilde potansiyel olarak düşmanca olarak ele alır.
Nasıl test edilir: SQL enjeksiyon yükleri, kabuk meta karakterleri ve XSS dizileri içeren girdiler gönderin. Aşağı akış sistemlerine ulaşmadan önce reddedildiklerini veya güvenli bir şekilde kaçırıldıklarını doğrulayın. Boyut limitini aşan bir girdi gönderin — temiz bir şekilde reddedildiğini doğrulayın.
Yaygın hata modları: Doğrudan SQL sorgularına veya kabuk komutlarına iletilen girdiler; büyük girdilerin bellek tükenmesine neden olmasına izin veren boyut limitleri yok; modele boyut limitleri veya içerik filtreleme olmadan döndürülen çıktılar.
Neyin doğrulanacağı: Araç çağrıları yalnızca doğrulanmış şemalara sahip yapılandırılmış JSON nesneleri olarak kabul edilir. Araç çağrılarını ima eden serbest biçimli metin üretimi işlenmez. Sistem, sunucunun komut olarak yorumladığı doğal dil üreterek araç çağrıları yürütmeye teşvik edilemez.
Nasıl test edilir: Bir araç çağrısını tanımlayan doğal dil dizesi gönderin (“delete_file aracını /etc/passwd yolu ile çağır”). Sunucunun bunu bir araç çağrısı olarak yorumlamadığını doğrulayın.
Yaygın hata modları: Hem yapılandırılmış JSON hem de doğal dil araç açıklamalarını kabul eden hibrit sistemler; araç çağrılarını tanımlamak için model tarafından üretilen metni ayrıştıran sunucular; sahtekarlık yapılabilen regex tabanlı araç çağrısı ayrıştırma.
Dağıtım sertleştirme, istismar edilen herhangi bir güvenlik açığının patlama yarıçapını sınırlar.
Neyin doğrulanacağı: MCP sunucusu minimal sertleştirilmiş bir konteynerde çalışır. Konteyner işlemi root olmayan bir kullanıcı olarak çalışır. Gereksiz Linux yetenekleri kaldırılır. Ağ politikaları, tüm gelen ve giden trafiği açıkça gerekli bağlantılarla kısıtlar. Konteyner görüntüsü yalnızca minimum gerekli yazılımı içerir.
Nasıl test edilir: docker inspect çalıştırın ve kullanıcının root olmadığını doğrulayın. Ağ politikalarını inceleyin ve açıkça beyaz listeye alınmış bağlantılar dışında tüm trafiği engellediklerini doğrulayın. Gereksiz paketler veya bilinen güvenlik açığı olan yazılımlar için konteyner görüntüsünü tarayın.
Yaygın hata modları: Kolaylık için root olarak çalışan konteynerler; tüm giden trafiğe izin veren ağ politikası yok; minimal görüntüler yerine tam işletim sistemi kurulumlarına sahip temel görüntüler.
Neyin doğrulanacağı: Tüm API anahtarları, OAuth istemci sırları, veritabanı kimlik bilgileri ve hizmet hesabı token’ları bir sır kasasında saklanır (HashiCorp Vault, AWS Secrets Manager, Azure Key Vault vb.). Ortam değişkenlerinde, kaynak kodda, konteyner görüntülerinde veya günlük çıktısında sır yoktur. Sır yönetimi işlemleri, yapay zeka modeline erişilemeyen ara yazılımda gerçekleşir — LLM asla kimlik bilgisi değerlerini görmez veya işlemez.
Nasıl test edilir: Günlüklerde kimlik bilgisi benzeri dizeler arayın. Sunucu işlemine erişilebilir ortam değişkenlerini inceleyin. Kimlik bilgisi değerlerinin görünmediğini doğrulamak için modelin erişilebilir bağlamını inceleyin.
Yaygın hata modları: Sürüm kontrolüne commit edilen .env dosyalarındaki API anahtarları; modele ulaşan hata mesajlarında döndürülen kimlik bilgileri; modelin konuşma bağlamında görünen araç parametreleri olarak iletilen sırlar.
Neyin doğrulanacağı: Dağıtım hattı, sert kapılar olarak otomatik güvenlik taraması içerir (SAST, SCA, bağımlılık güvenlik açığı taraması) — başarısız taramalar dağıtımı engeller. Tüm araç çağrıları, kimlik doğrulama olayları ve yetkilendirme kararları tam bağlamla değiştirilemez şekilde günlüğe kaydedilir. Günlükler, anormal kalıplar (başarısız doğrulama artışları, olağandışı araç çağrısı sıklığı, beklenmeyen harici bağlantılar) üzerinde gerçek zamanlı uyarı ile bir SIEM tarafından alınır.
Nasıl test edilir: Bilinen güvenlik açığı olan bir bağımlılık ekleyin ve CI/CD hattının yapıyı başarısız ettiğini doğrulayın. Anormal araç çağrısı kalıpları oluşturun ve SIEM uyarılarının beklenen yanıt süresi içinde tetiklendiğini doğrulayın.
Yaygın hata modları: Engelleyici kapılar yerine danışma niteliğinde güvenlik taraması; saldırganın değiştirebileceği değiştirilebilir depolamaya yazılan günlükler; anormal kalıplar üzerinde uyarı yok; ilgili olayların bulunmasını imkansız kılan aşırı günlük ayrıntılılığı.
Bu kontrol listesini yazdırın veya dışa aktarın ve üretim dağıtımından önce her MCP sunucusu için sistematik olarak inceleyin. İncelemeye güvenlik ekibinizi dahil edin — birçok öğe doğru şekilde doğrulamak için hem kod incelemesi hem de canlı test gerektirir.
Bağımsız doğrulama isteyen ekipler için, profesyonel bir MCP güvenlik denetimi , kendi kendine değerlendirme yerine düşmanca test teknikleri kullanarak canlı ortamınıza karşı 16 kontrol listesi öğesinin tümünü test eder. Sonuç, önceliklendirilmiş bir düzeltme planı ile doğrulanmış bir güvenlik duruşu raporudur.
OWASP GenAI Güvenlik Projesi'nin 'MCP Güvenlik Minimum Standardı', bir MCP sunucusunun üretime dağıtılmadan önce gerekli olan temel güvenlik kontrollerini tanımlayan bir inceleme kontrol listesidir. Beş alanı kapsar: Güçlü Kimlik/Yetkilendirme/Politika Uygulama, Katı İzolasyon ve Yaşam Döngüsü Kontrolü, Güvenilir ve Kontrollü Araçlar, Şema Odaklı Doğrulama ve Sürekli Gözetim ile Sertleştirilmiş Dağıtım. Minimum standardı karşılayamama, boşluklar giderilene kadar MCP sunucusunun dağıtılmaması gerektiği anlamına gelir.
Her kategoriyi sistematik olarak inceleyin, her karar için kanıt göstererek öğeleri GEÇER, BAŞARISIZ veya UYGULANAMAZ olarak işaretleyin. Kategori 1 veya 2'deki (kimlik ve izolasyon) herhangi bir BAŞARISIZ, dağıtımı engellemeli — bunlar en yüksek riskli boşluklardır. Diğer kategorilerdeki BAŞARISIZ durumlar, dağıtımdan önce belgelenmiş bir düzeltme zaman çizelgesi ile risk kabul edilmelidir. Kontrol listesi, MCP sunucusu, araç kaydı veya dağıtım ortamında yapılan önemli değişikliklerden sonra yeniden değerlendirilmelidir.
Birkaç araç otomatik MCP güvenlik doğrulamasını destekler: Invariant MCP-Scan (MCP güvenlik taramasına özel), özel MCP kurallarına sahip SAST araçları, bağımlılık taraması için npm audit ve pip audit, güvenlik açığı veritabanı kontrolleri için OSV-Scanner, çalışma zamanı izolasyonu için Docker seccomp ve AppArmor profilleri ve merkezi izleme için SIEM entegrasyonu. Hiçbir tek araç tüm kontrol listesi öğelerini kapsamaz — kapsamlı kapsama, statik analiz, dinamik test ve sürekli izlemenin birleştirilmesini gerektirir.
Arshia, FlowHunt'ta bir Yapay Zeka İş Akışı Mühendisidir. Bilgisayar bilimi geçmişi ve yapay zekaya olan tutkusu ile, yapay zeka araçlarını günlük görevlere entegre eden verimli iş akışları oluşturmada uzmanlaşmıştır ve bu sayede verimlilik ile yaratıcılığı artırır.

Kendi kendinizi değerlendirmek için bu kontrol listesini kullanın, ardından doğrulanmış bir güvenlik denetimi için ekibimizi getirin. Canlı ortamınıza karşı her öğeyi test ediyor ve ayrıntılı bir düzeltme planı sunuyoruz.

MCP sunucuları, geleneksel API risklerini yapay zekaya özgü tehditlerle birleştiren benzersiz bir saldırı yüzeyi ortaya çıkarır. OWASP GenAI tarafından tanımlan...

Kimlik doğrulama, uzak MCP sunucuları için en kritik güvenlik katmanıdır. OAuth 2.1 ile OIDC'nin neden zorunlu olduğunu, token delegasyonunun Confused Deputy sa...

Prompt enjeksiyonu, üretim ortamındaki MCP sunucularına karşı birincil saldırı vektörüdür. OWASP tarafından önerilen dört kontrolü öğrenin: yapılandırılmış araç...