Le rapport publié par LiteLLM le 23 octobre 2026 corrige l’explication de la compromission de la version 1.107.0, diffusée deux jours plus tôt. Selon l’enquête de l’entreprise, le premier jeton GitHub volé provenait d’une clé maîtresse publiée dans un dépôt public le 27 mai et jamais révoquée. Cette clé a permis d’accéder à sa plateforme expérimentale Agent Platform, puis d’obtenir le jeton d’un propriétaire de l’organisation.
Une clé exposée a ouvert l’accès aux comptes GitHub
LiteLLM situe au 10 octobre l’accès à Agent Platform et l’obtention du jeton OAuth du propriétaire de l’organisation. L’attaquant a ensuite utilisé des workflows pour récupérer les jetons de deux mainteneurs. Le 21 octobre, ces identifiants ont servi à contourner la protection des branches et à rediriger le workflow de publication vers le dépôt source imitateur Berri-AI/litellm, distinct du dépôt légitime BerriAI/litellm.
LiteLLM avait d’abord envisagé que le premier jeton provienne de journaux de déploiement. Son rapport du 23 octobre a remplacé cette hypothèse par la chaîne passant par la clé exposée et Agent Platform.
| Date (UTC) | Événement |
| 27 mai 2026 | Une clé maîtresse d’Agent Platform est publiée dans un dépôt public. |
| 10 octobre 2026 | L’attaquant accède à Agent Platform et obtient le jeton d’un propriétaire de l’organisation. |
| 21 octobre 2026 | Le workflow de publication est détourné et les artefacts LiteLLM 1.107.0 sont diffusés. |
| 23 octobre 2026 | LiteLLM publie son récit corrigé de la chaîne d’attaque. |
Les artefacts concernés et leurs fenêtres de diffusion
LiteLLM a identifié les sept wheels PyPI de litellm==1.107.0 comme compromis. Ils ont été téléversés le 21 octobre entre 11 h 39 min 51 s et 11 h 40 min 13 s UTC. PyPI avait retiré le paquet à 13 h 23 UTC.
Sur Docker Hub et GHCR, les tags concernés étaient v1.107.0, latest, main-latest et main-stable. Les images compromises ont été publiées à 11 h 46 min 56 s UTC. Les tags affectés sur GHCR étaient indisponibles à 13 h 51 ; sur Docker Hub, ils avaient été supprimés ou redirigés vers des images propres à 14 h 20. Pour GHCR, LiteLLM a cité les tags de ghcr.io/berriai/litellm : le dépôt imitateur utilisé comme source de construction ne désigne pas cette image hébergée.
LiteLLM a indiqué que les clients utilisant son registre privé d’entreprise n’étaient pas concernés par cet incident.
Des fichiers Python conçus pour démarrer avec l’interpréteur
Wiz a décrit trois fichiers installés dans site-packages : cook.pth, cook.py et sitecustomize.py. Ces mécanismes de démarrage étaient conçus pour s’exécuter au lancement de Python. Selon l’analyse de Wiz, le chargeur distant visait Linux et macOS, tandis que le voleur d’identifiants ciblait notamment les données de navigateurs, les secrets cloud et ceux de services d’IA, les clés SSH et GPG, l’historique du shell et les identifiants stockés dans la base de données du proxy LiteLLM.
Wiz a estimé à environ 49 000 le nombre de téléchargements de la version 1.107.0, d’après des données de ClickPy. Ce chiffre compte des téléchargements, pas des machines ou organisations dont l’infection aurait été confirmée.
Wiz a également observé, le 21 octobre entre 16 h 20 et 17 h 01 UTC, des vérifications d’identifiants AWS, notamment des appels sts:GetCallerIdentity et des demandes de liste des modèles Amazon Bedrock. Ces observations décrivent une validation d’identifiants et des requêtes de liste, sans établir que des modèles payants ont été exécutés.
Les consignes de LiteLLM pour les environnements concernés
LiteLLM a conseillé d’épingler la version 1.106.2 ou une autre version précise publiée avant l’attaque. Pour les environnements concernés, ses consignes incluent aussi la suppression des fichiers malveillants, la reconstruction des environnements et le renouvellement des secrets accessibles depuis les machines affectées.