Mais de 30 pacotes do npm dentro do namespace `@redhat-cloud-services` da Red Hat foram comprometidos em um ataque à cadeia de suprimentos que distribuiu uma nova variante do malware Shai-Hulud, voltada ao roubo de credenciais, e batizada de “Miasma”.
O incidente foi descoberto pelas empresas de segurança Aikido e OX Security, que encontraram dezenas de versões de pacotes com backdoor e projetadas para roubar credenciais de desenvolvedores, segredos de cloud, chaves SSH, tokens de CI/CD e outras informações sensíveis. Segundo a Aikido, os pacotes comprometidos somam cerca de 117.000 downloads por semana.
Em comunicado, a Red Hat afirmou que removeu os pacotes afetados assim que tomou conhecimento do caso e que a violação ficou restrita a ferramentas internas de desenvolvimento.
“A Red Hat está ciente de relatórios de segurança sobre determinados pacotes npm dentro do nosso ecossistema de ferramentas de desenvolvimento.
“Os pacotes são estritamente limitados ao desenvolvimento interno, e o código malicioso nunca foi publicado para consumo de clientes por meio do sistema console.redhat.com.
Embora a investigação continue, não identificamos qualquer impacto em ambientes de clientes, parceiros ou em sistemas de produção da Red Hat.”
A empresa afirma que segue investigando o incidente, mas não respondeu às perguntas sobre como a conta foi comprometida.
De acordo com a Aikido, os invasores teriam comprometido a conta GitHub de um funcionário da Red Hat e a usado para enviar commits maliciosos diretamente a vários repositórios. Esses commits adicionaram um fluxo de trabalho do GitHub Actions e um script que abusava do mecanismo de publicação do npm para liberar pacotes com backdoor.
“Quando o fluxo de trabalho é executado, ele instala o Bun e executa `_index.js`, passando uma lista de pacotes-alvo por meio da variável de ambiente `OIDC_PACKAGES`”, explica a Aikido.
“O script usa a permissão `id-token: write` para solicitar um token OIDC de curta duração ao GitHub e, em seguida, usa esse token para se autenticar diretamente no endpoint de publicação confiável do npm e publicar versões com backdoor de cada pacote da lista.”
Esses pacotes comprometidos continham um script malicioso de `preinstall`, que executava automaticamente um arquivo `index.js` fortemente ofuscado quando os desenvolvedores instalavam os pacotes. Segundo a Aikido, o payload `index.js` tinha cerca de 4,2 MB e era usado para roubar segredos do GitHub Actions, credenciais da AWS, credenciais do Google Cloud, credenciais de principal de serviço do Azure, tokens do HashiCorp Vault, tokens de conta de serviço do Kubernetes, tokens de publicação do npm e do PyPI, chaves SSH, credenciais do Docker, chaves GPG e arquivos `.env`.
A Aikido informa que 32 pacotes e 96 versões de pacotes foram afetados pelo comprometimento, incluindo várias bibliotecas de cliente mantidas sob o namespace `@redhat-cloud-services`. Entre os pacotes afetados estão:
- @redhat-cloud-services/vulnerabilities-client
- @redhat-cloud-services/tsc-transform-imports
- @redhat-cloud-services/topological-inventory-client
- @redhat-cloud-services/sources-client
- @redhat-cloud-services/rule-components
- @redhat-cloud-services/remediations-client
- @redhat-cloud-services/rbac-client
Segundo análises da Aikido Security, JFrog, Microsoft, OX Security, SafeDep, StepSecurity e Wiz, os pacotes npm contêm um hook ofuscado de preinstall criado para coletar segredos do GitHub Actions, tokens do npm, credenciais de cloud, dados de Kubernetes e Vault, chaves SSH, credenciais do Git e outros arquivos sensíveis.
Assim como observado em ondas anteriores do Mini Shai-Hulud, o malware também inclui lógica de exfiltração criptografada, que envia os dados para “api.anthropic[.]com:443/v1/api”, e usa o GitHub como mecanismo alternativo.
Isso indica que o atacante tentou tanto roubar credenciais quanto transformá-las em arma para continuar contaminando a cadeia de suprimentos de software.
“Ele grava o contêiner criptografado por meio da API do GitHub”, disse a Socket.
“A mensagem do commit pode incluir: IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner:<token>.”
Outra etapa relevante do malware é evitar a execução em sistemas com idioma russo, um padrão também observado nas campanhas da cadeia de suprimentos do GlassWorm.
“No npm, o payload chama os endpoints de troca de token OIDC e whoami, recompila um tarball (updateTarball, package-updated.tgz) e assina o artefato por meio do Sigstore”, informou a SafeDep.
“As credenciais roubadas são exfiltradas para repositórios públicos do GitHub criados pelo atacante, todos com a descrição Miasma: The Spreading Blight.”
O primeiro commit contendo a string “Miasma: The Spreading Blight” apareceu em 29 de maio de 2026, segundo a OX Security, o que sugere que essa variante estava ativa desde então ou que o threat actor começou a testá-la por volta dessa data. No momento da publicação, 309 repositórios GitHub haviam sido comprometidos pela campanha.
No caso do GitHub, o malware lista os repositórios nos quais o token tem permissão de escrita, lê action.yml/action.yaml via GraphQL e faz commit de um workflow por meio da mutation createCommitOnBranch, de modo que a alteração pareça legítima, assinada e verificada.
Entre as demais ações executadas pelo malware estão:
- Tentar elevar privilégios iniciando um container que faz bind mount de /etc/sudoers.d do host e concede ao runner de CI acesso a sudo sem senha
- Verificar a presença de proteções de endpoint da CrowdStrike, SentinelOne, Carbon Black e StepSecurity Harden-Runner antes de iniciar as ações maliciosas
- Estabelecer persistência ao injetar um hook SessionStart no Anthropic Claude Code e um arquivo tasks.json com “runOn”: “folderOpen” em projetos do Microsoft Visual Studio Code, para que o malware seja executado automaticamente em cada sessão
“Uma das principais mudanças desta nova variante é a adição de novos coletores de dados focados em identidades em cloud”, disseram pesquisadores da Wiz.
“Especificamente, foram adicionados coletores para identidades em GCP e Azure que coletam todas as identidades às quais a máquina infectada tem acesso.
Enquanto versões anteriores do malware se concentravam principalmente em extrair segredos desses ambientes, esta variante sugere um foco maior do atacante em obter e explorar acesso direto à cloud.”
Diferentemente de versões anteriores, o malware também foi encontrado gerando um payload criptografado de forma única para cada infecção, o que dificulta significativamente a detecção e o rastreamento de versões.
As evidências indicam que o comprometimento da conta de um funcionário da Red Hat no GitHub teria sido o ponto de partida usado para injetar o payload nesses pacotes. Segundo a apuração, a conta comprometida teria enviado commits órfãos maliciosos para dois repositórios RedHatInsights, burlando a revisão de código.
A recomendação é isolar os hosts que instalaram as versões afetadas, remover as versões maliciosas, rotacionar as credenciais expostas, verificar sinais de atividade suspeita no GitHub ou no npm, auditar o ambiente em busca de artefatos de persistência que envolvam mudanças em arquivos de configuração (~/.claude/settings.json, .vscode/tasks.json, .github/workflows/codeql.yml, .github/setup.js) e reforçar os controles de acesso.
“Como o malware inclui execução em segundo plano e possíveis mecanismos de persistência em ferramentas de desenvolvimento, desinstalar o pacote npm ou apagar o node_modules não deve ser considerado limpeza suficiente”, explicou a Socket.
“Para sistemas de CI/CD, é preciso suspender as execuções de workflow afetadas, invalidar os artefatos de build produzidos durante a janela de exposição e revisar se algum release, imagem de container, pacote npm ou artefato de implantação foi criado depois da instalação do pacote malicioso.”
Publicidade
Conheça a Solyd One, e tenha acesso a todos os cursos de segurança ofensiva da Solyd, todas as certificações práticas, incluindo a SYCP, 2 CTFs anuais com prêmios de até 30 mil reais, dezenas de laboratórios realísticos, suporte, comunidade e muito mais. Saiba mais...