Le groupe TeamPCP a compromis deux versions de LiteLLM sur PyPI, exposant 3,4 millions de téléchargements quotidiens à une backdoor sophistiquée pendant trois heures. La même campagne avait déjà touché Trivy, Checkmarx et GitHub Actions.
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.pthdanssite-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À propos de l'auteur
Ayi NEDJIMI
Expert Cybersécurité Offensive & Intelligence Artificielle
Ayi NEDJIMI est un expert senior en cybersécurité offensive et intelligence artificielle avec plus de 20 ans d'expérience. Spécialisé en rétro-ingénierie, forensics numériques et développement de modèles IA, il accompagne les organisations dans la sécurisation d'infrastructures critiques.
Expert judiciaire et conférencier reconnu, il intervient auprès des plus grandes organisations françaises et européennes. Ses domaines couvrent l'audit Active Directory, le pentest cloud (AWS, Azure, GCP), la rétro-ingénierie de malwares et l'IA générative (RAG, LLM).
Ressources & Outils de l'auteur
Articles connexes
Mandiant M-Trends 2026 : accès initial cédé en 22 secondes
Le rapport M-Trends 2026 de Mandiant révèle que l'accès initial est cédé en 22 secondes et que les ransomwares adoptent le recovery denial pour rendre toute restauration impossible.
Medusa Ransomware : 9 jours hors-ligne pour un hôpital US
Medusa ransomware a paralysé le University of Mississippi Medical Center pendant 9 jours : 35 cliniques fermées, 1 To de données médicales exfiltrées, rançon de 800 000 dollars.
GlassWorm utilise Solana comme C2 pour son RAT furtif
GlassWorm utilise la blockchain Solana comme dead drop C2 et cible pour la première fois l'écosystème MCP, rendant son RAT quasi impossible à bloquer.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire