El 1 de junio de 2026, detectamos varios paquetes oficiales procedentes de la Ámbito de @redhat-cloud-services en npm se vieron comprometidos por un gusano diseñado para robar credenciales. Al parecer, más de 30 paquetes se han visto afectados. El malware parece similar al Malware Mini Shai-Hulud que TeamPCP ha publicado recientemente como código abierto. Dado que las herramientas se han puesto a disposición del público, otros actores maliciosos tienen ahora acceso a las mismas técnicas y pueden replicarlas o adaptarlas. Los paquetes se publicaron a través de GitHub Actions OIDC, lo que indica que se vio comprometida la canalización de CI/CD y no un token de npm. Si ha instalado alguna versión de los paquetes afectados desde el 1 de junio de 2026, considere que todos los secretos de CI, credenciales en la nube, claves SSH y tokens de npm están comprometidos y cámbielos inmediatamente.
Cronología de la campaña «Mini Shai-Hulud»
- 22 de abril de 2026 - @bitwarden/cli se vio comprometido a través de un flujo de trabajo de GitHub Actions malicioso. La carga útil se identifica a sí misma como «Shai-Hulud: La Tercera Venida».
- 29 de abril de 2026 - Cuatro paquetes npm de SAP se vieron comprometidos debido a la filtración de un token de npm a través de una compilación maliciosa de una solicitud de extracción de CircleCI.
- 30 de abril de 2026 - PyTorch Lightning ha sido vulnerado en PyPI; versiones 2.6.2 y 2.6.3.
- 12 de mayo de 2026 - Mini Shai-Hulud supera los 160 paquetes, entre los que se incluyen Mistral y Tanstack.
- 12 de mayo de 2026 - TeamPCP publica el código fuente completo de Shai-Hulud en GitHub, junto con una serie de mensajes en BreachForums en los que anima a otros a llevar a cabo sus propias campañas.
- 19 de mayo de 2026 - El paquete npm «DurableTask» de Microsoft ha sido objeto de un ataque, debido a una cuenta de GitHub que ya había sido comprometida anteriormente.
- Junio 1, 2026 - Más de 30
@redhat-cloud-servicesPaquetes de npm comprometidos con Miasma, una nueva variante del Mini Shai-Hulud.
Miasma: ¿Ha vuelto Shai-Hulud?
La carga útil integrada en los paquetes afectados presenta grandes similitudes con Mini Shai-Hulud, el malware de la cadena de suministro que TeamPCP ha publicado en código abierto. Curiosamente, esta versión se denomina a sí misma «Miasma» y parece haber sustituido las conocidas referencias a Dune de Shai-Hulud por elementos de la mitología griega.
TeamPCP es un grupo de actores maliciosos que ataques a la cadena de suministro meses lanzando ataques a la cadena de suministro selectivos de CI/CD ataques a la cadena de suministro . Su malware «Mini Shai-Hulud» es un sofisticado gusano diseñado para robar credenciales que se propaga mediante la republicación de versiones con puertas traseras de paquetes a los que tiene acceso la cuenta de la víctima. Anteriormente ya informamos de ataques que afectaron a Mistral y TanStack, Durable Task de Microsoft, PyTorch Lightning, Bitwarden CLI e Intercom, todos ellos atribuidos a la misma herramienta.
Cuando TeamPCP publicó el código fuente de Mini Shai-Hulud, la amenaza dejó de limitarse a un solo actor. Ahora cualquier grupo puede hacer uso del marco, adaptarlo y utilizarlo contra nuevos objetivos.
Omisión de la publicación de confianza
La publicación de confianza es un mecanismo introducido por npm para eliminar los tokens de publicación de larga duración de los flujos de CI/CD, sustituyéndolos por tokens OIDC de corta duración emitidos por GitHub Actions. Se diseñó para ofrecer mayor seguridad, pero, como demuestran los ataques recientes, puede eludirse si un atacante consigue acceder a un flujo de CI/CD a través de una vulnerabilidad o un token comprometido.
Descubrimos que la cuenta de GitHub de un empleado de Red Hat había sido comprometida y se había utilizado para enviar directamente a varios repositorios modificaciones maliciosas sin asignar, eludiendo por completo el proceso de revisión de código. Esas modificaciones sin asignar contenían un archivo de flujo de trabajo (ci.yaml) y un guion (_index.js).
nombre: Lanzamiento
el:
push:
ramas: ['*']
trabajos:
versión:
se ejecuta en: ubuntu-latest
permisos:
token de identificación: escribir
contenido: lectura
pasos:
- usos: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
- usos: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
- nombre: preparar
ejecutar: bun ejecutar _index.js
env:
OIDC_PACKAGES: "@redhat-cloud-services/frontend-components-advisor-components, @redhat-cloud-services/chrome, @redhat-cloud-services/frontend-components, @redhat-cloud-services/frontend-components-config-utilities, @redhat-cloud-services/frontend-components-config, @redhat-cloud-services/eslint-config-redhat-cloud-services, @redhat-cloud-services/frontend-components-notifications, @redhat-cloud-services/frontend-components-remediations, @redhat-cloud-services/rule-components, @redhat-cloud-services/frontend-components-testing, @redhat-cloud-services/frontend-components-translations, @redhat-cloud-services/tsc-transform-imports, @redhat-cloud-services/types, @redhat-cloud-services/frontend-components-utilities"
WORKFLOW_ID: "ci.yaml"
REPO_ID_SUFFIX: "RedHatInsights/frontend-components"Cuando se ejecuta el flujo de trabajo, instala Bun y ejecuta _index.js, pasándole una lista de paquetes de destino a través de la OIDC_PAQUETES variable de entorno. El script utiliza la id-token: escribir permiso para solicitar un token OIDC de corta duración a GitHub y, a continuación, utiliza ese token para autenticarse directamente en el punto final de publicación de confianza de npm y publicar versiones con puertas traseras de todos los paquetes de la lista.
Se trata del mismo patrón básico observado en las brechas de seguridad de TanStack y Bitwarden: el propio proceso de CI/CD se convierte en la superficie de ataque, mientras que la publicación de confianza basada en OIDC —diseñada para eliminar los tokens de larga duración— se convierte en una señal de confianza engañosa.
El script de preinstalación
Cada paquete comprometido incluye un script de preinstalación en su archivo package.json que ejecuta automáticamente el archivo index.js de Node.js cada vez que se ejecuta «npm install», antes de que se ejecute el código de la aplicación y antes de que el desarrollador tenga indicios de que algo va mal.
"scripts": {
"preinstall": "node index.js"
}
El archivo index.js contiene una carga útil de 4,2 MB oculta tras varias capas de ofuscación.
Qué roba
Al igual que en anteriores ataques de Mini Shai-Hulud, la carga útil lleva a cabo un amplio barrido de credenciales en proveedores de servicios en la nube, entornos de CI/CD y herramientas de desarrollo. En lo que respecta a la integración continua (CI), se centra en los secretos de GitHub Actions, entre los que se incluyen GITHUB_TOKEN y ACTIONS_RUNTIME_TOKEN. En cuanto a las credenciales en la nube, recopila claves de acceso y tokens de sesión de AWS, credenciales predeterminadas de aplicaciones y archivos de claves de cuentas de servicio de GCP, así como credenciales de entidades de servicio y tokens de identidades gestionadas de Azure. También busca tokens de HashiCorp Vault, tokens de cuentas de servicio de Kubernetes y archivos kubeconfig, tokens de publicación de npm y PyPI, claves privadas SSH, credenciales de registros de Docker, claves GPG y cualquier archivo .env que pueda encontrar en el sistema de archivos.
Cómo Aikido detecta esto
Si es usuario de Aikido, revise su feed central y filtre por problemas de malware. Esto aparecerá como un problema crítico de 100/100. Aikido realiza reescaneos cada noche, pero recomendamos activar un reescaneo manual ahora.
Si aún no es usuario de Aikido, puede crear una cuenta y conectar sus repositorios. Nuestra cobertura de malware está incluida en el plan gratuito, sin necesidad de tarjeta de crédito.
Para una cobertura más amplia en todo tu equipo, la protección de dispositivos de Aikido te ofrece visibilidad y control sobre los paquetes de software instalados en los dispositivos de tu equipo. Abarca extensiones de navegador, bibliotecas de código, complementos de IDE y dependencias de compilación, todo en un solo lugar. Detén el malware antes de que se instale.
Para una protección futura, considere Aikido Safe Chain (código abierto). Safe Chain se integra en su flujo de trabajo existente, interceptando comandos npm, npx, yarn, pnpm y pnpx y verificando los paquetes con Aikido Intel antes de la instalación.
Indicadores de compromiso
Si has instalado alguna de las siguientes versiones de los paquetes, considera que todos los secretos de CI, las credenciales de la nube, las claves SSH y los tokens de npm se han visto comprometidos y cámbialos de inmediato:
@redhat-cloud-services/chrome(2.3.1, 2.3.2)@redhat-cloud-services/compliance-client(4.0.3, 4.0.4)@redhat-cloud-services/config-manager-client(5.0.4, 5.0.5)@redhat-cloud-services/cliente-de-derechos(4.0.11, 4.0.12)@redhat-cloud-services/eslint-config-redhat-cloud-services(3.2.1, 3.2.2)@redhat-cloud-services/componentes-frontend(7.7.2, 7.7.3)@redhat-cloud-services/componentes-frontend-componentes-del-asesor(3.8.2)@redhat-cloud-services/configuración-de-componentes-frontend(6.11.3, 6.11.4)@redhat-cloud-services/utilidades-de-configuración-de-componentes-frontend(4.11.2, 4.11.3)@redhat-cloud-services/componentes-frontend-notificaciones(6.9.2, 6.9.3)@redhat-cloud-services/correcciones-de-componentes-frontend(4.9.2, 4.9.3)@redhat-cloud-services/pruebas-de-componentes-frontend(1.2.1, 1.2.2)@redhat-cloud-services/traducciones-de-componentes-de-interfaz(4.4.1, 4.4.2)@redhat-cloud-services/componentes-frontend-utilidades(7.4.1, 7.4.2)@redhat-cloud-services/hcc-feo-mcp(0.3.1, 0.3.2)@redhat-cloud-services/hcc-kessel-mcp(0.3.1, 0.3.2)@redhat-cloud-services/hcc-pf-mcp(0.6.1, 0.6.2)@redhat-cloud-services/host-inventory-client(5.0.3, 5.0.4)@redhat-cloud-services/insights-client(4.0.4, 4.0.5)@redhat-cloud-services/integraciones-cliente(6.0.4, 6.0.5)@redhat-cloud-services/clientes-javascript-compartidos(2.0.8, 2.0.9)@redhat-cloud-services/cliente-de-notificaciones(6.1.4, 6.1.5)@redhat-cloud-services/patch-client(4.0.4, 4.0.5)@redhat-cloud-services/guías-rápidas-para-clientes(4.0.11, 4.0.12)@redhat-cloud-services/rbac-client(9.0.3, 9.0.4)@redhat-cloud-services/correcciones-cliente(4.0.4, 4.0.5)@redhat-cloud-services/componentes-de-reglas(4.7.2, 4.7.3)@redhat-cloud-services/sources-client(3.0.10, 3.0.11)@redhat-cloud-services/cliente-de-inventario-topológico(3.0.10, 3.0.11)@redhat-cloud-services/tsc-transform-imports(1.2.2)@redhat-cloud-services/tipos(3.6.1, 3.6.2, 3.6.4)@redhat-cloud-services/vulnerabilidades-cliente(2.1.8, 2.1.9)

