jeudi 22 octobre 2026 Éditions
En direct
Tendances
Technologie

Un voleur d'identifiants glissé dans LiteLLM, un outil d'IA téléchargé 23 millions de fois par semaine

Une chaîne de publication détournée a poussé mercredi une version piégée de la populaire passerelle d'IA vers PyPI et Docker. Elle est restée en ligne environ deux heures, dérobant clés cloud et mots de passe sur chaque machine qui l'a installée.

Lire enENESNEHIFR
Un voleur d'identifiants glissé dans LiteLLM, un outil d'IA téléchargé 23 millions de fois par semaine
Photo: NERSC data center, CC0 1.0, via Wikimedia Commons (https://commons.wikimedia.org/wiki/File:Front_of_server_racks_at_NERSC.jpg)

Points clés

  • Des attaquants ont détourné la chaîne de publication de LiteLLM, un outil open source très utilisé qui achemine les requêtes entre les applications et les fournisseurs de modèles d'IA, et ont…
  • La version malveillante contenait trois fichiers qui n'existent pas dans le projet d'origine : cook.pth, cook.py et sitecustomize.py.
  • LiteLLM explique que les intrus sont passés par les comptes GitHub de trois de ses ingénieurs, apparemment avec des jetons OAuth GitHub CLI volés.

Des attaquants ont détourné la chaîne de publication de LiteLLM, un outil open source très utilisé qui achemine les requêtes entre les applications et les fournisseurs de modèles d'IA, et ont publié une version malveillante sur le Python Package Index le mercredi 21 octobre. La version piégée, la 1.107.0, est aussi partie dans les images Docker officielles de LiteLLM. Le paquet est téléchargé environ 23 millions de fois par semaine, selon Datadog Security Labs, ce qui en fait l'une des pièces de plomberie les plus répandues du développement en IA.

Ce que faisait le logiciel malveillant

La version malveillante contenait trois fichiers qui n'existent pas dans le projet d'origine : cook.pth, cook.py et sitecustomize.py. Une fois installés, ils se plaçaient dans un dossier Python que l'interpréteur lit à chaque démarrage, si bien que le code tournait à chaque lancement de Python, même dans des programmes qui n'ont jamais utilisé LiteLLM. L'un des fichiers lançait un voleur d'identifiants qui, selon les sociétés de sécurité, visait les clés SSH et GPG, les identifiants cloud d'AWS, de Microsoft Azure et de Google Cloud, les secrets Kubernetes et Docker, les mots de passe et cookies de navigateur, ainsi que les clés de fournisseurs d'IA stockées dans les bases de données du proxy LiteLLM. Un second composant se réveillait chaque heure pour aller chercher et exécuter du code frais depuis un serveur contrôlé par les attaquants, leur offrant une porte dérobée permanente dans les machines infectées.

Comment les attaquants sont entrés

LiteLLM explique que les intrus sont passés par les comptes GitHub de trois de ses ingénieurs, apparemment avec des jetons OAuth GitHub CLI volés. Un compte a servi à déclencher le processus de publication privé et un autre à l'approuver, et l'exécution a construit la version depuis une copie malveillante du projet nommée Berri-AI/litellm, à un trait d'union de la vraie, BerriAI/litellm. L'entreprise a révoqué tous les jetons concernés et réduit son organisation GitHub à un seul utilisateur non touché pendant l'enquête. Oliver Jensen, directeur de la sécurité de LiteLLM, a dit que l'équipe ignore encore comment les jetons ont été volés.

Deux heures en rayon

La mauvaise version est arrivée sur PyPI à 11:39 UTC et a été retirée à 13:23 UTC, une fenêtre d'environ deux heures, selon JFrog Security Research. Les étiquettes Docker v1.107.0, latest, main-latest et main-stable ont pointé vers les images piégées jusque vers 14:20 UTC. Les équipes d'Upwind, de SafeDep, de Socket et de StepSecurity ont publié leurs analyses le jour même. C'est la deuxième fois que LiteLLM est compromis cette année : en mars, les versions 1.82.7 et 1.82.8 avaient été empoisonnées lors d'une attaque liée par la suite au groupe TeamPCP, même si les chercheurs disent qu'aucun lien n'a été établi entre les deux incidents.

Ce que les utilisateurs doivent faire

Toute personne qui a installé la version 1.107.0 doit considérer chaque identifiant de cette machine comme exposé. Les sociétés de sécurité conseillent de reconstruire depuis la version propre 1.106.2, de supprimer à la main les trois fichiers plantés, car désinstaller le paquet les laisse en place, et de renouveler les clés cloud, les clés SSH et les jetons de services d'IA. Supprimer le paquet ne suffit pas, car les fichiers plantés vivent en dehors de lui et le chargeur horaire continue de tourner tant qu'on ne l'a pas arrêté.

Chronologie

  1. Mar 2026Des attaquants empoisonnent les versions 1.82.7 et 1.82.8 de LiteLLM lors d'une précédente attaque de la chaîne d'approvisionnement, liée par la suite au groupe TeamPCP.
  2. Oct 21, 2026La version malveillante 1.107.0 de LiteLLM arrive sur PyPI à 11:39 UTC, avec un voleur d'identifiants et une porte dérobée à l'intérieur.
  3. Oct 21, 2026PyPI retire la version à 13:23 UTC. LiteLLM révoque les jetons GitHub volés et ouvre une enquête.

Sources