En bref

  • TeamPCP a backdooré les versions 1.82.7 et 1.82.8 de LiteLLM sur PyPI le 24 mars 2026, exposant 3,4 millions de téléchargements quotidiens pendant environ 3 heures.
  • L'attaque exploite en cascade la compromission de Trivy (GitHub Actions CI/CD) pour voler les credentials PyPI du mainteneur de LiteLLM.
  • Tout environnement Python ayant installé ces versions dans la fenêtre d'exposition est potentiellement compromis ; rotation immédiate de tous les secrets recommandée.

Une attaque supply chain en cascade sur l'écosystème Python IA

Le 24 mars 2026, la plateforme PyPI a mis en quarantaine deux versions de LiteLLM — 1.82.7 et 1.82.8 — après leur compromission par le groupe TeamPCP dans le cadre d'une vaste campagne d'attaques supply chain multi-écosystèmes. LiteLLM, bibliothèque Python permettant d'interfacer facilement plus d'une centaine de modèles de langage (OpenAI, Anthropic, Mistral, Ollama, etc.), enregistre environ 3,4 millions de téléchargements par jour sur PyPI, ce qui en fait une cible de choix pour tout acteur cherchant à infecter silencieusement des environnements de développement et de production liés à l'IA. La fenêtre d'exposition a duré environ trois heures, entre la publication des packages malveillants vers 14h00 UTC et leur mise en quarantaine par PyPI. Durant ce laps de temps, tout développeur, tout pipeline CI/CD ou tout environnement Python ayant installé ou mis à jour LiteLLM a potentiellement récupéré la backdoor.

Le vecteur d'attaque est particulièrement sophistiqué car indirect. TeamPCP n'a pas attaqué LiteLLM frontalement : le groupe avait d'abord compromis le workflow GitHub Actions de Trivy, le populaire scanner de vulnérabilités open source maintenu par Aqua Security — une intrusion déjà documentée la semaine passée. LiteLLM utilisant Trivy dans son propre pipeline de sécurité, ses maintainers ont déclenché ce workflow compromis, exposant involontairement les credentials PyPI du CEO Krish Dholakia à l'infrastructure de collecte de TeamPCP. Le compte GitHub du dirigeant a ensuite été pris en main par les attaquants, leur permettant de publier les versions vérolées directement sur PyPI avec une légitimité apparente totale. Cette cascade illustre comment la campagne TeamPCP — qui touche également npm, GitHub Actions, Docker Hub et OpenVSX — exploite la chaîne de confiance entre outils de développement pour rebondir d'un écosystème à l'autre.

La technique du fichier .pth : une backdoor qui infecte tout Python

Ce qui distingue cette attaque des simples cas de typosquatting est la technique d'infection employée dans la version 1.82.8. Les analystes ont identifié un fichier litellm_init.pth (34 628 octets) déposé dans le répertoire site-packages de Python. Les fichiers .pth sont automatiquement chargés par Python à chaque démarrage de l'interpréteur, pas uniquement lors de l'import de LiteLLM. Concrètement, la backdoor s'exécute dans chaque processus Python lancé sur la machine compromise. Elle opère en plusieurs phases : collecte de données système, exfiltration d'identifiants (tokens API, credentials cloud, clés SSH), mouvement latéral dans les environnements Kubernetes, puis installation d'une persistance discrète.

La même campagne avait déjà ciblé les extensions VSCode et les packages npm malveillants dans les semaines précédentes, confirmant une stratégie coordonnée visant l'outillage DevSecOps. La cible finale est systématiquement la même : secrets CI/CD, tokens cloud et clés API LLM permettant un accès persistant à des environnements de production à forte valeur.

Ce qu'il faut faire si vous utilisez LiteLLM

  • Vérifiez votre historique pip/conda pour tout install de LiteLLM 1.82.7 ou 1.82.8 entre le 24 mars 14h00 UTC et 17h00 UTC.
  • Si vous avez été exposés : révoquez immédiatement tous vos tokens API (OpenAI, Anthropic, AWS, GCP, Azure) et credentials CI/CD.
  • Scannez vos environnements Python pour la présence du fichier litellm_init.pth dans site-packages.
  • Mettez à jour LiteLLM vers la version 1.82.9 ou supérieure, publiée après audit de sécurité par les mainteneurs.

Comment savoir si mon environnement a installé les versions compromises de LiteLLM ?

Exécutez pip show litellm pour voir la version installée. Consultez vos logs pip pour des installations entre le 24 mars 14h00 et 17h00 UTC. Recherchez le fichier litellm_init.pth dans vos répertoires site-packages. En cas de doute, traitez l'environnement comme compromis, révoquez tous vos secrets et réinstallez depuis une image propre. Le bulletin de sécurité officiel LiteLLM fournit les indicateurs de compromission (IOC) détaillés.

Besoin d'un accompagnement expert ?

Ayi NEDJIMI vous accompagne sur vos projets cybersécurité et IA.

Prendre contact