Una versión maliciosa de LiteLLM, la 1.107.0, se publicó el 21 de octubre en PyPI y Docker con un ladrón de credenciales y una puerta trasera. Afecta a quien instaló LiteLLM sin fijar versión o usó etiquetas como latest ese día. Si fue tu caso, aísla el equipo y rota todas las credenciales: desinstalar no basta.
Lo esencial
- El 21 de octubre se publicó LiteLLM 1.107.0 en PyPI, Docker Hub y GHCR. Según The Hacker News, afecta a quien instaló con pip una versión sin fijar entre las 11:39 y las 13:23 UTC, o usó las imágenes v1.107.0, latest, main-latest o main-stable entre las 11:46 y las 14:20 UTC.
- SecurityWeek estima unas 49.000 descargas de los paquetes maliciosos. El proyecto suma 92 millones de descargas mensuales en PyPI, según BleepingComputer.
- LiteLLM retiró la versión en unas 3 horas. Los clientes enterprise que usan su registro privado no están afectados.
- El malware roba credenciales de AWS, Azure y GCP, claves SSH y GPG, archivos .env, tokens de npm, PyPI y CI/CD, claves de API de IA y datos del navegador. Los envía a litellm[.]dev/healthcheck, dominio registrado el 13 de octubre.
- Wiz observó abuso de credenciales robadas unas 4,5 horas después de la exfiltración, incluidas consultas a modelos de Bedrock en AWS.
¿Me afecta si no uso LiteLLM directamente?
Puede que sí. LiteLLM es una pasarela de código abierto para enrutar peticiones a varios proveedores de modelos de lenguaje, y muchas herramientas y agentes de IA la incluyen como dependencia. Si tu equipo o tu proveedor de desarrollo construye algo con IA en Python, conviene comprobarlo.
El detalle peligroso: el malware se ejecuta cada vez que arranca Python en ese entorno, aunque la aplicación nunca importe LiteLLM. Lo consigue con los archivos cook.pth y sitecustomize.py. Microsoft advierte de que borrar solo los archivos de la aplicación puede dejar el malware instalado. En Linux y macOS, además, un proceso en segundo plano descarga y ejecuta código remoto cada hora.
Wiz vio a los atacantes validar credenciales de roles de instancia de AWS y consultar servicios de modelos de Bedrock. Es coherente con el llamado LLMjacking: usar modelos de IA a costa de la víctima. Traducido: te puede llegar la factura.
¿Cómo entraron los atacantes?
El 24 de octubre LiteLLM explicó el origen, según The Hacker News. El 27 de mayo se subió por error a un repositorio público de GitHub una clave maestra de su Agent Platform. Nadie la revocó. El 10 de octubre un atacante la usó para extraer un token OAuth de GitHub CLI sin restricciones, asociado al propietario de la organización.
Con ese acceso desactivaron las protecciones de rama y redirigieron el despliegue a un repositorio de nombre parecido, 'Berri-AI/litellm'. LiteLLM había relajado temporalmente el control de aprobación de versiones por la prisa de publicar.
La explicación ha cambiado por el camino. El 22 de octubre LiteLLM sospechaba que los tokens salieron de los logs de un despliegue interno expuesto, como recogió The Hacker News. Dos días después señaló la clave filtrada.
Qué hacer hoy
- Pide a tu equipo técnico o proveedor que busque LiteLLM 1.107.0 en portátiles, servidores, runners de CI y contenedores, también como dependencia indirecta.
- Revisa qué imágenes Docker se descargaron o reconstruyeron el 21 de octubre con etiquetas como latest.
- Si hay coincidencia, aísla el equipo. Busca cook.pth, sitecustomize.py y la ejecución de /codepy.
- Bloquea el dominio litellm[.]dev en tu red.
- Rota todas las credenciales de ese entorno: nube, GitHub, PyPI y npm, claves de API de IA y bases de datos.
- Revisa en tu proveedor de nube cualquier uso inusual, sobre todo de servicios de modelos.
- Si se expusieron datos personales de clientes, valora con tu DPO o asesor la notificación que exige el RGPD.
Qué significa para una pyme
Este ataque no explotó un fallo sofisticado. Empezó con una clave olvidada en un repositorio público durante casi cinco meses y terminó con un control de aprobación relajado por prisa. Son dos errores que cualquier equipo pequeño puede cometer esta misma semana.
La lección práctica tiene dos caras. Como consumidor de software, no puedes auditar a cada proyecto del que dependes, pero sí puedes limitar el daño: fija versiones, fija imágenes por digest y no por etiqueta, y evita latest en producción. Como productor, revoca las claves que se filtren aunque creas que nadie las ha visto, y usa credenciales temporales en lugar de claves de larga duración. Un portátil de desarrollo con un .env lleno de claves de producción es exactamente lo que este malware busca.
Las 4,5 horas que tardaron en usar lo robado marcan el ritmo: si te afectó, rotar mañana puede ser tarde. Si no tienes a nadie que sepa revisar esto, es el momento de buscar ayuda en ciberseguridad.
Preguntas frecuentes
¿Basta con desinstalar LiteLLM 1.107.0?
No. El malware se carga al arrancar Python mediante cook.pth y sitecustomize.py, y puede quedarse aunque borres la aplicación. Aísla el equipo y rota las credenciales.
¿Estoy afectado si uso LiteLLM enterprise?
Según LiteLLM, los clientes enterprise que usan su registro privado no resultan afectados.
¿Por qué debería mirar la factura de la nube?
Porque Wiz observó a los atacantes consultar modelos de Bedrock con credenciales robadas. Ese uso fraudulento se cobra a la víctima.
Fuentes
- The Hacker News – Leaked LiteLLM Master Key Let Attackers Steal GitHub Tokens and Hijack Release Pipeline
- The Hacker News – LiteLLM Suspects GitHub Token Leak in AI Gateway Logs Behind Malicious Package Release
- BleepingComputer – LiteLLM release pipeline hacked to distribute info-stealer malware
- SecurityWeek – LiteLLM Compromised in Fresh Supply Chain Attack