TeamPCP Supply Chain Attack: Trivy, KICS, and Bitwarden CLI Backdoors — Full Analysis
Análisis forense completo de la campaña TeamPCP: envenenamiento de etiquetas y backdoors de punto de entrada inyectados en Trivy, KICS y Bitwarden CLI.
← Volver a la Ronda de Seguridad del 4 de junio
Sinopsis
Entre febrero y abril de 2026, un actor de amenaza rastreó como TeamPCP ejecutó una campaña coordinada de cadena de suministro dirigida a desarrolladores y herramientas de seguridad ampliamente utilizadas: Trivy el escáner de vulnerabilidad Checkmarx KICS el escáner de infraestructura como código, y el Bitwarden CLI Paquete npm. Los atacantes aprovecharon la rotación credencial incompleta en el repositorio Trivy para obtener acceso inicial, luego utilizaron secretos de desarrollador robados para pivotar a KICS y Bitwarden. Cambio 334 desarrolladores Tomó el CLI Bitwarden atrasado en 90 minutos de publicación; el impacto aguas abajo incluyó el robo credencial que afecta a entornos de desarrolladores OpenAI y Vercel.
Timeline
- Feb 2026: TeamPCP explota la rotación credencial incompleta en el repositorio Trivy GitHub de Aqua Security.
- Mar 16, 2026: Código malicioso inyectado en Trivy — credenciales de nube de carga de pago de almacenamiento credencial, teclas SSH, archivos de configuración de Kubernetes y secretos de desarrolladores de corredores CI/CD.
- Mar 23, 2026: Las credenciales de desarrollador robadas de Trivy solían empujar artefactos maliciosos al repositorio de Checkmarx KICS (imagen Docker)
checkmarx/kics:v2.1.4-tainted). KICS Ir binario modificado con telemetría no autorizada + exfiltración rutinaria encriptando informes de escaneo al atacante C2. - 22 de abril de 2026: Bitwarden troyano CLI v2026.4.0 publicado a npm. JavaScript payload fetches adicional stage from attacker-controlled CDN and exfiltrates password aboveda content + local secrets. Paquete tirado después de ~90 minutos; 334 descargas confirmadas.
Malware Behavior
Los tres implantes comparten el mismo dominio C2 (telemetry-cdn[.]dev) y utilizar un HTTPS POST con un encabezado personalizado (X-Client-ID) para exfiltrar datos robados. La modificación binaria de KICS agrega una goroutina que, después de cada escaneo, AES-256-GCM cifra el informe de escaneo (conteniendo todas las configuraciones erróneas encontradas de IaC y las trayectorias de archivo) y POSTs it to the C2. Los objetivos de carga útil de Bitwarden npm:
- Bóveda Bitwarden JSON
~/.config/Bitwarden CLI/data.json) - Archivos credenciales AWS (AWS)
~/.aws/credentials, variables ambientales) - SSH llaves privadas en
~/.ssh/ - Docker config
~/.docker/config.json) incluyendo fichas de registro - Variables de medio ambiente iguales
*TOKEN*,*SECRET*,*KEY*,*PASSWORD*
Versiones de paquetes afectadas
- Trivy: Cualquier imagen Trivy binaria o Docker tirada entre Mar 16–Mar 22, 2026
- Checkmarx KICS:
checkmarx/kics:v2.1.4Docker image (SHA256:a3f9b2c1...) - Bitwarden CLI npm:
@bitwarden/[email protected]
COI
- dominio C2:
telemetry-cdn[.]dev(185.220.101[.]47) - DNS consultas a
telemetry-cdn[.]devde sistemas CI/CD o estaciones de trabajo de desarrolladores - POSTA DE HTTPS de salida con cabecera
X-Client-ID: <base64_blob>a185.220.101[.]47 - Paquete Bitwarden npm
@bitwarden/[email protected]dentropackage-lock.jsononode_modules - KICS Docker imagen digerir:
sha256:a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1
Remediación
# 1. Check if affected packages were used
# Bitwarden CLI
npm ls @bitwarden/cli | grep 2026.4.0
# Check KICS Docker image digest
docker inspect checkmarx/kics:v2.1.4 --format '{{index .RepoDigests 0}}'
# 2. Rotate ALL credentials that were present in environments running the affected tools
# Priority: AWS keys, GCP service account keys, GitHub tokens, NPM tokens
# 3. Revoke and regenerate SSH keys if ~/.ssh/ was accessible during the affected period
# 4. Block C2 domain at DNS/firewall level
# Block: telemetry-cdn[.]dev (185.220.101.47)
echo "0.0.0.0 telemetry-cdn.dev" | sudo tee -a /etc/hosts
# 5. Scan for active C2 connections
netstat -an | grep 185.220.101.47
ss -tp | grep 185.220.101.47
# 6. Update to clean versions:
# Trivy: >= 0.62.0 (post-remediation build)
# KICS: checkmarx/kics:latest (verified clean post Apr 25)
# Bitwarden CLI: @bitwarden/[email protected] or later
npm install -g @bitwarden/cli@latest
← Volver a la Ronda de Seguridad del 4 de junio