Red Hat confirma comprometimento de 32 pacotes npm oficiais

Ataque sofisticado comprometeu 32 pacotes npm oficiais da Red Hat via CI/CD, expondo credenciais e abalando a confiança no ecossistema.

Malware Miasma, variante do worm Shai-Hulud, foi inserido em pacotes legítimos da Red Hat com assinatura SLSA válida.
Destaques
  • Os invasores comprometeram contas de funcionários da Red Hat no GitHub para inserir commits maliciosos nos repositórios oficiais.
  • O malware Miasma coleta tokens de AWS, GCP, Azure, Kubernetes, npm, SSH e Docker, entre outros.
  • O código-fonte do Shai-Hulud foi tornado público, permitindo que qualquer grupo replique o ataque.

A segurança da cadeia de suprimentos de software sofreu um golpe de proporções alarmantes. No dia 1º de junho de 2026, a empresa de segurança StepSecurity identificou que 32 pacotes npm oficiais gerenciados pela Red Hat, dentro do namespace @redhat-cloud-servicescodecode, foram comprometidos por um malware de roubo de credenciais. Não se trata de um ataque de typosquatting ou de pacotes falsos: são 96 versões legítimas, assinadas digitalmente e distribuídas pelo pipeline oficial de CI/CD da própria Red Hat. Juntas, essas versões acumulavam cerca de 117 mil downloads por semana, expondo um ecossistema inteiro a um risco silencioso e devastador.

O ataque que sequestrou a confiança

O que torna este incidente único é a sofisticação do vetor de entrada. Os invasores não se limitaram a publicar pacotes com nomes semelhantes. Eles comprometeram contas de funcionários da Red Hat no GitHub e, a partir delas, inseriram commits maliciosos diretamente nos repositórios oficiais da organização RedHatInsightscodecode. De posse do acesso, os atacantes abusaram dos tokens OIDC do GitHub Actions para obter credenciais de publicação no npm. O resultado? Pacotes adulterados foram publicados com assinatura SLSA (Supply-chain Levels for Software Artifacts) válida — o selo de integridade que deveria justamente atestar que o código veio de uma fonte confiável e não foi violado.

Nome, canal de distribuição, assinatura digital: todos os indicadores que um desenvolvedor usa para confiar em um pacote apontavam que aquele código era seguro. Era, na verdade, a isca perfeita.

O malware Miasma e a campanha Shai-Hulud

O malware embutido nos pacotes da Red Hat foi batizado de Miasma: The Spreading Blight e é considerado uma subvariante do worm Shai-Hulud, uma ameaça que assola o registro npm desde setembro de 2025. A campanha Shai-Hulud, conduzida pelo grupo de ataque TeamPCP, já havia escalado de forma consistente: cerca de 200 pacotes na primeira onda, 800 na segunda, e avançou para comprometer alvos de alto perfil como Axios (março de 2026, via contas sequestradas pelo grupo norte-coreano Sapphire Sleet), Bitwarden e SAP (abril), e TanStack, Mistral AI e OpenAI (maio).

O ponto de inflexão veio em 12 de maio de 2026, quando o TeamPCP tornou público o código-fonte do Shai-Hulud em um repositório Git e abriu um concurso no BreachForums com prêmio de 1000 dólares para quem executasse o maior ataque à cadeia de suprimentos. Com o código agora aberto, o ataque à Red Hat — ocorrido em 1º de junho — pode ter sido obra do grupo original ou de imitadores. A mecânica, porém, é a mesma: sequestrar a infraestrutura de CI/CD legítima e transformar a própria confiança em arma.

O payload de 4,2 MB e a coleta de credenciais

A porta de entrada do malware é um gancho preinstallcodecode inserido no package.jsoncodecode. No momento em que um desenvolvedor executa npm installcodecode, antes mesmo de qualquer código de aplicação ser carregado, um payload ofuscado de 4,2 MB é ativado. Um arquivo desse tamanho em uma biblioteca típica já é um forte sinal de anomalia, mas pipelines automatizados dificilmente param para inspecionar esse tipo de métrica.

O payload passa por três camadas de ofuscação, baixa um runtime Bun e executa o corpo principal do malware. A coleta de dados é abrangente e cirúrgica:

AlvoDados coletados
GitHub ActionsTokens, runtime tokens, tokens de requisição OIDC, tokens npm
AWSAccess keys, secret keys, session tokens, arquivos de credenciais
GCPCredenciais padrão, chaves de service account
AzureTokens de service principal, tokens Managed ID
KubernetesTokens de service account, arquivos kubeconfig
HashiCorp VaultTokens Vault, endereço Vault
npm / PyPITokens de publicação (.npmrc, .pypirc)
SSHChaves privadas (RSA, Ed25519 etc.)
DockerCredenciais de registro (config.json)
GPGAnéis de chave (.gnupg/)
Variáveis de ambienteArquivos .env no sistema de arquivos

