LiteLLM explicó el 23 de octubre que el primer token de GitHub usado en el ataque procedía del acceso a su Agent Platform mediante una clave maestra expuesta en un repositorio público. Esa corrección aclara cómo el atacante llegó a comprometer la versión 1.107.0, publicada el 21 de octubre en PyPI y en registros de contenedores.
Cómo una clave expuesta llevó al compromiso
Según la investigación de LiteLLM, un archivo de configuración con la clave maestra de Agent Platform se publicó en un repositorio público el 27 de mayo de 2026 y la clave no se revocó. El atacante la utilizó el 10 de octubre para acceder a la plataforma y obtener el token OAuth de GitHub CLI de un propietario de la organización. Después, usó flujos de trabajo para extraer los tokens de dos mantenedores.
El informe del 23 de octubre corrigió la hipótesis inicial de LiteLLM, que situaba el primer token en los registros de un despliegue interno. La secuencia descrita por la empresa conecta el acceso a Agent Platform con las credenciales empleadas más tarde para alterar el proceso de publicación.
| Fecha | Hecho |
| 27 de mayo de 2026 | Se publicó en un repositorio público un archivo que contenía la clave maestra de Agent Platform. |
| 10 de octubre de 2026 | El atacante usó la clave para acceder a Agent Platform y obtener el token de GitHub CLI de un propietario de la organización. |
| 21 de octubre de 2026 | Se publicaron los artefactos comprometidos de LiteLLM 1.107.0. |
| 23 de octubre de 2026 | LiteLLM publicó su explicación corregida de la cadena de ataque. |
Versiones, etiquetas y ventanas de exposición
LiteLLM identificó siete wheels de PyPI de litellm==1.107.0 como afectados. Se publicaron entre las 11:39:51 y las 11:40:13 UTC del 21 de octubre; PyPI había retirado el paquete a las 13:23 UTC.
En Docker Hub y GHCR, las etiquetas afectadas fueron v1.107.0, latest, main-latest y main-stable. Las imágenes comprometidas se publicaron a las 11:46:56 UTC. LiteLLM informó de que las etiquetas afectadas de GHCR dejaron de estar disponibles a las 13:51 UTC; las de Docker Hub se retiraron o se redirigieron a imágenes limpias a las 14:20 UTC.
El flujo de publicación tomó como origen el repositorio impostor Berri-AI/litellm, distinto del repositorio legítimo BerriAI/litellm. Las etiquetas afectadas corresponden a las imágenes distribuidas en Docker Hub y GHCR, no a ese repositorio de origen. LiteLLM indicó que su registro empresarial privado no resultó afectado.
Qué hacía el paquete malicioso
Wiz describió tres archivos instalados en site-packages: cook.pth, cook.py y sitecustomize.py. Los mecanismos de inicio estaban diseñados para ejecutarse al arrancar Python. El análisis de Wiz señaló que el cargador remoto se dirigía a Linux y macOS, y que el código malicioso buscaba credenciales de navegadores, servicios en la nube y proveedores de IA, además de claves SSH y GPG, historiales de shell y credenciales almacenadas en la base de datos del proxy de LiteLLM.
Wiz estimó aproximadamente 49.000 descargas de la versión 1.107.0 a partir de datos de ClickPy. Entre las 16:20 y las 17:01 UTC del 21 de octubre, también observó validaciones de credenciales de rol de AWS, incluidas llamadas sts:GetCallerIdentity, y consultas para enumerar modelos de Amazon Bedrock. Son actividades observadas durante la validación de credenciales.
Qué recomendó LiteLLM
LiteLLM recomendó fijar la versión 1.106.2 o cualquier otra versión explícita publicada antes del ataque. Para entornos afectados, su orientación incluyó retirar los archivos maliciosos, reconstruir los entornos y cambiar los secretos a los que esas máquinas pudieran acceder.