
TeamPCP, el actor de amenazas detrás de las recientes infracciones de Trivy y KICS, comprometió un popular paquete de Python llamado litellm y lanzó dos versiones maliciosas que contienen un recolector de credenciales, un conjunto de herramientas de movimiento lateral 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 lanzaron el 24 de marzo de 2026. Esto probablemente se deba al uso de Trivy para paquetes en flujos de trabajo de CI/CD. Desde entonces, ambas versiones de 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 nube, secretos de Kubernetes, billeteras de criptomonedas y archivos .env, un conjunto de herramientas de movimiento lateral de Kubernetes que implementa pods privilegiados en todos los nodos y una puerta trasera systemd persistente (sysmon.service) que sondea ‘checkmarx(.)zone/raw’ en busca de binarios adicionales», dice Endor Labs. dice el investigador. dijo Kiran Raj.
Como se observó en un caso anterior, los datos recopilados se extraen mediante una solicitud HTTPS POST como un archivo cifrado (‘tpcp.tar.gz’) a un dominio de comando y control llamado ‘models.litellm(.)cloud’.
Para 1.82.7, el código malicioso está incrustado en el archivo «litellm/proxy/proxy_server.py» y la inyección se realiza durante o después del proceso de construcción de la rueda. Este código está diseñado para ejecutarse durante la importación del módulo, de modo que el proceso que importa «litellm.proxy.proxy_server» active la carga útil sin requerir la intervención del usuario.
La próxima iteración del paquete agregará «más vectores de ataque» incorporando el malicioso «litellm_init.pth» en la raíz de la rueda, permitiendo que la lógica se ejecute automáticamente cada vez que se inicia un proceso Python en el entorno, no solo cuando se importa litellm.
Otro aspecto que hace que 1.82.8 sea aún más peligroso es el hecho de que el iniciador .pth genera procesos secundarios de Python a través de subprocess.Popen, lo que permite que las cargas útiles se ejecuten en segundo plano.
«Los archivos Python .pth colocados en los paquetes del sitio son procesados automáticamente por site.py cuando se inicia el intérprete», dijo Endor Labs. «Este archivo contiene una línea que importa el subproceso e inicia un proceso Python separado para decodificar y ejecutar la misma carga útil Base64».
La carga útil se decodifica en un orquestador que descomprime el recolector de credenciales y el cuentagotas de persistencia. El recolector también utiliza el token de la cuenta de servicio de Kubernetes (si está presente) para enumerar todos los nodos del clúster e implementar pods privilegiados en cada nodo. Luego, el pod realiza chroot en el sistema de archivos del host e instala el cuentagotas de persistencia como un servicio de usuario systemd en todos los nodos.
El servicio systemd está configurado para iniciar un script de Python (‘~/.config/sysmon/sysmon.py’) (el mismo nombre utilizado en el compromiso de Trivy). Este script accede a ‘checkmarx(.)zone/raw’ cada 50 minutos para obtener la URL que apunta a la carga útil de la siguiente etapa. Si la URL contiene youtube(.)com, el script dejará de ejecutarse. Este es un patrón de interruptor de apagado común en todos los incidentes observados hasta la fecha.
«Es casi seguro que esta campaña no ha terminado», dijo el Instituto Endor. «TeamPCP muestra un patrón consistente: cada entorno comprometido genera credenciales que desbloquean el siguiente objetivo. El giro de CI/CD (ejecutor de GitHub Actions) a producción (paquetes PyPI ejecutándose en un clúster de Kubernetes) es una escalada deliberada».
Con el último desarrollo, TeamPCP ha lanzado una incesante campaña de ataque a la cadena de suministro, generando cinco ecosistemas, incluidos GitHub Actions, Docker Hub, npm, Open VSX y PyPI, ampliando su alcance y poniendo más sistemas bajo su control.

«TeamPCP ha intensificado una campaña coordinada dirigida a herramientas de seguridad e infraestructura de desarrolladores de código abierto, y ahora se atribuye abiertamente el mérito de múltiples ataques posteriores en todo el ecosistema», dijo Socket. «Esta es una operación continua dirigida a puntos de alto impacto en la cadena de suministro de software».
En un mensaje publicado en su canal Telegram, TeamPCP dijo: «Estas empresas fueron creadas para proteger sus cadenas de suministro y ni siquiera pueden proteger sus propias cadenas de suministro. El estado actual de la investigación de seguridad moderna es una broma. Como resultado, continuaremos robando terabytes de secretos comerciales con nuevos socios».
«El impacto creciente de esto será significativo. Ya nos estamos asociando con otros equipos para perpetuar la interrupción. Muchas de sus herramientas de seguridad favoritas y proyectos de código abierto serán atacados en los próximos meses. Estén atentos», agregó el atacante.
Se recomienda a los usuarios que tomen las siguientes acciones para contener la amenaza:
Audite todos los entornos con Litellm versión 1.82.7 o 1.82.8 y vuelva a una versión limpia si la encuentra. Aísle los hosts afectados. Confirme la presencia de pods no autorizados en el clúster de Kubernetes. Revise los registros de red para detectar el tráfico de salida a «models.litellm(.)cloud» y «checkmarx(.)zone». Elimine los mecanismos de persistencia. Acerca del uso de herramientas como Trivy y KICS durante un compromiso. Audite su canal de CI/CD. Windows. Revoque y rote todas las credenciales expuestas.
«La cadena de suministro de código abierto se está rompiendo», escribió Gal Nagri, jefe de prevención de amenazas en Wiz de Google, en una publicación en X. «Trivy se ve comprometido → LiteLLM se ve comprometido → las credenciales para decenas de miles de entornos terminan en manos de atacantes → y esas credenciales conducen a la siguiente infracción. Estamos atrapados en un bucle».
Source link
