Aikido

Pacotes npm da Red Hat foram comprometidos para propagar um worm que rouba credenciais

Escrito por
Ilyas Makari

Em 1 de junho de 2026, detetámos vários pacotes oficiais provenientes do Âmbito @redhat-cloud-services no npm foram comprometidos por um worm que rouba credenciais. Mais de 30 pacotes parecem ter sido afetados. O malware parece semelhante ao Malware Mini Shai-Hulud que foi recentemente disponibilizada em código aberto pela TeamPCP. Uma vez que as ferramentas foram disponibilizadas publicamente, outros agentes maliciosos têm agora acesso às mesmas técnicas e podem replicá-las ou adaptá-las. Os pacotes foram publicados através do GitHub Actions OIDC, indicando que o pipeline de CI/CD foi comprometido, e não um token npm. Se tiver instalado alguma versão de pacote afetada desde 1 de junho de 2026, considere todos secrets de CI, credenciais de nuvem, chaves SSH e tokens npm como comprometidos e altere-os imediatamente.

Cronologia da campanha Mini Shai-Hulud

Miasma: O Shai-Hulud está de volta?

A carga útil incorporada nos pacotes afetados apresenta fortes semelhanças com o Mini Shai-Hulud, o malware de cadeia de abastecimento disponibilizado em código aberto pela TeamPCP. Curiosamente, esta versão autodenomina-se «Miasma» e parece ter substituído as conhecidas referências a «Dune» do Shai-Hulud por elementos da mitologia grega.

O TeamPCP é um grupo de cibercriminosos que vem a realizar ataques à Supply chain direcionados de CI/CD ataques à Supply chain vários meses. O seu malware «Mini Shai-Hulud» é um worm sofisticado destinado ao roubo de credenciais que se propaga através da republicação de versões com backdoor de pacotes aos quais a conta da vítima tem acesso. Já relatámos anteriormente violações que afetaram o Mistral e o TanStack, o Durable Task da Microsoft, o PyTorch Lightning, o Bitwarden CLI e o Intercom, todas elas atribuíveis à mesma ferramenta.

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

Contorno de publicação de confiança

A publicação confiável é um mecanismo introduzido pelo npm para eliminar os tokens de publicação de longa duração dos pipelines de CI/CD, substituindo-os por tokens OIDC de curta duração emitidos pelo GitHub Actions. Foi concebido para ser mais seguro, mas, como demonstram ataques recentes, pode ser contornado se um atacante obtiver acesso a um pipeline de CI/CD através de uma vulnerabilidade ou de um token comprometido.

Descobrimos que a conta do GitHub de um funcionário da Red Hat foi comprometida e utilizada para enviar commits maliciosos e isolados diretamente para vários repositórios, contornando totalmente a revisão de código. Esses commits isolados continham um ficheiro de fluxo de trabalho (ci.yaml) e um script (_index.js).

nome: lançamento
em:
  push:
    ramos: ['*']
tarefas:
  versão:
    executa-se em: ubuntu-latest
    permissões:
      token de identificação: gravação
      conteúdo: leitura
    etapas:
      - utiliza: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
      - utiliza: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6
      - nome: preparar
        executar: bun executar _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/componentes-frontend-traduções, @redhat-cloud-services/tsc-transform-imports, @redhat-cloud-services/tipos, @redhat-cloud-services/componentes-frontend-utilitários"
          WORKFLOW_ID: "ci.yaml"
          SUFIXO_DO_ID_DO_REPOSITÓRIO: "RedHatInsights/frontend-components"

Quando o fluxo de trabalho é executado, instala o Bun e executa _index.js, passando-lhe uma lista de pacotes de destino através do OIDC_PACOTES variável de ambiente. O script utiliza a id-token: escrever autorização para solicitar um token OIDC de curta duração ao GitHub e, em seguida, utiliza esse token para se autenticar diretamente no ponto de extremidade de publicação de confiança do npm e publicar versões com backdoor de todos os pacotes da lista.

