🔍 Contexte
Bishop Fox a publié le 6 mai 2026 une analyse technique détaillée de CVE-2026-42208, une vulnérabilité d’injection SQL pré-authentification affectant BerriAI LiteLLM Proxy dans les versions 1.81.16 à 1.83.6. La découverte originale est créditée au Tencent YunDing Security Lab (advisory GHSA-r75f-5x8p-qvmc, publié le 25 avril 2026). Le correctif v1.83.7 a été publié le 18 avril 2026.
🎯 Produit et surface d’attaque
LiteLLM est un proxy Python open-source exposant une API compatible OpenAI devant plus de 100 fournisseurs de modèles LLM. Il gère les clés virtuelles, le budget, le routage et le rate limiting, avec un backend PostgreSQL via le client Prisma.
Les endpoints vulnérables (sans credentials) :
/v1/chat/completions/v1/completions/v1/messages/v1/embeddings
🐛 Détail technique de la vulnérabilité
La faille réside dans la fonction PrismaClient.get_data() dans litellm/proxy/utils.py. Lors de l’appel avec table_name="combined_view", la requête SQL est construite via une f-string Python sans paramètre lié :
WHERE v.token = '{token}'
Le helper _hash_token_if_needed ne hache le bearer que s’il commence par sk-. Un bearer ne commençant pas par sk- est passé verbatim au sink SQL.
Deux chemins d’exploitation :
- Path A : si Python tourne avec
-O(assertions désactivées), le bearer non-sk-atteint directementget_key_object() - Path B (chemin exercé en lab) : l’
AssertionErrorest capturée par un handler générique qui appelle_enrich_failure_metadata_with_key_info(), réintroduisant le bearer brut dans le sink SQL
⏱️ Canal d’exploitation : timing aveugle
L’exploitation utilise pg_sleep() de PostgreSQL comme canal temporel aveugle. Payload type :
La réponse HTTP reste 401 dans tous les cas, rendant l’attaque indiscernable d’une erreur client dans les logs. Seule la latence trahit l’exploitation.
Impact maximal : sur un déploiement Docker stock, l’utilisateur applicatif est superutilisateur PostgreSQL, permettant un accès complet en lecture/écriture sur toutes les tables LiteLLM, notamment LiteLLM_VerificationToken (clés virtuelles, bindings d’équipe, budgets).
📅 Exploitation dans la nature
Selon l’analyse Sysdig, la première exploitation in-the-wild a été observée dans les 36 heures suivant la publication de l’advisory GitHub.
🔧 Correctif
Version 1.83.7 : remplacement de la f-string par un placeholder positionnel $1 (PostgreSQL) et réécriture de la requête deprecated-token via l’API typée Prisma find_first(). Fichiers modifiés : litellm/proxy/utils.py et key_management_endpoints.py.
📄 Type d’article
Analyse technique publiée par Bishop Fox, visant à documenter la vulnérabilité, les chemins d’exploitation, les méthodes de détection et le correctif pour les équipes de sécurité opérant des passerelles LLM.
🧠 TTPs et IOCs détectés
TTP
- T1190 — Exploit Public-Facing Application (Initial Access)
- T1552.001 — Credentials In Files (Credential Access)
- T1005 — Data from Local System (Collection)
IOC
- CVEs :
CVE-2026-42208— NVD · CIRCL - Chemins :
litellm/proxy/utils.py - Chemins :
litellm/proxy/auth/user_api_key_auth.py - Chemins :
auth_exception_handler.py
🟡 Indice de vérification factuelle : 50/100 (moyenne)
- ⬜ bishopfox.com — source non référencée (0pts)
- ✅ 21518 chars — texte complet (fulltext extrait) (15pts)
- ✅ 4 IOCs (IPs/domaines/CVEs) (10pts)
- ⬜ pas d’IOC vérifié (0pts)
- ✅ 3 TTPs MITRE identifiées (15pts)
- ✅ date extraite du HTML source (10pts)
- ⬜ aucun acteur de menace nommé (0pts)
- ⬜ 0/1 CVE(s) confirmée(s) (0pts)
🔗 Source originale : https://bishopfox.com/blog/cve-2026-42208-pre-authentication-sql-injection-in-litellm-proxy