Un importante ataque a la cadena de suministro atribuido al actor de amenazas 'TeamPCP' comprometió el escáner de vulnerabilidades Trivy de Aqua Security y al menos otros dos frameworks a partir del 19 de marzo de 2026, inyectando malware para el robo de credenciales mediante el abuso de la funcionalidad de etiquetas (tags) de repositorio de GitHub para secuestrar pipelines de CI/CD. La campaña convirtió herramientas de seguridad de confianza en un vector para el robo generalizado de credenciales, apuntando a secretos de los tres principales proveedores de la nube.
"Esta actividad se ha expandido desde entonces a frameworks adicionales, incluidos Checkmarx KICS y LiteLLM", señaló el equipo de Defender for Cloud de Microsoft en un blog de seguridad, destacando que la cadena de ataque principal se mantuvo similar en cada ola. "Cada ola utilizó un nuevo dominio de C2 tematizado según el proyecto comprometido".
Los atacantes realizaron un force-push en 76 de las 77 etiquetas de versión en el repositorio de GitHub aquasecurity/trivy-action y en las siete etiquetas de aquasecurity/setup-trivy, redirigiéndolas a código malicioso. También se publicó en canales oficiales un binario malicioso de Trivy, versión 0.69.4. El malware exfiltró credenciales de la nube para AWS, GCP y Azure, junto con secretos de Kubernetes, a dominios de typosquatting como scan.aquasecurtiy[.]org.
El ataque transforma herramientas de seguridad y desarrollo de confianza en amenazas internas, creando un riesgo significativo para cualquier organización que utilice pipelines de CI/CD automatizados con las versiones comprometidas. El enfoque en la recolección masiva de credenciales sugiere que el objetivo del actor es obtener un acceso amplio a la infraestructura de la nube para ataques posteriores, mientras que el radio de impacto total sigue bajo investigación.
Cómo las etiquetas mutables se convirtieron en un arma
El ataque explotó una característica de diseño principal de Git: las etiquetas mutables. Por defecto, una etiqueta (una etiqueta que apunta a una versión de software específica) puede ser reasignada por cualquier persona con acceso de escritura (push) a un repositorio. El actor de amenazas utilizó credenciales comprometidas para volver a etiquetar 76 versiones existentes de trivy-action y todas las versiones de setup-trivy, apuntándolas a nuevos commits que contenían la carga maliciosa.
Los flujos de trabajo de CI/CD secundarios que referenciaban estas acciones por etiqueta de versión extrajeron automáticamente el código del atacante en su siguiente ejecución, sin cambios visibles en la interfaz de usuario de GitHub para alertar a los desarrolladores. El actor también falsificó la identidad del commit, haciendo que los commits maliciosos parecieran legítimos, una táctica vista anteriormente en otros ataques a la cadena de suministro. Este método elude la verificación de versión típica y permite que el malware se propague silenciosamente.
Un robo de credenciales en varias etapas
Una vez ejecutado dentro de un ejecutor de CI/CD, el malware inició una operación de recolección de credenciales de amplio espectro. Después de identificar la máquina host, un programa de robo basado en Python buscó credenciales para Amazon Web Services, Google Cloud Platform y Microsoft Azure, consultando tanto variables de entorno como servicios de metadatos de instancia.
El malware no se detuvo en las claves de la nube. También enumeró y exfiltró secretos de Kubernetes, buscó en el sistema de archivos claves API en archivos de configuración y recolectó URLs de webhooks de Slack y Discord. Los datos robados se cifraron en un archivo tpcp.tar.gz y se enviaron mediante HTTP POST a un servidor controlado por el atacante. Para enmascarar el compromiso, el malware ejecutaba luego el escáner Trivy legítimo, permitiendo que el pipeline se completara con éxito con la salida esperada.
Mitigación y versiones afectadas
Se insta a las organizaciones a auditar de inmediato sus pipelines de CI/CD y asegurarse de que estén ejecutando versiones seguras verificadas de las herramientas afectadas. Fijar las acciones a SHAs de commit inmutables en lugar de etiquetas de versión mutables es la medida preventiva más crítica.
Microsoft proporcionó la siguiente tabla de productos afectados y las versiones mínimas seguras a utilizar:
| Producto | Componente | Versión segura |
|---|
| Trivy | Binario de Trivy | v0.69.2 – v0.69.3 |
| trivy-action | v0.35.0 |
| setup-trivy | v0.2.6 |
| LiteLLM | litellm | v1.82.6 y anteriores |
| Checkmarx | checkmarx.cx-dev-assist | 1.10.0 y superiores |
| checkmarx.ast-results | 2.56.0 y superiores |
| ast-github-action | 2.3.33 |
| kics-github-action | 2.1.20 |
Los equipos de seguridad también pueden buscar indicadores de compromiso. Los clientes de Microsoft Defender pueden usar consultas de búsqueda avanzada para encontrar comandos maliciosos, consultas DNS sospechosas a dominios de atacantes y enumeración de secretos de Kubernetes. Por ejemplo, la siguiente consulta puede ayudar a identificar líneas de comandos asociadas con los ataques de TeamPCP:
CloudProcessEvents | where ProcessCommandLine has_any ('scan.aquasecurtiy.org','checkmarx.zone','tpcp.tar.gz')
Este incidente sirve como un recordatorio crítico de la fragilidad de la cadena de suministro de software. Para los inversores, destaca los riesgos operativos y financieros para las empresas que dependen en gran medida del software de código abierto sin procesos de verificación estrictos. Las empresas que utilicen herramientas comprometidas pueden enfrentarse a costes de remediación significativos, posibles responsabilidades por brechas de datos y una pérdida de confianza de los clientes, lo que afectaría al rendimiento de sus acciones. Por el contrario, el evento puede actuar como un impulso para firmas de ciberseguridad como Palo Alto Networks (PANW) o CrowdStrike (CRWD) que se especializan en seguridad de la cadena de suministro y protección de cargas de trabajo en la nube.
Este artículo es solo para fines informativos y no constituye asesoramiento de inversión.