Este é o mesmo padrão fundamental observado nos ataques ao TanStack e ao Bitwarden: o próprio pipeline de CI/CD torna-se a superfície de ataque, enquanto a publicação fiável baseada em OIDC — concebida para eliminar tokens de longa duração — se torna um sinal de confiança enganador.

O script de pré-instalação

Cada pacote comprometido declara um script de pré-instalação no seu ficheiro package.json que executa automaticamente o ficheiro index.js do Node.js em cada instalação do npm, antes de qualquer código da aplicação ser executado e antes de o programador ter qualquer indício de que algo está errado.

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

O ficheiro index.js contém uma carga útil de 4,2 MB, oculta por várias camadas de ofuscação.

O que ele rouba

Tal como nos ataques anteriores do Mini Shai-Hulud, a carga maliciosa realiza uma varredura abrangente de credenciais em fornecedores de serviços na nuvem, ambientes de CI/CD e ferramentas de desenvolvimento. No que diz respeito à integração contínua (CI), tem como alvo secrets do GitHub Actions, secrets GITHUB_TOKEN e ACTIONS_RUNTIME_TOKEN. No que diz respeito às credenciais na nuvem, recolhe chaves de acesso e tokens de sessão da AWS, credenciais padrão de aplicações e ficheiros de chaves de contas de serviço do GCP, bem como credenciais de entidades de serviço e tokens de identidade gerida do Azure. Além disso, procura tokens do HashiCorp Vault, tokens de contas de serviço do Kubernetes e ficheiros kubeconfig, tokens de publicação do npm e do PyPI, chaves privadas SSH, credenciais de registos Docker, chaves GPG e quaisquer ficheiros .env que consiga encontrar no sistema de ficheiros.

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 abrangente em toda a sua equipa, a Proteção de Dispositivos Aikido oferece-lhe visibilidade e controlo sobre os pacotes de software instalados nos dispositivos da sua equipa. Abrange extensões de navegador, bibliotecas de código, plug-ins de IDE e dependências de compilação, tudo num único local. Impedir o malware antes que 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 tiver instalado alguma das seguintes versões de pacotes, considere todos secrets de CI, credenciais de nuvem, chaves SSH e tokens npm como comprometidos e atualize-os imediatamente:

  • @redhat-cloud-services/chrome (2.3.1, 2.3.2)
  • @redhat-cloud-services/cliente-de-conformidade (4.0.3, 4.0.4)
  • @redhat-cloud-services/config-manager-client (5.0.4, 5.0.5)
  • @redhat-cloud-services/cliente-de-direitos (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-do-conselheiro (3.8.2)
  • @redhat-cloud-services/componentes-frontend-configuração (6.11.3, 6.11.4)
  • @redhat-cloud-services/utilitários-de-configuração-de-componentes-frontend (4.11.2, 4.11.3)
  • @redhat-cloud-services/componentes-frontend-notificações (6.9.2, 6.9.3)
  • @redhat-cloud-services/correções-de-componentes-frontend (4.9.2, 4.9.3)
  • @redhat-cloud-services/teste-de-componentes-frontend (1.2.1, 1.2.2)
  • @redhat-cloud-services/traduções-de-componentes-frontend (4.4.1, 4.4.2)
  • @redhat-cloud-services/componentes-frontend-utilitários (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/integrações-cliente (6.0.4, 6.0.5)
  • @redhat-cloud-services/clientes-javascript-partilhados (2.0.8, 2.0.9)
  • @redhat-cloud-services/cliente-de-notificações (6.1.4, 6.1.5)
  • @redhat-cloud-services/patch-client (4.0.4, 4.0.5)
  • @redhat-cloud-services/guias-rápidos-para-clientes (4.0.11, 4.0.12)
  • @redhat-cloud-services/rbac-client (9.0.3, 9.0.4)
  • @redhat-cloud-services/correções-cliente (4.0.4, 4.0.5)
  • @redhat-cloud-services/componentes-de-regra (4.7.2, 4.7.3)
  • @redhat-cloud-services/sources-client (3.0.10, 3.0.11)
  • @redhat-cloud-services/cliente-de-inventário-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)
Compartilhar:

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

Assine para receber notícias

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.