système : OPÉRATIONNEL
← retour à tous les hacks
SUPPLY CHAIN CRITICAL NEW

LiteLLM 1.107.0 : une version piégée qui vole des identifiants au démarrage de Python

Le 21 octobre 2026, un LiteLLM 1.107.0 compromis a atteint PyPI et les registres de conteneurs. Son hook de démarrage .pth s'exécutait à chaque lancement de Python pour collecter identifiants cloud et IA.

2026-10-27 // 6 min affects: litellm, litellm-proxy, python-environments, container-images

Qu’est-ce que c’est ?

Le 21 octobre 2026, une version malveillante de LiteLLM 1.107.0 a été publiée sur PyPI et diffusée dans les images de conteneurs officielles. Microsoft Security Research a documenté l’incident le 23 octobre 2026, et LiteLLM a publié son analyse de cause racine le même jour, selon une chronologie tierce. Microsoft n’indique aucun CVE ; elle suit le sujet sous la référence interne TVM-2026-0003. Seule la version 1.107.0 est signalée comme touchée, la 1.106.2 étant citée comme dernière version saine. Le paquet a été retiré de PyPI le jour même, et les tags de conteneurs concernés ont été supprimés ou redirigés vers des artefacts sains.

Comment cela fonctionne

Les wheels installaient trois fichiers supplémentaires dans site-packages : un fichier .pth, un module Python qu’il importe, et un sitecustomize.py. Python exécute les lignes .pth contenant import au démarrage de l’interpréteur ; la charge s’exécutait donc à chaque lancement de Python dans cet environnement, même si l’application n’importait jamais LiteLLM. Cela correspond à la technique MITRE ATT&CK « Python startup hooks » (T1546.018).

Selon Microsoft, la charge était un collecteur d’identifiants. Il visait les configurations d’outils de développement et d’IA, les identifiants cloud, les données de navigateur, les clés SSH, les variables d’environnement et les tables de la base du proxy LiteLLM. Les données étaient chiffrées puis envoyées vers un domaine contrôlé par l’attaquant. Un second chemin sous Unix lisait un pointeur dans un fichier hébergé sur GitHub et pouvait récupérer du code supplémentaire ; lors de l’analyse, ce pointeur était vide et aucun second étage n’a été confirmé.

C’est le build qui a été détourné, non le code source. LiteLLM indique que des identifiants GitHub volés de plusieurs ingénieurs ont permis à l’attaquant de rediriger le workflow de release vers un dépôt sosie et de franchir l’étape d’approbation de production. Une chronologie tierce situe le point de départ dans une clé non révoquée, commitée dans un dépôt public en mai 2026. Microsoft précise ne pas avoir confirmé de façon indépendante l’origine des identifiants, et certains horaires diffèrent selon les sources.

Exemple de prompt

Illustratif et caviardé : il montre la forme de la faiblesse, pas une charge exploitable.

# Triage des hooks de démarrage d'un environnement Python suspect (illustratif, défensif, caviardé)
# Schéma : une ligne .pth commençant par 'import' s'exécute à chaque lancement de l'interpréteur.
#   [startup files]  -> .pth + module d'appui + sitecustomize.py dans site-packages  [REDACTED]
#   [collector]      -> collecte variables d'env., clés cloud et fournisseurs IA     [REDACTED]
#   [exfil domain]   -> envoi chiffré vers un hôte contrôlé par l'attaquant         [REDACTED]
# Défense : inspecter depuis un système sain (ne jamais lancer Python dans l'environnement
# suspect), épingler les images par digest, reconstruire, faire tourner tous les secrets lisibles.

Pourquoi c’est important

Une passerelle LLM détient par conception des clés d’API de fournisseurs, des rôles cloud et des bases de données : une seule version compromise concentre de nombreux secrets. Le mécanisme de hook de démarrage déjoue aussi le nettoyage habituel : supprimer le dossier litellm laisse les fichiers du hook en place. LiteLLM recommande de supposer une compromission si la 1.107.0 a tourné dans un environnement ou si un conteneur a utilisé le digest d’image concerné. Aucun nombre d’installations n’est publié.

Défenses

  • Recherchez la 1.107.0 dans les lockfiles, caches, miroirs internes, journaux de build et conteneurs en cours d’exécution. Épinglez les images par digest, pas par tag mutable.
  • N’exécutez pas pip ni Python dans un environnement suspect pour enquêter, car le démarrage relance les hooks. Inspectez depuis un système sain.
  • Reconstruisez à partir d’artefacts vérifiés et confirmez l’absence des trois fichiers de démarrage dans site-packages.
  • Renouvelez tout ce que l’hôte pouvait lire : clés de fournisseurs, clés maîtres et virtuelles, secrets cloud et CI, clés SSH, URL de bases de données. Révoquez les sessions actives.
  • Examinez les journaux réseau et cloud : trafic vers le domaine d’exfiltration, usage inattendu des identifiants de rôle d’instance.
  • Utilisez des lockfiles avec hachage, une provenance vérifiée, un egress restreint et des jetons de release à portée limitée avec approbation multi-personnes imposée.

Status

ÉlémentDétail
TouchéLiteLLM 1.107.0 (wheels PyPI, tags de conteneurs)
Dernière version saine1.106.2
Publication malveillante2026-10-21
Analyse Microsoft2026-10-23
IdentifiantPas de CVE ; Microsoft TVM-2026-0003

Sources