
SlowMist, directeur de la sécurité de l’information, a révélé le 25 mars que la bibliothèque Python de passerelle AI LiteLLM, qui comptabilise 97 millions de téléchargements mensuels, a été victime d’une attaque de la chaîne d’approvisionnement sur PyPI. Les versions compromises 1.82.7 et 1.82.8 ont été présentes sur la plateforme pendant au moins deux heures. Les attaquants ont implanté plusieurs couches de logiciels malveillants permettant de voler des informations, y compris celles des portefeuilles de cryptomonnaies.
LiteLLM joue un rôle d’interface unifiée dans la pile technologique de l’IA, supportant l’appel aux modèles de principaux fournisseurs tels qu’OpenAI, Anthropic, Google, etc. Son architecture se situe directement entre l’application et plusieurs fournisseurs de services IA, ce qui lui permet d’accéder à un grand nombre de clés API, variables d’environnement et données de configuration sensibles.
En compromettant ce type de composant intermédiaire, les attaquants n’ont pas besoin d’infiltrer directement les services en amont pour intercepter des certificats sensibles à travers l’environnement de développement local, les pipelines CI/CD et l’infrastructure cloud. Les enquêteurs évaluent actuellement si cette attaque est liée aux groupes de menace TeamPCP et LAPSUS$, l’attribution étant toujours en cours. L’incident a été initialement signalé publiquement par un utilisateur GitHub, puis analysé plus en détail par des chercheurs externes de Futuresearch.
Le code malveillant intégré dans les versions compromises adopte une architecture à trois couches, réalisée via un script Python encodé en Base64 obfusqué :
Première couche (couche d’exfiltration de données) : collecte des données sensibles locales, les chiffre avec AES-256-CBC, chiffre la clé de session avec une clé publique RSA codée en dur, puis empaquète le tout dans tpcp.tar.gz pour l’exfiltrer vers un point de contrôle contrôlé par l’attaquant.
Deuxième couche (couche de reconnaissance et de collecte de certificats) : énumère les informations système, les variables d’environnement, et extrait systématiquement les clés SSH, certificats Git, certificats cloud AWS/GCP/Azure, fichiers de configuration Kubernetes, données de portefeuilles de cryptomonnaies et configurations CI/CD. Dans certains cas, le logiciel malveillant tente activement d’utiliser les certificats volés pour interroger l’API AWS ou manipuler Kubernetes.
Troisième couche (couche de persistance et de contrôle à distance) : écrit un fichier sysmon.py sur le disque et le configure en tant que service système. Toutes les 50 minutes, il interroge un point de contrôle contrôlé par l’attaquant, permettant à celui-ci de déployer en continu de nouvelles fonctionnalités malveillantes sur le système infecté.
Les domaines utilisés pour la communication malveillante incluent models[.]litellm[.]cloud et checkmarx[.]zone.
Les organisations ayant installé ou exécuté des versions compromises de LiteLLM (1.82.7 ou 1.82.8) doivent considérer leurs systèmes comme déjà compromis. Étant donné que le logiciel malveillant possède des capacités de persistance et pourrait avoir déployé des charges utiles supplémentaires, la simple suppression du package ne suffit pas.
Il est conseillé de prendre immédiatement les mesures suivantes : changer tous les certificats potentiellement exposés (clés d’accès AWS/GCP/Azure, clés SSH, clés API) ; examiner les journaux pour détecter toute communication suspecte avec les domaines models[.]litellm[.]cloud ou checkmarx[.]zone ; supprimer les fichiers malveillants connus tels que tpcp.tar.gz, /tmp/pglog, /tmp/.pg_state, ainsi que les services liés à sysmon.py ; si possible, reconstruire le système affecté à partir d’une sauvegarde propre.
Les versions compromises sont LiteLLM 1.82.7 et 1.82.8. Le code malveillant est intégré dans proxy_server.py (les deux versions) et dans litellm_init.pth (version 1.82.8). Il est recommandé aux utilisateurs de vérifier leur version et de la mettre à jour vers la dernière version sécurisée.
Le logiciel malveillant collecte des clés SSH, des certificats cloud AWS/GCP/Azure, des fichiers de configuration Kubernetes, des jetons de comptes de service, des certificats Git, des clés API dans les variables d’environnement, l’historique shell, des données de portefeuilles de cryptomonnaies et des mots de passe de bases de données. La surface d’attaque couvre l’environnement de développement local, les pipelines CI/CD et l’infrastructure cloud.
Vérifier la présence de fichiers tels que tpcp.tar.gz, /tmp/pglog, /tmp/.pg_state, ainsi que de services persistants liés à sysmon.py. Examiner également les logs de communication sortante pour détecter toute activité vers les domaines malveillants mentionnés.