yargi-mcp Üzerinde JWT İmza Doğrulaması Kapalı Olduğu İçin Kritik Kimlik Doğrulama Atlatma
Yayımlandı: 2026-04-04
Özet
Eresus Security araştırmacıları, Türk hukuk veritabanlarına erişim sağlayan açık kaynak Model Context Protocol (MCP) sunucusu yargi-mcp üzerinde kritik bir kimlik doğrulama atlatma zafiyeti tespit etti.
Zafiyet, OAuth callback endpointinin JWT token'ları verify_signature=False ayarıyla decode etmesinden kaynaklanır. Bu davranış, saldırganın herhangi bir imza anahtarıyla sahte token üretmesine, kullanıcı kimliği taklit etmesine, admin scope eklemesine ve korumalı hukuk verisi endpointlerine erişmesine izin verir.
CVE ID: Atama bekleniyor
Etkilenen Sistemler
- Yazılım: yargi-mcp v0.2.0 (main branch)
- Dosyalar:
mcp_auth_http_simple.py— satır 164mcp_auth_http_adapter.py— satır 203
- Koşul:
ENABLE_AUTH=trueveclerk_backend_apipaketi kurulu (CLERK_AVAILABLE=True)
Teknik Detaylar
Zafiyet OAuth /auth/callback endpointinde bulunur. clerk_token query parametresiyle alınan Clerk JWT token'ı, kriptografik imza doğrulaması açıkça kapatılarak decode edilmektedir:
decoded_token = jwt.decode(clerk_token, options={"verify_signature": False})
Bu satır, JWT tabanlı authentication modelinin temel güvenlik varsayımını devre dışı bırakır. Decode edilen user_id, email ve scopes claim'leri daha sonra güvenilir kabul edilir.
Saldırı Zinciri
- Saldırgan rastgele bir signing key ile
sub,user_id,emailvescopesclaim'leri içeren sahte JWT üretir. - Sahte token
/auth/callback?clerk_token=<forged_jwt>endpointine gönderilir. - Sunucu imzayı kontrol etmeden token'ı decode eder ve authorization code üretir.
- Saldırgan
POST /tokenendpointinde code exchange yapar. - Sahte JWT geçerli Bearer
access_tokengibi kullanılabilir.
Etki
CVSS 3.1 Base Score: 9.8 (Critical)
Vector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Kimlik doğrulama atlatma: Saldırgan herhangi bir kimliği sahte token ile taklit edebilir.
- Yetki yükseltme:
admindahil keyfi scope claim'leri eklenebilir. - Yetkisiz veri erişimi: Yargıtay, Danıştay, Anayasa Mahkemesi, KVKK ve BDDK araçları erişilebilir hale gelebilir.
- Üyelik/ödeme bypass riski: Premium özellikler kullanıcı ID ve scope manipülasyonuyla atlatılabilir.
Çözüm ve Azaltım
mcp_auth_http_simple.py:164vemcp_auth_http_adapter.py:203içindekiverify_signature=Falsekullanımı kaldırılmalıdır.- JWT imzaları Clerk JWKS endpointi üzerinden doğrulanmalıdır.
issuer,audienceveexpiryclaim validation zorunlu hale getirilmelidir.redirect_uriallowlist uygulanmalıdır.- Scope değerleri client tarafından gelen claim'lere göre değil, server-side policy ile doğrulanmalıdır.
Zaman Çizelgesi
| Tarih | Olay | |---|---| | 2026-04-02 | Zafiyet MCP security audit sırasında keşfedildi | | 2026-04-02 | GitHub Issues üzerinden private disclosure talebi iletildi | | 2026-04-02 | Üreticiden GitHub Private Vulnerability Reporting'i açması istendi | | 2026-04-04 | PoC içeren teknik advisory public olarak yayımlandı |
Kaynak Notları
- GitHub Issue #21 — yargi-mcp
- RFC 7519 — JSON Web Token (JWT)
- CWE-345: Insufficient Verification of Data Authenticity
- CWE-287: Improper Authentication
- OWASP API Security Top 10 — API2:2023 Broken Authentication
Kredi
Bu zafiyet, proaktif MCP ekosistem güvenlik araştırması sırasında Eresus Security araştırma ekibi tarafından keşfedildi.