Ejecutas pip install litellm, vas por un café, vuelves a tu terminal. Todo se ve normal. Tus llaves SSH — las contraseñas maestras digitales de tus servidores — ya van camino a la bandeja de entrada de alguien más.
El 24 de marzo de 2026, ese escenario exacto se hizo realidad.
Qué pasó
LiteLLM es el proxy LLM open-source más popular — un traductor universal que permite a tu código hablar con cualquier modelo de IA (Claude, GPT, Gemini) a través de una sola interfaz. Aproximadamente 3.4 millones de descargas por día. Si trabajas con IA en Python, probablemente ya lo usaste.
Un actor de amenazas llamado TeamPCP subió dos versiones envenenadas — 1.82.7 y 1.82.8 — directamente a PyPI (Python Package Index — la tienda de apps donde viven las librerías de Python). El malware dentro recolectaba llaves SSH, credenciales de nube, tokens de API y variables de entorno. Después intentaba propagarse por clusters de Kubernetes — esas redes de contenedores que corren la mayoría de la infraestructura cloud.
La parte más maldita: la versión 1.82.8 usó un archivo .pth. En Python, los archivos .pth se ejecutan automáticamente cuando el intérprete arranca. No cuando importas una librería. Cuando cualquier proceso de Python se inicia. ¿El autocompletado de tu IDE? Comprometido. ¿Corriendo pip install otra-cosa? Comprometido. El malware no necesitaba tu permiso ni tu atención.
Cómo entraron
TeamPCP no hackeó LiteLLM directamente. Jugaron un juego más largo.
Primero, metieron un backdoor en Trivy de Aqua Security — un escáner de seguridad open-source muy popular — envenenando una de sus GitHub Actions (scripts automatizados que corren dentro de pipelines CI/CD — las líneas de ensamblaje que construyen y despachan código). El Trivy comprometido corría dentro del propio pipeline CI de LiteLLM, haciendo lo que siempre hace: escaneando vulnerabilidades. Solo que ahora también robaba credenciales de PyPI silenciosamente.
Con esas credenciales robadas, TeamPCP subió los paquetes maliciosos directamente a PyPI. Sin pull request. Sin code review. Sin señales de alerta. La herramienta de seguridad se convirtió en el vector de ataque.
Datadog Security Labs rastreó esto hasta una campaña coordinada de varias semanas que también afectó al escáner KICS de Checkmarx. TeamPCP convirtió en arma las herramientas que las empresas usan para protegerse.
Tres horas fueron suficientes
Las versiones maliciosas estuvieron en PyPI aproximadamente tres horas — entre las 10:39 UTC y las 16:00 UTC del 24 de marzo. La comunidad lo reportó, PyPI puso en cuarentena el paquete. El compromiso no tocó LiteLLM Cloud ni las imágenes oficiales de Docker — usan versiones fijas.
Pero tres horas a 3.4 millones de descargas por día significan miles de instalaciones. Cualquiera que ejecutó pip install --upgrade litellm durante esa ventana — o tenía un pipeline automatizado que lo hizo por ellos — quedó comprometido.
Qué hacer si te afectó
Si instalaste o actualizaste LiteLLM el 24 de marzo entre las 10:39–16:00 UTC, felicidades — tu fin de semana se acaba de cancelar:
- Rota todo. Llaves SSH, tokens de nube, API keys, contraseñas de bases de datos — cualquier cosa que vivía en tus variables de entorno
- Busca movimiento lateral. Especialmente dentro de clusters de Kubernetes. El malware intentaba propagarse activamente
- Fija la versión 1.82.6 o anterior hasta que pase la tormenta
- Audita tu CI/CD. Si usas Trivy o Checkmarx KICS, verifica que tus GitHub Actions no hayan sido manipuladas
El patrón que debería asustarte
Este ataque no es especial por LiteLLM. Es especial por el método. TeamPCP no encontró un zero-day. No le hicieron phishing a un mantenedor. Comprometieron un escáner de seguridad — una herramienta que existe específicamente para prevenir este tipo de cosas — y lo usaron como llave maestra para todo lo que estaba después en la cadena.
Los ataques a la cadena de suministro — donde los hackers atacan las herramientas y librerías de las que depende tu código en vez de atacarte directamente — se vuelven más creativos cada vez. Las cadenas de confianza en el open source son largas y frágiles. Tú confías en LiteLLM. LiteLLM confía en Trivy. Trivy confía en una GitHub Action. La GitHub Action confía en... ¿quién, exactamente?
Fija tus dependencias. Verifica checksums. No hagas auto-upgrade en producción. Y tal vez trata a tu escáner de seguridad con la misma desconfianza que le tienes a cualquier otra dependencia — porque aparentemente, se la merece.
→ LiteLLM Security Update · Análisis de Snyk · Datadog Security Labs · BleepingComputer





