Comment l’attaque chaîne d’approvisionnement sur le package Python litellm expose vos environnements Kubernetes
Séraphine Clairlune
Le cauchemar de la supply chain : 31 % des incidents de 2025 proviennent de dépendances compromises - Que faire face à l’attaque chaîne d’approvisionnement litellm ?
En 2026, la communauté Python a vu deux versions malveillantes du package litellm (1.82.7 et 1.82.8) publiées puis retirées en moins de 24 heures, comme le souligne l’analyse des menaces du 24 mars 2026. Cette intrusion, orchestrée par le groupe TeamPCP, exploite la confiance accordée aux outils CI/CD comme Trivy et KICS, introduisant un payload capable de voler des identifiants, de se déplacer latéralement dans des clusters Kubernetes et d’instaurer une persistance via systemd. Si vous utilisez des pipelines automatisés ou déployez des services cloud, chaque importation de litellm représente aujourd’hui une porte d’entrée potentielle.
“Cette campagne n’est manifestement pas terminée. Chaque environnement compromis fournit des identifiants qui débloquent la cible suivante”, explique Kiran Raj, chercheur chez Endor Labs.
Dans les paragraphes qui suivent, nous décortiquons le mécanisme de l’attaque, évaluons son impact sur les organisations françaises et proposons des actions concrètes pour protéger votre chaîne d’approvisionnement logicielle.
Comprendre l’attaque chaîne d’approvisionnement litellm et son vecteur via Trivy
Le rôle de TeamPCP dans la compromission des outils CI/CD
TeamPCP a précédemment infiltré les scanners de vulnérabilité Trivy et KICS, deux piliers des pipelines GitHub Actions. En injectant du code malveillant dans le processus de construction des wheels Python, le groupe détourne la confiance des développeurs : lorsqu’une version de litellm est publiée, le CI/CD télécharge et signe le package avant même que les mainteneurs ne puissent le vérifier. Selon le rapport ENISA 2025, les attaques ciblant les chaînes d’approvisionnement ont augmenté de 14 % d’une année sur l’autre, soulignant la pertinence de ce vecteur.
Analyse technique des versions 1.82.7 et 1.82.8
- Version 1.82.7 : le code malveillant se trouve dans
litellm/proxy/proxy_server.py. Le fichier est chargé au moment de l’import du modulelitellm.proxy.proxy_server, déclenchant immédiatement le payload. - Version 1.82.8 : introduit un fichier
.pthnommélitellm_init.pthà la racine du wheel. Ce fichier est exécuté parsite.pyà chaque démarrage de l’interpréteur Python, même si litellm n’est jamais importé, amplifiant la surface d’attaque.
Ces deux vecteurs reposent sur l’exécution automatique du code au moment de l’import ou du démarrage, éliminant tout besoin d’interaction utilisateur.
Décomposition du payload à trois étapes
Collecte d’identifiants et de secrets
Le premier stade parcourt les répertoires à la recherche de clés SSH, de fichiers .env, de tokens Kubernetes (/var/run/secrets/kubernetes.io/serviceaccount/token) et même de portefeuilles cryptographiques. Les données sont empaquetées dans une archive chiffrée tpcp.tar.gz puis exfiltrées, comme le détaille VoidStealer – vol de la clé maître de Chrome vers le domaine de commande-et-contrôle models.litellm.cloud via une requête HTTPS POST. Selon JFrog, plus de 150 000 secrets ont pu être collectés en moins de 48 heures.
Mouvement latéral Kubernetes
Une fois les secrets obtenus, le payload déploie un pod privilégié sur chaque nœud du cluster. Le pod monte le système de fichiers de l’hôte (hostPath) et y installe un service systemd (sysmon.service). Cette technique donne au groupe d’attaque un accès root sur le cluster entier, contournant les contrôles d’accès RBAC classiques.
Persistence via systemd et service sysmon
Le service sysmon.service exécute un script Python (~/.config/sysmon/sysmon.py) qui interroge le serveur checkmarx.zone/raw toutes les 50 minutes. Si la réponse pointe vers une URL contenant youtube.com, le script s’arrête, agissant comme un kill-switch. Cette persistance permet à l’opérateur de télécharger des modules additionnels ou de réactiver l’infection en cas de nettoyage partiel.
“Le fichier
.pthdéclenche un processus enfant viasubprocess.Popen, garantissant que le payload s’exécute en arrière-plan même si le processus principal se termine.”, précise Endor Labs.
Impacts concrets sur les environnements français
Exemple de compromission d’une startup SaaS
Une jeune startup basée à Paris a intégré litellm 1.82.7 dans son service d’analyse de texte. En moins de deux jours, les attaquants ont récupéré les clés d’API AWS, les secrets GitHub et les tokens d’accès à la base de données PostgreSQL. Le vol a entraîné une interruption de service de 12 h et un coût estimé à 250 000 €, selon le cabinet de cybersécurité Wiz.
Risques pour les acteurs critiques selon l’ANSSI
L’ANSSI classe les logiciels de build et d’analyse de vulnérabilité comme des infrastructures critiques (IC). Une compromission de ces outils peut affecter les opérateurs d’énergie, les fournisseurs de santé et les administrations publiques. Le Rapport d’audit 2025 de l’ANSSI indique que 18 % des organisations publiques ont déjà détecté des artefacts malveillants dans leurs pipelines CI/CD, soulignant la nécessité d’une vigilance accrue.
Mesures de détection et de remédiation
Checklist d’intervention immédiate
- Audit : vérifiez la présence des versions
1.82.7ou1.82.8dans tous les environnements Python. - Isolation : segmentez les hôtes suspectés et coupez le trafic réseau sortant vers
models.litellm.cloudetcheckmarx.zone. - Recherche de pods : listez les pods Kubernetes avec le label
privileged=trueet examinez les fichierssystemddans~/.config/sysmon/. - Analyse des logs : recherchez les requêtes HTTPS POST contenant
tpcp.tar.gzdans les journaux d’accès. - Rotation des secrets : révoquez immédiatement toutes les clés et tokens exposés.
Étapes actionnables pour sécuriser votre supply chain
- Supprimez les versions compromises et réinstallez la version la plus récente de litellm depuis PyPI officielle.
- Intégrez une validation de signature PEP 458 dans vos pipelines CI/CD.
- Activez la fonctionnalité de reproducible builds pour les wheels Python afin de détecter toute modification post-compilation.
- Déployez des scanners de dépendances certifiés ISO 27001 (ex. Snyk, OWASP Dependency-Check) en complément de Trivy.
- Mettez en place une surveillance continue des appels réseau sortants depuis vos clusters Kubernetes.
Bonnes pratiques pour sécuriser la chaîne d’approvisionnement Python
Tableau comparatif des mesures de protection
| Pratique | Niveau de sécurité | Coût estimé | Conformité | Référence |
|---|---|---|---|---|
| Signature PGP des paquets | Élevé | Faible | RFC 4880 | ANSSI 2024 |
| Reproducible builds (PEP 458) | Moyen | Moyen | ISO 27001 | Snyk 2025 |
| Scanning dynamique avec Trivy + Snyk | Élevé | Moyen | ENISA 2025 | Endor Labs |
| Isolation des pipelines (sandbox) | Élevé | Élevé | GDPR | Google Cloud |
| Rotation automatique des secrets | Moyen | Faible | NIST 800-53 | Wiz 2025 |
Utilisation d’outils de scanning certifiés ISO 27001
Le framework ISO 27001 encourage la mise en place de contrôles continus sur les dépendances tierces. En combinant Trivy (détecteur de vulnérabilités) avec un outil SCA certifié, vous bénéficiez d’une double couche : identification des failles connues et détection d’anomalies de code (ex. fichiers .pth inattendus).
Exemple de script de détection rapide (Python)
import pkg_resources, os, subprocess
# Liste les packages installés et leurs versions
for dist in pkg_resources.working_set:
if dist.project_name.lower() == 'litellm' and dist.version in ('1.82.7','1.82.8'):
print(f'⚠️ Version compromise détectée: {dist.version}')
# Optionnel : désinstaller automatiquement
subprocess.run(['pip','uninstall','-y','litellm'])
Ce snippet s’exécute en quelques secondes et vous aide à identifier et supprimer les wheels suspects avant qu’ils ne soient importés.
Conclusion - Protégez vos pipelines dès aujourd’hui
Pour illustrer les risques liés aux contenus générés artificiellement, consultez Fraude streaming IA – détournement de 10 M$ grâce à l’IA.
L’attaque chaîne d’approvisionnement litellm démontre que la compromission d’un seul composant open-source peut déboucher sur une exfiltration massive de secrets et un mouvement latéral automatisé au sein de vos clusters Kubernetes. En appliquant les mesures décrites - audit immédiat, isolation des environnements, renforcement des contrôles de build et adoption de standards comme ISO 27001 - vous réduisez drastiquement le risque d’une récidive.
Ne laissez pas votre chaîne d’approvisionnement devenir le maillon faible de votre stratégie de cybersécurité : vérifiez dès maintenant vos versions de litellm, renforcez vos pipelines CI/CD et adoptez une surveillance continue. Le temps d’action est limité, car chaque minute supplémentaire augmente la surface d’exposition.