Sécurité critique : malveillant litellm_init.pth sur PyPI
Un incident de sécurité critique a été découvert dans la bibliothèque Python LiteLLM, version 1.82.8, distribuée sur le dépôt PyPI. Ce package compromis contient un fichier malveillant nommé litellm_init.pth qui s'exécute automatiquement à chaque démarrage de l'interpréteur Python, sans nécessiter l'importation explicite de la bibliothèque. Il s'agit d'une compromission de la chaîne d'approvisionnement logicielle destinée au vol de données sensibles. Le fichier malveillant utilise un codage double en base64 pour dissimuler son code source. Lors de son exécution, il déclenche une séquence d'attaques automatisées en deux étapes principales. La première étape consiste en une collecte exhaustive d'informations sur le système infecté. Le script rassemble des données sur l'identité de la machine, l'utilisateur actuel, l'adresse IP et la configuration réseau. Il exploite ensuite l'environnement du système pour extraire toutes les variables d'environnement, exposant ainsi les clés API, les jetons d'authentification et les mots de passe stockés dans les fichiers de configuration. La portée de ce vol de données est particulièrement étendue. Le script accède spécifiquement aux clés SSH personnelles, aux identifiants de services cloud (AWS, Azure, Google Cloud, Kubernetes), aux configurations Docker et aux tokens de gestionnaires de paquets. Il cible également les historique de commandes shell, les fichiers de configuration de bases de données, les jetons de communication comme Slack ou Discord, et jusqu'aux portefeuilles de crypto-monnaies. Toute clé privée SSL/TLS ou secret d'infrastructure CI/CD, tels que ceux utilisés par Terraform ou Jenkins, est également soustraite. Une fois les données collectées, le script procède à l'étape de chiffrement et d'exfiltration. Les informations volées sont d'abord écrites dans un fichier temporaire, puis chiffrées à l'aide d'un algorithme AES-256. Une clé de session aléatoire est générée et utilisée pour ce chiffrement. Cette clé de session est elle-même chiffrée via une clé publique RSA de 4096 bits, préconfigurée dans le maliciel. L'ensemble des fichiers chiffrés est compressé dans une archive TAR et envoyé vers un serveur contrôlé par les attaquants via une connexion réseau. L'impact de cette attaque est immédiat et sévère pour quiconque a installé la version 1.82.8 de LiteLLM. Tous les identifiants et secrets présents sur les systèmes touchés ont été exfiltrés. Les experts recommandent d'annuler immédiatement la mise en ligne de cette version spécifique sur PyPI pour empêcher de nouvelles installations. Les utilisateurs qui ont déjà installé ce paquet doivent inspecter leurs répertoires de packages pour localiser le fichier litellm_init.pth et le supprimer. Plus crucial encore, il est impératif de révoquer et de régénérer tous les jetons d'API, clés privées et identifiants de stockage cloud qui étaient actifs sur les machines concernées, car il est certain qu'ils ont été compromis. L'éditeur du projet BerriAI est tenu de mener une enquête approfondie sur ses propres processus de publication et sur la sécurité de ses pipelines d'intégration continue pour comprendre comment le package malveillant a réussi à intégrer le dépôt officiel sans être détecté par les contrôles de sécurité automatisés. Cet incident souligne les risques persistants liés à la dépendance aux bibliothèques tierces et la nécessité d'une surveillance constante de l'intégrité des packages open source.
