🔓 Open Source
401 paquetes maliciosos en 5 horas: el ataque que está destruyendo la confianza en el código abierto
Imagina que actualizas una librería y te roban todo
Sucede más seguido de lo que crees. El 14 de julio de 2026, un grupo de hackers conocido como TeamPCP publicó 401 versiones maliciosas de 170 paquetes en los registros de npm y PyPI en cuestión de horas. No era un ataque cualquiera: usaron el propio sistema de firma criptográfica de GitHub (SLSA provenance) para que los paquetes infectados parecieran legítimos.
El ataque, bautizado "Mini Shai-Hulud" (como el gusano de arena de Dune), representa la escalada más agresiva en la guerra contra la cadena de suministro del software. Y si trabajas con JavaScript, Python o cualquier stack moderno, te afecta directamente.
📊 Dato shockeante: En solo 5 horas, TeamPCP publicó más paquetes maliciosos que cualquier otro grupo en todo 2025. El ritmo fue de 1.3 paquetes por minuto.
¿Quién fue víctima del ataque Mini Shai-Hulud?
La lista de proyectos comprometidos lee como un quien es quién del desarrollo moderno:
- TanStack (Router, Query, Table) — 42 paquetes, millones de descargas semanales
- UiPath — 65 paquetes NPM, toda la plataforma de automatización comprometida
- Mistral AI — SDK core, integraciones Azure y GCP, 3 versiones maliciosas cada uno
- OpenSearch — cliente JavaScript oficial
- Guardrails AI — paquete PyPI
- Squawk — 20 paquetes, 5 versiones maliciosas cada uno
Algunos de estos paquetes, como TanStack Router, se usan en aplicaciones de React, Vue y Solid en millones de proyectos alrededor del mundo. Cualquier desarrollador que haya hecho npm install entre el 11 y el 14 de julio pudo haber descargado una versión infectada sin saberlo.
3 vulnerabilidades encadenadas: así rompieron la cadena de confianza
Lo más aterrador del ataque no es el volumen sino la sofisticación técnica. Los atacantes encadenaron tres vulnerabilidades conocidas para lograr lo que parecía imposible: publicar paquetes maliciosos con firma válida de SLSA provenance.
- "Pwn Request" — Abusaron de
pull_request_targeten GitHub Actions para ejecutar código malicioso desde un fork - Cache poisoning — Envenenaron la caché de GitHub Actions cruzando el límite fork↔base
- Extracción de token OIDC — Extrajeron el token de identidad de GitHub Actions directamente de la memoria del proceso runner
Con el token OIDC robado, los atacantes obtuvieron un certificado de firma de Sigstore que hacía que los paquetes maliciosos aparecieran como autenticados y verificados. SLSA provenance, el estándar diseñado para garantizar la integridad del software, fue completamente neutralizado.
"El gusano pudo producir certificados SLSA porque secuestró el pipeline de build legítimo" — Snyk
El payload: un gusano de 2.3 MB que lo roba todo
Dentro de cada paquete NPM comprometido viajaba un archivo llamado router_init.js de 2.3 MB ofuscados en una sola línea de JavaScript. Este archivo contenía un implant multicapas que:
- Inspeccionaba el sistema operativo, la plataforma CI y el runtime
- Rastreaba variables de entorno, archivos de configuración, claves API, tokens de AWS, wallets de criptomonedas
- Atacaba gestores de contraseñas como 1Password y Bitwarden (por primera vez en un ataque de este tipo)
- Exfiltraba datos por 3 canales simultáneos
En la variante Python (que afectó a Guardrails AI y Mistral AI), el payload tenía solo 13 líneas de código que descargaban y ejecutaban un módular credential stealer desde un servidor remoto. Cuando detectaba que el sistema estaba en Israel o Irán, reproducía un archivo MP3 al volumen máximo y borraba todos los archivos del sistema.
3 canales de exfiltración — uno imposible de cerrar
El gusano no se conformaba con robar credenciales. Las exfiltraba por tres vías simultáneas:
- git-tanstack[.]com — dominio dedicado controlado por los atacantes
- Repositorios GitHub con nombres temáticos de Dune, creados con tokens robados
- Session network — red descentralizada y resistente a bloqueos, significativamente más difícil de desmantelar que dominios o canales tradicionales
El uso de Session network como canal de exfiltración es una novedad que preocupa a los equipos de seguridad. "Descentralizado y resistente a derribo", explica Wiz, "es significativamente más difícil de interrumpir que dominios dedicados o la exfiltración basada en GitHub".
Autopropagación: cómo el gusano se replicaba solo
Una vez dentro de un entorno de CI/CD, el gusano no se quedaba quieto. Usaba el token OIDC de GitHub Actions para solicitar un token de publicación de npm con la identidad del mantenedor legítimo. Luego:
- Publicaba versiones maliciosas de los paquetes a los que el mantenedor tenía acceso de escritura
- Usaba la API GraphQL de GitHub para hacer commit de copias de sí mismo en los repositorios de los mantenedores comprometidos
- Suplantaba la identidad del GitHub App de Claude Code de Anthropic en los commits falsos
- Instalaba un daemon persistente que consultaba GitHub cada minuto para verificar si los tokens habían sido revocados
El daemon también verificaba el idioma del sistema para evitar infectar sistemas en ruso — un indicador clásico de ataques con origen en países de habla no rusa.
Más de 5,500 repositorios comprometidos: el panorama completo
El ataque Mini Shai-Hulud no fue un incidente aislado. Forma parte de una oleada masiva de ataques a la cadena de suministro que incluye:
- GitHub confirmó una brecha de 3,800 repositorios internos después de que un empleado instalara una extensión de VS Code envenenada
- Grafana Labs — la herramienta open source fue hackeada, y la empresa se negó a pagar el rescate
- Vercel — datos de clientes robados en un ataque relacionado
- Megalodon — más de 5,500 repositorios públicos de GitHub comprometidos para exfiltrar secrets de GitHub Actions
- Trivy — la herramienta de escaneo de seguridad de código abierto fue comprometida y usada para distribuir ransomware
En total, se estima que más de 10,000 repositorios han sido afectados por ataques de supply chain en las últimas dos semanas. La comunidad open source está en estado de alerta máxima.
Cómo protegerte: 5 acciones inmediatas
Si eres desarrollador o mantienes proyectos open source, esto es lo que debes hacer ahora mismo:
- Audita tus dependencias — Revisa si tienes versiones comprometidas de TanStack, Mistral AI, UiPath, Guardrails AI o Squawk en tu proyecto. Usa
npm auditypip auditcon las últimas bases de datos. - Rota todas tus credenciales — Si hiciste
npm installopip installen los últimos 7 días, asume que tus tokens, claves API y secrets de CI/CD están comprometidos. Rótalos inmediatamente. - Revisa tus workflows de GitHub Actions — Busca configuraciones de
pull_request_targetque puedan ser vulnerables a cache poisoning. Implementa OIDC con restricciones estrictas. - Activa la verificación de proveniencia — Usa
npm audit signaturesy herramientas comosocket.devosnykpara detectar paquetes con firmas sospechosas. - Congela tus versiones — Hasta que pase la tormenta, considera usar lockfiles con versiones exactas y revisa manualmente cualquier actualización de dependencias.
La confianza en el open source está en juego
El ataque Mini Shai-Hulud expone una verdad incómoda: los mecanismos de confianza del código abierto están rotos. SLSA provenance, diseñado para garantizar que un paquete viene de una fuente confiable, fue utilizado como arma para hacer que paquetes maliciosos parecieran legítimos. GitHub Actions, la plataforma de CI/CD más usada del mundo, fue el vector de propagación.
No es un problema técnico menor. Es una crisis de confianza. Si cada vez que haces npm install o pip install corres el riesgo de descargar un gusano que roba tus credenciales y se propaga a tus repositorios, el modelo completo de desarrollo moderno necesita repensarse.
¿La solución? No la hay fácil. Pero por ahora, la precaución extrema es la única defensa. Y tal vez, como dijo un desarrollador en Hacker News tras el ataque: "Ya no voy a ejecutar npm install nunca más sin auditar cada línea."
Comparte esto con ese compañero que hace npm install --save sin mirar. Porque la próxima vez, el paquete que instale podría ser el que vacíe sus cuentas.
Fuentes: SecurityWeek, WIRED, TechCrunch, Snyk, Wiz, Socket, StepSecurity, The Register, Ars Technica, BleepingComputer.