Secuestran LiteLLM 1.107.0 para distribuir un ladrón de credenciales
Wheels maliciosos de LiteLLM 1.107.0 estuvieron en PyPI de 11:39 a 13:23 UTC el 21 de octubre de 2026 y ejecutaban un ladrón de credenciales cada vez que arrancaba Python.
3 min de lectura

En cifras
- PyPI wheels carried the malware
- 7
- UTC window the wheels were on PyPI
- 11:39-13:23
- the clean version to reinstall
- 1.106.2
Unos atacantes publicaron una versión maliciosa de LiteLLM 1.107.0 en PyPI y Docker el 21 de octubre de 2026, tras hacerse con el sistema de publicación del proyecto. Cualquier máquina que la instaló ejecutaba un ladrón de credenciales cada vez que arrancaba Python. LiteLLM pide a los equipos afectados que den sus secretos por robados y los cambien.
LiteLLM es una herramienta de código abierto que se sitúa entre las aplicaciones y los proveedores de modelos de IA. Su servidor proxy guarda las claves de API de los proveedores, lo que lo convierte en un objetivo valioso.
Qué se publicó y durante cuánto tiempo
El informe del incidente de LiteLLM enumera cada artefacto afectado. La etiqueta oficial de código v1.107.0 en GitHub está limpia. La versión se compiló desde un repositorio que imitaba al original, Berri-AI/litellm, que según StepSecurity tenía diez commits de los atacantes.
| Artefacto | Afectado | Ventana (UTC, 21 de octubre) |
|---|---|---|
| PyPI | Los siete wheels de litellm==1.107.0 (macOS, Linux, musl Linux, Windows) | 11:39 a 13:23 |
| Docker Hub | v1.107.0, latest, main-latest, main-stable | 11:46 a 14:20 |
| GitHub Container Registry | Las mismas etiquetas de litellm, litellm-database, litellm-non_root | 11:46 a 13:51 |
La versión 1.106.2 está limpia, igual que las versiones candidatas de 1.107.0, según StepSecurity. LiteLLM dice que los clientes de su versión empresarial privada no se vieron afectados.
Cómo funciona la carga maliciosa
El malware no esperaba a que alguien importara LiteLLM. Añadía dos ganchos de arranque, cook.pth y sitecustomize.py. Python ejecuta ambos cada vez que arranca en ese entorno, aunque el comando sea solo pip.
La primera carga es un ladrón que se hace llamar "privcollect", informa StepSecurity. Recoge tokens de la nube, claves privadas, archivos de credenciales de herramientas de IA, datos del navegador y variables de entorno. También se lleva las credenciales guardadas del proxy de LiteLLM. Los datos se cifran y se envían a litellm.dev, un dominio registrado el 13 de octubre.
La segunda carga es un cargador que corre como proceso oculto en segundo plano. Cada hora lee un nombre de host de un archivo en GitHub, descarga código de ese host y lo ejecuta. La cuenta de GitHub detrás de ese archivo se eliminó, pero las máquinas infectadas siguen consultando la misma dirección.
Cómo entraron los atacantes
El ataque pasó por las cuentas de GitHub de tres ingenieros, dijo a The Hacker News Oliver Jensen, director de seguridad de LiteLLM. Una credencial desactivó la protección de ramas, otra aprobó la publicación en producción y una tercera borró los registros de los flujos de trabajo.
En su actualización de las 20:30 UTC, LiteLLM dice creer que el atacante sacó tokens de GitHub CLI de unos registros. Esos registros eran de un despliegue interno de LiteLLM accesible desde internet. La empresa señala que Claude Code puede incluir el token de GitHub CLI de un usuario en el cuerpo de una respuesta. Si esos cuerpos se registran, el token acaba en los registros. Antes, Jensen había dicho que el método aún no estaba identificado.
Ese mismo día, GitHub abrió una vista previa pública de tokens de GitHub CLI con caducidad. Según el registro de cambios de GitHub, un token filtrado deja de servir "en cuestión de horas en lugar de durar indefinidamente".
Qué significa para los desarrolladores
Si usas LiteLLM, revísalo hoy y en el orden que indica LiteLLM.
- No empieces con
pip install. Los ganchos de arranque vuelven a ejecutarse cada vez que arranca Python. Primero localiza y detén el proceso que retiene/tmp/remote_code_loader.lock. - Quita los ganchos y luego reinstala. Borra
cook.pth,cook.pyysitecustomize.pydesite-packages. Instalalitellm==1.106.2o, mejor, reconstruye el entorno o la imagen desde cero. - Da los secretos por perdidos. LiteLLM dice que, si 1.107.0 llegó a ejecutarse en un equipo con acceso a internet de salida, hay que suponer que el robo tuvo éxito. Cambia las claves de proveedores guardadas en el proxy, sus claves maestra y virtuales, la contraseña de la base de datos y el rol de nube de la máquina.
- Fija por resumen. Etiquetas como
latestapuntaron a la imagen maliciosa durante más de dos horas. Fija las imágenes por resumen (digest) y los paquetes por hash. - Acorta tus propios tokens. Activa los tokens de GitHub CLI con caducidad con
gh auth login --expiring, disponible desde gh 2.103.0. Mantén los tokens fuera de los cuerpos de peticiones y respuestas que se registran.
Es la segunda versión de LiteLLM secuestrada este año, tras las versiones 1.82.7 y 1.82.8 en marzo. Las claves de proveedores guardadas también fueron el botín en Una brecha en OpenCode Console expone claves guardadas de proveedores de IA la semana pasada.
Fuentes
- Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised - LiteLLM
- LiteLLM Compromised in Supply Chain Attack Delivering Credential Stealer and Backdoor - The Hacker News
- litellm 1.107.0 Compromised on PyPI: Backdoored Wheels Drop a Credential Stealer and an Hourly Remote Code Loader - StepSecurity
- GitHub CLI: Opt in to expiring, auto-refreshing OAuth tokens - GitHub Changelog
Artículos relacionados

Un fallo en SAP Cloud SDK for Python puede filtrar secretos de OAuth2
Un fallo con CVSS 10.0 en SAP Cloud SDK for Python permite a los atacantes redirigir solicitudes de tokens OAuth2 y robar secretos de aplicaciones. La versión 0.45.2 y posteriores lo corrigen.

Un XSS en los logs de build de SourceHut permitía tomar el control de cuentas
Un log de build manipulado podía ejecutar código en el navegador de un usuario de SourceHut. ansi2html 1.9.4 corrige el fallo, CVE-2026-92973, que afectaba a las versiones 1.7.0 a 1.9.3.

Chrome pasa a un ciclo de dos semanas
Chrome 153 inicia un ciclo de hitos de dos semanas, frente a cuatro. Según Google, Chrome 149 y 150 corrigieron por sí solos 1.072 fallos de seguridad.