Aikido

Pacotes npm da Red Hat Comprometidos para Disseminar um Worm de Roubo de Credenciais

Escrito por
Ilyas Makari

Em 1º de junho de 2026, detectamos vários pacotes oficiais do escopo @redhat-cloud-services no npm foram comprometidas com um worm de roubo de credenciais. No total, 96 versões em 32 pacotes foram comprometidas, baixadas cumulativamente 116.991 vezes por semana. O malware parece semelhante ao malware Mini Shai-Hulud que foi recentemente open-sourced pelo TeamPCP. Como as ferramentas foram disponibilizadas publicamente, outros atores de ameaça agora têm acesso às mesmas técnicas e podem replicá-las ou adaptá-las. Os pacotes foram publicados via GitHub Actions OIDC, indicando que o pipeline CI/CD foi comprometido, e não um token npm. Se você instalou alguma versão de pacote afetada desde 1º de junho de 2026, trate todos os Secrets de CI, credenciais de Cloud, chaves SSH e tokens npm como comprometidos e rotacione-os imediatamente.

Linha do tempo da campanha Mini Shai-Hulud

Miasma: Shai-Hulud está de volta?

O payload incorporado nos pacotes afetados apresenta fortes semelhanças com o Mini Shai-Hulud, o malware de supply chain de código aberto pela TeamPCP. Curiosamente, esta versão se autodenomina "Miasma" e parece ter substituído as referências familiares de Duna do Shai-Hulud por mitologia grega.

TeamPCP é um grupo de agentes de ameaça que tem realizado ataques direcionados à supply chain de CI/CD há vários meses. Seu malware Mini Shai-Hulud é um worm sofisticado de roubo de credenciais que se espalha republicando versões com backdoor de pacotes aos quais a conta da vítima tem acesso. Já relatamos anteriormente sobre comprometimentos afetando Mistral e TanStack, Durable Task da Microsoft, PyTorch Lightning, Bitwarden CLI e Intercom, todos rastreados até as mesmas ferramentas.

Quando a TeamPCP disponibilizou o Mini Shai-Hulud como código aberto, a ameaça se expandiu para além de um único agente. Qualquer grupo agora pode pegar a estrutura, adaptá-la e implantá-la contra novos alvos.

Bypass de publicação confiável

Trusted publishing é um mecanismo que o npm introduziu para eliminar tokens de publicação de longa duração de pipelines CI/CD, substituindo-os por tokens OIDC de curta duração emitidos pelo GitHub Actions. Foi projetado para ser mais seguro, mas como ataques recentes mostram, pode ser contornado se um invasor obtiver acesso a um pipeline CI/CD através de uma vulnerabilidade ou token comprometido.

Descobrimos que a conta GitHub de um funcionário da Red Hat foi comprometida e usada para enviar commits órfãos maliciosos diretamente para vários repositórios, ignorando completamente a revisão de código. Esses commits órfãos continham um arquivo de workflow (ci.yaml) e um 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"

Quando o workflow é executado, ele instala o Bun e executa _index.js, passando uma lista de pacotes alvo via a variável de ambiente OIDC_PACKAGES variável de ambiente. O script usa a permissão id-token: write para solicitar um token OIDC de curta duração do GitHub, e então usa esse token para autenticar diretamente com o endpoint de publicação confiável do npm e publicar versões com backdoor de cada pacote na lista.

Este é o mesmo padrão fundamental visto nos comprometimentos de TanStack e Bitwarden: o próprio pipeline CI/CD se torna a superfície de ataque, enquanto a publicação confiável baseada em OIDC – projetada para eliminar tokens de longa duração – se torna um sinal de confiança enganoso.

O script de pré-instalação

Cada pacote comprometido declara um script de pré-instalação em seu package.json que executa node index.js automaticamente em cada npm install, antes que qualquer código de aplicação seja executado e antes que o desenvolvedor tenha qualquer indicação de que algo está errado.

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

O arquivo index.js é um payload de 4.2 MB oculto por trás de múltiplas camadas de ofuscação.

O que ele rouba

Assim como em ataques anteriores do Mini Shai-Hulud, o payload realiza uma varredura ampla de credenciais em provedores de Cloud, ambientes de CI/CD e ferramentas de desenvolvimento. No lado do CI, ele visa Secrets do GitHub Actions, incluindo GITHUB_TOKEN e ACTIONS_RUNTIME_TOKEN. Para credenciais de Cloud, ele coleta chaves de acesso e tokens de sessão AWS, credenciais padrão de aplicação GCP e arquivos de chave de conta de serviço, e credenciais de service principal e tokens de identidade gerenciada do Azure. Ele também varre em busca de tokens HashiCorp Vault, tokens de conta de serviço Kubernetes e arquivos kubeconfig, tokens de publicação npm e PyPI, chaves privadas SSH, credenciais de registro Docker, chaves GPG e quaisquer arquivos .env que possa encontrar no sistema de arquivos.

Como a Aikido detecta isso

Se você é um usuário Aikido, verifique seu feed central e filtre por problemas de malware. Isso aparecerá como um problema crítico 100/100. O Aikido reanalisa todas as noites, mas recomendamos acionar uma reanálise manual agora.

Se você ainda não é um usuário Aikido, pode criar uma conta e conectar seus repositórios. Nossa cobertura de malware está incluída no plano gratuito, não é necessário cartão de crédito.

Para uma cobertura mais ampla em toda a sua equipe, o Device Protection da Aikido oferece visibilidade e controle sobre os pacotes de software instalados nos dispositivos da sua equipe. Ele abrange extensões de navegador, bibliotecas de código, plugins IDE e dependências de build, tudo em um só lugar. Pare o malware antes que ele seja instalado.

Para proteção futura, considere Aikido Safe Chain (open source). O Safe Chain se integra ao seu fluxo de trabalho existente, interceptando comandos npm, npx, yarn, pnpm e pnpx e verificando pacotes contra Aikido Intel antes da instalação.

‍Indicadores de Compromisso

Se você instalou alguma das seguintes versões de pacotes, considere todos os Secrets de CI, credenciais de Cloud, chaves SSH e tokens npm como comprometidos e rotacione-os imediatamente:

  • @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)
Compartilhar:

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

Verificar por malware

Comece Gratuitamente
4.7/5
Cansado de falsos positivos?

Experimente Aikido como 100 mil outros.
Começar Agora
Obtenha um tour personalizado

Confiado por mais de 100 mil equipes

Agende Agora
Escaneie seu aplicativo em busca de IDORs e caminhos de ataque reais

Confiado por mais de 100 mil equipes

Iniciar Escaneamento
Veja como o pentest de IA testa seu aplicativo

Confiado por mais de 100 mil equipes

Iniciar Testes

Fique seguro agora

Proteja seu código, Cloud e runtime em um único sistema centralizado.
Encontre e corrija vulnerabilidades rapidamente de forma automática.

Não é necessário cartão de crédito | Resultados da varredura em 32 segundos.