Skip to content

Ataque a la cadena de suministro de LiteLLM: qué robó TeamPCP y qué hacer

13 de agosto de 2026 · PlayCISO

En marzo de 2026, un actor de amenazas al que se sigue como TeamPCP publicó en el índice público de paquetes dos versiones con puerta trasera de LiteLLM, la pasarela de LLM de código abierto que suma unos 95 millones de descargas mensuales estimadas en PyPI. Las versiones maliciosas, la 1.82.7 y la 1.82.8, estuvieron disponibles unos 40 minutos antes de que se retiraran. Fue suficiente. En agosto de 2026, investigadores de Hudson Rock y CloudSEK obtuvieron por separado los datos robados y confirmaron el radio de impacto: más de 2.400 organizaciones, más de 430.000 pipelines de CI/CD y secretos (claves de cloud, claves SSH, tokens de API de proveedores de IA) en texto plano en un archivo de 153 GB.

No es una exposición teórica. Si tu infraestructura ejecutó LiteLLM 1.82.7 o 1.82.8 en algún momento de finales de marzo de 2026, debes tratar como comprometida cada credencial que tocara ese entorno hasta que se demuestre lo contrario.

Cómo funcionó realmente el ataque

TeamPCP nunca atacó directamente a los mantenedores de LiteLLM. Atacó a Trivy, el escáner de vulnerabilidades de código abierto de uso generalizado, y comprometió su cadena de suministro de software. El propio pipeline de CI/CD de LiteLLM descargó la compilación envenenada de Trivy como parte de un escaneo automatizado rutinario, y ese paso de escaneo tenía acceso a las credenciales de publicación de LiteLLM en PyPI. TeamPCP usó esas credenciales robadas para publicar dos versiones maliciosas directamente en el paquete litellm real y oficial de PyPI. No hubo typosquatting ni un nombre de paquete parecido: era el paquete auténtico, con una puerta trasera desde el origen.

Uno de los mantenedores de LiteLLM confirmó después que el punto de entrada se remonta directamente al escáner Trivy comprometido que se ejecutaba en su entorno de compilación: un recordatorio de que una herramienta de seguridad dentro de tu pipeline de CI forma parte, ella misma, de tu superficie de ataque de la cadena de suministro.

Cadena de ataque
Cómo llegó TeamPCP a 2.500 organizaciones

compromete

entra en un escaneo rutinario

expone

se usan para publicar

vía dependencias automáticas

TeamPCP
(actor de amenazas)

Trivy
escáner de vulnerabilidades

Pipeline de CI/CD de LiteLLM

Credenciales de publicación en PyPI

litellm 1.82.7 / 1.82.8
con puerta trasera, ~40 minutos en línea

~2.500 organizaciones,
más de 430.000 pipelines de CI/CD

Fase 1: robo de credenciales
claves de cloud, SSH y de proveedores de IA

Fase 2: movimiento lateral en Kubernetes
pods privilegiados

Fase 3: persistencia
puerta trasera systemd sysmon.service

aparece un archivo de 153 GB
agosto de 2026

Hudson Rock / CloudSEK
portales de consulta de dominios

Qué hacía realmente el payload malicioso

Las wheels con puerta trasera ejecutaban un ataque en tres fases en el momento de instalarse:

  • Fase 1: robo de credenciales. Rastreaba las variables de entorno y los archivos de configuración en busca de claves de OpenAI, Anthropic, Azure, AWS y GCP, claves SSH y tokens de cuentas de servicio de Kubernetes.
  • Fase 2: movimiento lateral. Usaba cualquier credencial de Kubernetes robada para buscar pods privilegiados y propagarse dentro del clúster.
  • Fase 3: persistencia. Instalaba un servicio systemd de puerta trasera que contactaba periódicamente con infraestructura controlada por el atacante para recibir más instrucciones.
Indicadores de compromiso
Búscalos en cualquier host que ejecutara la 1.82.7 / 1.82.8
Tipo Indicador
Archivos depositados litellm_init.pth y un litellm/proxy/proxy_server.py manipulado
Dominios de C2 models.litellm.cloud, checkmarx.zone
Persistencia Un servicio systemd (descrito como sysmon.service) que contacta con el exterior de forma periódica
Kubernetes Pods desconocidos llamados node-setup-* en el espacio de nombres kube-system
Comportamiento Un consumo de memoria alto, repentino e inexplicable en los hosts que ejecutan el proxy

La escala: lo que salió a la luz en agosto

