Aikido

Paquetes npm de Red Hat comprometidos para propagar un gusano de robo de credenciales

Escrito por
Ilyas Makari

El 1 de junio de 2026, detectamos que múltiples paquetes oficiales de @redhat-cloud-services alcance en npm fueron comprometidos con un gusano de robo de credenciales. En total, 96 versiones de 32 paquetes han sido comprometidas, descargadas acumulativamente 116.991 veces por semana. El malware parece similar al malware Mini Shai-Hulud que fue recientemente liberado como código abierto por TeamPCP. Dado que las herramientas se hicieron públicas, otros actores de amenazas ahora tienen 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 el pipeline de CI/CD fue comprometido en lugar de un token de npm. Si ha instalado alguna versión de paquete afectada desde el 1 de junio de 2026, considere todos los secretos de CI, credenciales de cloud, claves SSH y tokens de npm como comprometidos y rótelos inmediatamente.

Cronología de la campaña Mini Shai-Hulud

Miasma: ¿Ha vuelto Shai-Hulud?

El payload incrustado en los paquetes afectados tiene fuertes similitudes con Mini Shai-Hulud, el malware de cadena de suministro de código abierto por TeamPCP. Curiosamente, esta versión se autodenomina "Miasma" y parece haber reemplazado las referencias familiares de Dune de Shai-Hulud por la mitología griega.

TeamPCP es un grupo de actores de amenazas que ha estado llevando a cabo ataques dirigidos a la cadena de suministro de CI/CD durante varios meses. Su malware Mini Shai-Hulud es un sofisticado gusano de robo de credenciales que se propaga republicando versiones con puertas traseras de paquetes a los que la cuenta de la víctima tiene acceso. Anteriormente hemos informado sobre compromisos que afectan a Mistral y TanStack, Durable Task de Microsoft, PyTorch Lightning, Bitwarden CLI, e Intercom, todos ellos rastreados hasta las mismas herramientas.

Cuando TeamPCP liberó Mini Shai-Hulud como código abierto, la amenaza se expandió más allá de un único actor. Cualquier grupo puede ahora tomar el framework, adaptarlo y desplegarlo contra nuevos objetivos.

Bypass de publicación de confianza

Trusted publishing es un mecanismo introducido por npm para eliminar los tokens de publicación de larga duración de los pipelines de CI/CD, sustituyéndolos por tokens OIDC de corta duración emitidos por GitHub Actions. Fue diseñado para ser más seguro, pero como demuestran los ataques recientes, puede ser eludido si un atacante obtiene acceso a un pipeline de CI/CD a través de una vulnerabilidad o un token comprometido.

Encontramos que la cuenta de GitHub de un empleado de Red Hat fue comprometida y utilizada para subir commits huérfanos maliciosos directamente a varios repositorios, saltándose por completo la revisión de código. Esos commits huérfanos contenían un archivo de flujo de trabajo (ci.yaml) y un script (_index.js).

name: release
on:
  push:
    branches: ['*']
jobs:
  release:
    runs-on: ubuntu-latest
    permissions:
      id-token: write
      contents: read
    steps:
      - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
      - name: prepare
        run: bun run _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 objetivo a través de la variable de entorno OIDC_PACKAGES variable de entorno. El script utiliza el permiso id-token: write para solicitar un token OIDC de corta duración a GitHub, y luego utiliza ese token para autenticarse directamente con el endpoint de publicación de confianza de npm y publicar versiones con puerta trasera de cada paquete de la lista.

Este es el mismo patrón fundamental observado en los compromisos de TanStack y Bitwarden: el propio pipeline 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 declara un script de preinstalación en su package.json que ejecuta node index.js automáticamente en cada npm install, antes de que se ejecute cualquier código de aplicación y antes de que el desarrollador tenga alguna indicación de que algo va mal.

"scripts": {
  "preinstall": "node index.js"
}

El archivo index.js es una carga útil de 4.2 MB oculta tras múltiples capas de ofuscación.

Qué roba