Uma das técnicas mais engenhosas do malware é a leitura direta da memória do processo Runner.Workercodecode do GitHub Actions, acessando /proc/<pid>/memcodecode para extrair secrets que teoricamente estariam mascarados nos logs, mas que na memória do processo aparecem em texto puro.

Um worm que se auto-replica

A característica mais preocupante do Miasma é sua capacidade de auto-propagação. De posse dos tokens npm roubados, o malware publica novas versões com backdoor em outros pacotes aos quais a vítima tenha permissão de publicação. Como os tokens npm podem estar configurados com autenticação de dois fatores bypassada (via tokens de granularidade fina), até contas com 2FA ativo são vulneráveis. Basta um desenvolvedor ser infectado para que todos os pacotes sob sua responsabilidade se tornem novas fontes de infecção — sem qualquer ação adicional do atacante.

Além disso, o malware usa o GITHUB_TOKENcodecode roubado para fazer data exfiltration via GitHub Contents API, cometendo dados codificados em base64 diretamente nos repositórios da vítima. Como api.github.comcodecode raramente é bloqueado por políticas de rede em ambientes de CI, essa comunicação se camufla como tráfego legítimo de git.

Persistência nas ferramentas do dia a dia

Remover os pacotes comprometidos não encerra o ataque. O malware também injeta hooks no arquivo de configuração do Claude Code (~/.claude/settings.jsoncodecode) e no tasks.jsoncodecode do VS Code (.vscode/tasks.jsoncodecode). No caso do Claude Code, um hook SessionStartcodecode é adicionado, fazendo com que o código malicioso seja executado toda vez que o assistente é iniciado. No VS Code, um trigger folderOpencodecode dispara o código sempre que o desenvolvedor abre a pasta do projeto. Esses arquivos de configuração raramente são varridos por ferramentas de segurança, e a simples desinstalação do pacote npm não os remove.

Os sinais estavam lá

Dados da empresa de monitoramento de dark web WhiteIntel indicam que credenciais e cookies de sessão do GitHub de funcionários da Red Hat já haviam aparecido em logs de infostealers em 13 de abril e 15 de maio de 2026. O intervalo entre o vazamento e o uso efetivo no ataque foi de menos de 48 horas — tempo insuficiente para que equipes de segurança concluíssem revisões semanais. Esse gap de reação é um dos fatores que tornam a cadeia de suprimentos tão vulnerável.

A resposta da Red Hat

A Red Hat publicou o boletim de segurança RHSB-2026-006 e removeu as versões comprometidas do registro npm. A empresa afirma que os pacotes afetados são bibliotecas front-end e que, até o momento da investigação, nenhuma versão contaminada foi incluída em produtos finais da companhia, graças ao versionamento fixo utilizado nos builds. O ataque ocorreu em duas ondas: a primeira entre 10:53 e 10:53 UTC, e a segunda entre 13:44 e 13:46 UTC. A maior parte das versões maliciosas foi retirada no mesmo dia.

Para quem instalou as versões comprometidas, a recomendação é tratar todos os tokens e credenciais de GitHub, npm e nuvem como comprometidos e realizar a rotação imediata. Contudo, como o malware possui um mecanismo de “dead man’s switch” que pode executar ações destrutivas ao detectar a revogação de tokens, especialistas sugerem isolar e preservar a imagem do ambiente antes de qualquer rotação.

O modelo de confiança do npm está em xeque

A sequência de ataques em 2026 — Axios em março, Bitwarden e SAP em abril, TanStack, Mistral AI e OpenAI em maio, e agora Red Hat em junho — revela um padrão inquietante. Não são mais ataques de typosquatting ou dependência confusa, que um desenvolvedor experiente consegue detectar com ferramentas básicas. São contas legítimas, pipelines legítimos, assinaturas legítimas. A própria infraestrutura de confiança — nomes, downloads, SLSA — foi virada contra os desenvolvedores.

O que o caso da Red Hat demonstra é que confiar em um pacote porque ele é oficial, assinado e amplamente baixado já não é suficiente. O código-fonte do Shai-Hulud está disponível publicamente. Qualquer grupo com acesso a credenciais roubadas pode replicar o ataque. O ecossistema npm, construído sobre a premissa de que a identidade e a reputação são garantias, agora enfrenta um momento em que ambas podem ser sequestradas em horas.

Para o desenvolvedor brasileiro, a lição é prática: nenhum pacote, por mais oficial que pareça, está imune a uma injeção hostil via CI/CD. A única defesa real no curto prazo é a combinação de monitoramento contínuo de dependências, rotação frequente de credenciais e, principalmente, a desconfiação ativa — questionar até mesmo o que vem assinado com o selo de segurança mais confiável.

Leia também

Compartilhar este artigo
Canal oficial de conteúdo do portal Overcentral. A Equipe Central produz notícias, guias e análises com foco em credibilidade e relevância, garantindo que você receba o melhor conteúdo editorial diariamente.