El compromiso de marzo fue silencioso: una ventana de 40 minutos que la mayoría de los equipos nunca notó. Lo que lo llevó a las portadas cinco meses después fue la reaparición de los propios datos. Hudson Rock obtuvo un archivo de 153 GB con 433.909 ficheros vinculados a la campaña de TeamPCP, entre ellos 118.829 volcados de runners de CI/CD que pudo atribuir a 2.488 dominios corporativos distintos. CloudSEK, trabajando con un conjunto de datos separado de unos 434.000 archivos robados, llegó a una cifra similar: cerca de 2.500 organizaciones expuestas.

Ambas empresas han publicado portales de comprobación de dominios para que las organizaciones puedan consultar si su infraestructura aparece en el material filtrado. Los análisis del archivo han vinculado de forma circunstancial nombres grandes y reconocibles (entre ellos Nvidia, AWS, Samsung, Intel, Cisco, Salesforce, Boeing y otros) con volcados de runners de CI expuestos. Conviene ser preciso sobre lo que eso significa: los investigadores lo describen como exposición con alta confianza, no como compromiso confirmado de los sistemas de producción de esas empresas. Un volcado de un runner de CI/CD filtrado y atribuido a un dominio corporativo demuestra que una credencial o una variable de entorno de ese entorno estaba en el archivo; no demuestra por sí solo qué hizo un atacante con ella. Trata los titulares con nombres de empresas como una señal de escala, no como un informe de brecha verificado para cada nombre.

Qué hacer ahora mismo

1. Revisa tu historial de versiones
Comprueba si la 1.82.7 o la 1.82.8 llegaron a resolverse alguna vez en un lockfile, una imagen de contenedor o una caché de CI, no solo lo que está instalado hoy. La ventana de 40 minutos significa que la mayoría de los equipos afectados la descargaron mediante actualizaciones automáticas de dependencias, no con una instalación manual.
2. Fija una versión limpia
pip install litellm==1.82.6 (o la versión corregida actual) y fíjala explícitamente. Purga las cachés de pip y de compilación de CI: la wheel maliciosa puede persistir en una caché después de corregir el lockfile.
3. Rótalo todo y da por quemado lo expuesto
Hay que rotar cualquier secreto presente en un entorno que ejecutó la compilación con puerta trasera: claves de proveedores de LLM, credenciales de cloud, tokens de cuentas de servicio de Kubernetes, claves SSH. No intentes averiguar qué claves concretas se exfiltraron; da por hecho que todas.
4. Busca los IOC
Busca en hosts y clústeres los archivos depositados, el servicio systemd y los pods node-setup-* indicados arriba. Revisa los logs de salida en busca de conexiones a los dominios de C2 listados, desde finales de marzo de 2026.
5. Consulta los archivos filtrados
Tanto Hudson Rock como CloudSEK han publicado portales de consulta de dominios sobre los conjuntos de datos filtrados. Si aparece tu dominio, trátalo como una pista confirmada que exige una respuesta a incidentes completa, no como un falso positivo que descartar.
6. Audita tus herramientas de seguridad de CI
Trivy fue el punto de entrada, no el objetivo. Cualquier escáner, linter o herramienta automatizada con acceso de escritura a tu pipeline de CI y acceso de lectura a credenciales de publicación es un riesgo de cadena de suministro por sí mismo. Fija versiones, verifica los checksums y no actualices automáticamente las herramientas de seguridad dentro de pasos de compilación privilegiados.

El patrón detrás de esto

No es el primer movimiento de TeamPCP: el mismo grupo se ha vinculado a compromisos anteriores tanto de Trivy como de la herramienta de análisis estático KICS, usando la cadena de suministro de una herramienta de seguridad de código abierto para llegar al proyecto siguiente. Esa es la parte en la que merece la pena detenerse: el ataque no necesitó engañar a ningún ingeniero de LiteLLM. Necesitó comprometer una dependencia en la que todos los pipelines de CI/CD confían por defecto, porque su único propósito es encontrar vulnerabilidades, no ser una.

La lección va más allá de LiteLLM. Cualquier herramienta con un lugar privilegiado en tu pipeline de compilación (escáneres, linters, formateadores, ejecutores de pruebas) merece el mismo escrutinio que una dependencia de producción, porque un compromiso ahí hereda todas las credenciales que puede ver el pipeline.

Comprueba tu propia exposición. Hemos creado un verificador de exposición a LiteLLM / TeamPCP local y de un solo archivo: cero llamadas de red; lee el código antes de ejecutarlo. Y para practicar la propia respuesta a incidentes, la Cyber War Room de PlayCISO ejecuta escenarios construidos en torno a compromisos reales: brechas de CI/CD, filtraciones de credenciales y plazos de notificación bajo presión regulatoria.
🖤 Black Friday: new customers get 3 months of Pro for $5, then $5/month. Ends 30 Nov. Claim 3 months for $5 →