Al igual que en ataques anteriores de Mini Shai-Hulud, la carga útil realiza un barrido exhaustivo de credenciales en proveedores de la nube, entornos CI/CD y herramientas de desarrollo. En el lado de CI, se dirige a los secretos de GitHub Actions, incluyendo GITHUB_TOKEN y ACTIONS_RUNTIME_TOKEN. Para las credenciales de la nube, recopila claves de acceso y tokens de sesión de AWS, credenciales predeterminadas de aplicación y archivos de clave de cuenta de servicio de GCP, y credenciales de entidad de servicio y tokens de identidad administrada de Azure. También busca tokens de HashiCorp Vault, tokens de cuenta de servicio de Kubernetes y archivos kubeconfig, tokens de publicación de npm y PyPI, claves privadas SSH, credenciales de registro 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 su equipo, Device Protection de Aikido le proporciona visibilidad y control sobre los paquetes de software instalados en los dispositivos de su equipo. Cubre extensiones de navegador, bibliotecas de código, plugins IDE y dependencias de compilación, todo en un solo lugar. Detenga 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 ha instalado alguna de las siguientes versiones de paquetes, considere todos los secretos de CI, credenciales de la nube, claves SSH y tokens npm como comprometidos y rótelos inmediatamente:

  • @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/entitlements-client (4.0.11, 4.0.12)
  • @redhat-cloud-services/eslint-config-redhat-cloud-services (3.2.1, 3.2.2)
  • @redhat-cloud-services/frontend-components (7.7.2, 7.7.3)
  • @redhat-cloud-services/frontend-components-advisor-components (3.8.2)
  • @redhat-cloud-services/frontend-components-config (6.11.3, 6.11.4)
  • @redhat-cloud-services/frontend-components-config-utilities (4.11.2, 4.11.3)
  • @redhat-cloud-services/frontend-components-notifications (6.9.2, 6.9.3)
  • @redhat-cloud-services/frontend-components-remediations (4.9.2, 4.9.3)
  • @redhat-cloud-services/frontend-components-testing (1.2.1, 1.2.2)
  • @redhat-cloud-services/frontend-components-translations (4.4.1, 4.4.2)
  • @redhat-cloud-services/frontend-components-utilities (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/integrations-client (6.0.4, 6.0.5)
  • @redhat-cloud-services/javascript-clients-shared (2.0.8, 2.0.9)
  • @redhat-cloud-services/notifications-client (6.1.4, 6.1.5)
  • @redhat-cloud-services/patch-client (4.0.4, 4.0.5)
  • @redhat-cloud-services/quickstarts-client (4.0.11, 4.0.12)
  • @redhat-cloud-services/rbac-client (9.0.3, 9.0.4)
  • @redhat-cloud-services/remediations-client (4.0.4, 4.0.5)
  • @redhat-cloud-services/rule-components (4.7.2, 4.7.3)
  • @redhat-cloud-services/sources-client (3.0.10, 3.0.11)
  • @redhat-cloud-services/topological-inventory-client (3.0.10, 3.0.11)
  • @redhat-cloud-services/tsc-transform-imports (1.2.2)
  • @redhat-cloud-services/types (3.6.1, 3.6.2, 3.6.4)
  • @redhat-cloud-services/vulnerabilities-client (2.1.8, 2.1.9)
Compartir:

https://www.aikido.dev/blog/red-hat-npm-packages-compromised-credential-stealing-worm

Escanear en busca de malware

Empieza gratis
4.7/5
¿Cansado de los falsos positivos?

Prueba Aikido como otros 100k.
Empiece ahora
Obtenga un recorrido personalizado

Con la confianza de más de 100k equipos

Reservar ahora
Escanee su aplicación en busca de IDORs y rutas de ataque reales

Con la confianza de más de 100k equipos

Empezar a escanear
Vea cómo el pentesting de IA prueba su aplicación

Con la confianza de más de 100k equipos

Empezar a probar

Asegura tu plataforma ahora

Protege tu código, la nube y el entorno de ejecución en un único sistema central.
Encuentra y corrije vulnerabilidades de forma rápida y automática.

No se requiere tarjeta de crédito | Resultados del escaneo en 32 segundos.