TeamPCP, el actor de amenazas detrás de los recientes compromisos de Trivy y KICS, ahora ha comprometido un popular paquete de Python llamado litellm, impulsando dos versiones maliciosas que contienen un recolector de credenciales, un conjunto de herramientas de movimiento adyacente de Kubernetes y una puerta trasera persistente.
Varios proveedores de seguridad, incluidos Endor Labs y JFrog, revelaron que las versiones 1.82.7 y 1.82.8 de Litellm se publicaron el 24 de marzo de 2026, probablemente conveniente al uso de Trivy por parte del paquete en su flujo de trabajo CI/CD. Desde entonces, ambas versiones con puerta trasera se han eliminado de PyPI.
“La carga útil es un ataque de tres etapas: un recolector de credenciales que barre claves SSH, credenciales de cúmulo, secretos de Kubernetes, billeteras de criptomonedas y archivos .env; un conjunto de herramientas de movimiento adyacente de Kubernetes que implementa pods privilegiados en cada nodo; y una puerta trasera persistente systemd (sysmon.service) que sondea ‘checkmarx(.)zone/raw’ para binarios adicionales”, dijo el investigador de Endor Labs, Kiran Raj.
Como se observó en casos anteriores, los datos recopilados se extraen como un archivo criptográfico (“tpcp.tar.gz”) a un dominio de comando y control llamado “models.litellm(.)cloud” a través de una solicitud HTTPS POST.
En el caso de 1.82.7, el código zorro está incrustado en el archivo “litellm/proxy/proxy_server.py”, y la inyección se realiza durante o luego del proceso de creación de la rueda. El código está diseñado para ejecutarse en el momento de la importación del módulo, de modo que cualquier proceso que precio “litellm.proxy.proxy_server” active la carga útil sin requerir ninguna interacción del legatario.
La ulterior iteración del paquete agrega un “vector más agresivo” al incorporar un “litellm_init.pth” zorro en la raíz de la rueda, lo que hace que la método se ejecute automáticamente en cada inicio de proceso Python en el entorno, no solo cuando se importa litellm.
Otro aspecto que hace que 1.82.8 sea más peligroso es el hecho de que el iniciador .pth genera un proceso secundario de Python a través de subprocess.Popen, lo que permite que la carga útil se ejecute en segundo plano.
“Los archivos Python .pth colocados en los paquetes del sitio son procesados automáticamente por site.py al iniciar el intérprete”, dijo Endor Labs. “El archivo contiene una sola cadena que importa un subproceso e inicia un proceso Python independiente para decodificar y ejecutar la misma carga útil Base64”.
La carga útil se decodifica en un orquestador que descomprime un recolector de credenciales y un cuentagotas de persistencia. El recolector igualmente aprovecha el token de la cuenta de servicio de Kubernetes (si está presente) para enumerar todos los nodos del clúster e implementar un pod privilegiado en cada uno de ellos. Luego, el pod realiza chroot en el sistema de archivos del host e instala el cuentagotas de persistencia como un servicio de legatario systemd en cada nodo.
El servicio systemd está configurado para iniciar un script de Python (“~/.config/sysmon/sysmon.py”), el mismo nombre utilizado en el compromiso Trivy, que llega a “checkmarx(.)zone/raw” cada 50 minutos para obtener una URL que apunte a la carga útil de la ulterior etapa. Si la URL contiene youtube(.)com, el script cancela la ejecución, un patrón de desconexión global a todos los incidentes observados hasta ahora.
“Es casi seguro que esta campaña no ha terminado”, dijo Endor Labs. “TeamPCP ha demostrado un patrón consistente: cada entorno comprometido genera credenciales que desbloquean el ulterior objetivo. El molinete de CI/CD (ejecutores de GitHub Actions) a producción (paquetes PyPI que se ejecutan en clústeres de Kubernetes) es una subida deliberada”.
Con el postrer crecimiento, TeamPCP ha emprendido una incesante campaña de ataque a la cautiverio de suministro que ha generado cinco ecosistemas, incluidos GitHub Actions, Docker Hub, npm, Open VSX y PyPI, para expandir su huella de objetivos y poner cada vez más sistemas bajo su control.

“TeamPCP está intensificando una campaña coordinada dirigida a herramientas de seguridad e infraestructura de desarrolladores de código despejado, y ahora se está atribuyendo abiertamente el mérito de múltiples ataques posteriores en todos los ecosistemas”, dijo Socket. “Esta es una operación sostenida que apunta a puntos de suspensión apalancamiento en la cautiverio de suministro de software”.
En un mensaje publicado en su canal de Telegram, TeamPCP dijo: “Estas empresas fueron creadas para proteger sus cadenas de suministro, pero ni siquiera pueden proteger las suyas propias, el estado de la investigación de seguridad moderna es una broma, como resultado, estaremos por mucho tiempo robando terrabytes (sic) de secretos comerciales con nuestros nuevos socios”.
“El intención de hipérbole de cocaína de esto será enorme, ya nos estamos asociando con otros equipos para perpetuar el caos, muchas de sus herramientas de seguridad favoritas y proyectos de código despejado serán atacados en los próximos meses, así que estad atentos”, añadió el actor de amenazas.
Se recomienda a los usuarios que realicen las siguientes acciones para contener la amenaza:
- Audite todos los entornos para las versiones 1.82.7 o 1.82.8 de Litellm y, si los encuentra, vuelva a una lectura limpia.
- Aislar los huéspedes afectados
- Verifique la presencia de pods no autorizados en los clústeres de Kubernetes
- Revise los registros de red para ver el tráfico de salida a “models.litellm(.)cloud” y “checkmarx(.)zone”
- Eliminar los mecanismos de persistencia.
- Audite las canalizaciones de CI/CD para detectar el uso de herramientas como Trivy y KICS durante las ventanas de compromiso.
- Revocar y rotar todas las credenciales expuestas
“La cautiverio de suministro de código despejado se está derrumbando sobre sí misma”, dijo Gal Nagli, dirigente de exposición a amenazas en Wiz, propiedad de Google, en una publicación en X. “Trivy se ve comprometido → LiteLLM se ve comprometido → las credenciales de decenas de miles de entornos terminan en manos de atacantes → y esas credenciales conducen al ulterior compromiso. Estamos atrapados en un caracolillo”.


