Popular LiteLLM PyPI package backdoored to steal credentials, auth tokens
Mis à jour :
Compromission de la chaîne d’approvisionnement : Le package LiteLLM infecté
Le groupe de cybercriminels « TeamPCP » a compromis le package Python populaire LiteLLM sur le dépôt PyPI en publiant les versions malveillantes 1.82.7 et 1.82.8. Cette attaque par chaîne d’approvisionnement vise à exfiltrer des données sensibles et à établir une persistance durable sur les systèmes infectés.
Points clés :
- Mécanisme d’infection : Le code malveillant est injecté via une charge utile encodée en base64 dans
proxy_server.py. La version 1.82.8 installe un fichier.pthpour garantir que le script s’exécute automatiquement au démarrage de l’interpréteur Python, même si LiteLLM n’est pas utilisé directement. - Objectifs : Déploiement d’un infostealer, mouvement latéral au sein des clusters Kubernetes et installation d’une porte dérobée (backdoor) persistante de type systemd.
- Données ciblées : Clés SSH, jetons cloud (AWS, GCP, Azure), secrets Kubernetes, fichiers
.env, identifiants de bases de données, portefeuilles crypto et secrets CI/CD.
Vulnérabilités :
- Bien qu’aucune CVE spécifique n’ait été assignée à cette compromission logicielle, l’attaque repose sur l’exploitation de la confiance accordée aux packages open-source et sur l’exécution automatique des fichiers
.pthpar Python.
Recommandations :
- Audit immédiat : Vérifier si les versions 1.82.7 ou 1.82.8 sont installées et revenir à la version 1.82.6.
- Rotation des secrets : Considérer tous les identifiants, jetons et clés présents sur les machines ayant utilisé ces versions comme compromis et procéder à une rotation immédiate.
- Nettoyage technique : Rechercher des artefacts de persistance (ex:
~/.config/sysmon/sysmon.py), des fichiers temporaires suspects (/tmp/pglog,/tmp/.pg_state) et inspecter les clusters Kubernetes pour détecter tout pod non autorisé danskube-system. - Surveillance réseau : Bloquer ou surveiller les communications vers les domaines liés à l’attaquant, notamment
models.litellm[.]cloudetcheckmarx[.]zone.
