Le groupe de hackers connu sous le nom de TeamPCP a compromis le package LiteLLM dans le référentiel PyPI et publié des versions malveillantes ces derniers jours. La bibliothèque Python, qui unifie l’accès à plusieurs grands fournisseurs de modèles de langage via une seule API, a enregistré plus de 95 millions de téléchargements au cours du mois dernier et dépasse les 3,4 millions de téléchargements quotidiens. Les versions 1.82.7 et 1.82.8 contenaient du code malveillant capable de collecter des informations d’identification sensibles et d’installer des mécanismes de persistance dans les environnements affectés. Especialistas a identifié l’incident le 24 mars 2026 et les versions compromises ont été rapidement supprimées de PyPI.
LiteLLM sert de passerelle commune pour intégrer les services d’intelligence artificielle dans les projets de développement. L’importation Qualquer du module concerné a déclenché la charge utile cachée. Endor Labs a détaillé que le code malveillant a été injecté dans des fichiers spécifiques du package, notamment proxy_server.py et un fichier .pth qui s’exécute automatiquement lors du démarrage de l’interpréteur Python.
- Vérification immédiate des installations des versions 1.82.7 ou 1.82.8 dans des environnements sur site et des pipelines CI/CD.
- Rotation urgente de toutes les clés SSH, jetons cloud et secrets exposés.
- Inspection des artefacts tels que les fichiers .pth suspects et les services systemd déguisés.
Mécanisme d’injection de code malveillant
Des acteurs malveillants ont inséré la charge utile codée en base64 dans le fichier litellm/proxy/proxy_server.py dans les versions compromises. La charge utile Essa est décodée et exécutée à chaque fois que le module est importé. La version 1.82.8 a également ajouté un fichier litellm_init.pth qui garantit une exécution automatique à chaque démarrage de l’environnement Python, élargissant ainsi la portée de l’attaque même sans utilisation directe de la bibliothèque.
La charge utile suit une séquence bien définie en trois étapes. Primeiro, effectue la reconnaissance du système avec des commandes telles que hostname, whoami, uname et ip addr. Il collecte ensuite diverses informations d’identification, notamment des clés SSH, des configurations cloud pour AWS, GCP et Azure, des jetons de service Kubernetes, des fichiers .env, des informations d’identification de base de données, des clés TLS privées et des données de portefeuille de crypto-monnaie. Enfin, il tente un mouvement latéral sur les clusters Kubernetes en déployant des pods privilégiés sur chaque nœud.
Détails du vol d’identifiants et de secrets
La variante TeamPCP Cloud Stealer infostealer regroupe les données collectées dans un fichier tpcp.tar.gz crypté. Le fichier Esse est envoyé à l’infrastructure contrôlée par l’attaquant dans le domaine models.litellm.cloud. Un service systemd déguisé en « Service Telemetria Sistema » maintient un contact périodique avec checkmarx.zone pour télécharger des charges utiles supplémentaires et assurer la persistance.
Les développeurs utilisant LiteLLM dans des pipelines d’IA ou des applications accédant à plusieurs fournisseurs LLM sont confrontés à un risque d’exposition élevé. L’attaque hérite de similitudes techniques avec la précédente compromission du scanner Aqua Security de Trivy, également attribuée au même groupe. Relatos indique que des centaines de milliers d’extractions de données ont eu lieu, bien que les chiffres exacts restent sous vérification indépendante.
Attaques précédentes du groupe TeamPCP
TeamPCP avait déjà engagé le projet Trivy et les composants associés de Aqua Security dans un avenir proche. La séquence d’incidents Essa démontre l’accent mis sur les outils largement adoptés dans la chaîne de développement logiciel, en particulier ceux intégrés aux flux CI/CD et aux environnements cloud natifs. Le groupe a également exploré les clusters Kubernetes avec des scripts qui différencient les comportements par région géographique.
La persistance installée inclut une porte dérobée systemd qui récupère automatiquement des binaires supplémentaires. Analistas a observé des tentatives d’effacement complet des systèmes dans des configurations détectées spécifiques, tandis que dans d’autres cas, l’accent reste mis sur la collecte silencieuse de secrets.
Mesures recommandées pour les organisations concernées
Les organisations doivent vérifier les journaux d’installation et mettre immédiatement à niveau vers la version 1.82.6 ou supérieure, qui est considérée comme propre. La rotation de tous les secrets et jetons trouvés sur les appareils potentiellement concernés est une action prioritaire pour limiter les dégâts. Busca pour les fichiers suspects tels que ~/.config/sysmon/sysmon.py, /tmp/pglog et les pods malveillants dans l’espace de noms du système Kube permet d’identifier les compromissions résiduelles.
La surveillance du trafic sortant vers les domaines associés aux attaquants complète les actions initiales. Especialistas renforce le fait que la rotation régulière des informations d’identification réduit considérablement le risque d’attaques en cascade dans la chaîne d’approvisionnement logicielle. Le personnel de sécurité de Equipes doit inspecter les environnements Kubernetes pour déceler tout mouvement latéral non autorisé.
Analyse technique de la charge utile persistante
La porte dérobée installée en tant que service utilisateur systemd maintient la communication avec le serveur distant pour recevoir des instructions supplémentaires. L’architecture Essa permet aux attaquants d’étendre leur contrôle sur les systèmes infectés au fil du temps. Le mécanisme d’exfiltration crypte les données avant leur envoi, ce qui les rend difficiles à détecter en transit.
Les développeurs qui gèrent les dépendances Python dans des environnements ou des conteneurs partagés doivent auditer l’historique des installations récentes. La popularité de LiteLLM dans les projets d’intelligence artificielle augmente la portée potentielle de l’incident dans les écosystèmes de développement modernes.
Mises à jour sur la suppression des versions malveillantes
Les versions 1.82.7 et 1.82.8 ont été retirées de PyPI après l’identification du problème. Mantenedores du projet a émis des alertes de sécurité et des conseils pour les utilisateurs. La communauté de la sécurité suit le cas pour cartographier les impacts possibles sur les référentiels qui dépendent transitivement de LiteLLM.
Les chercheurs continuent d’analyser des échantillons de logiciels malveillants pour identifier de nouvelles variantes ou des comportements supplémentaires. Usuários qui a installé les versions concernées doit traiter toutes les informations d’identification présentes sur leurs systèmes comme potentiellement exposées.