O worm Miasma atingiu os pacotes npm da Red Hat: detectar, girar, substituir
Um worm npm autopropagável atingiu 7 pacotes @redhat-cloud-services em 29 de maio de 2026. Ele esconde a persistência dentro do Claude Code e do VS Code. Um script de detecção de 60 segundos, uma passagem de rotação e a correção estrutural.
Em 1º de junho de 2026, os pesquisadores detectaram um worm npm autopropagador que estava ativo desde 29 de maio.
Seu cartão de visita é uma mensagem de commit: “Miasma: The Spreading Blight”. Um Red Hat comprometido
A conta do funcionário do GitHub enviou commits órfãos maliciosos diretamente para o RedHatInsights
repositórios, ignorando a revisão de código e sete @redhat-cloud-services pacotes
enviou uma carga útil de roubo de credenciais para todos que os instalaram.
Duas coisas fazem com que o Miasma valha um livro novo. Ele funciona em um preinstall gancho, então
incêndios antes postinstall e até mesmo uma instalação cancelada pode desarmá-lo. E isso planta
persistência dentro de suas ferramentas de desenvolvedor: um gancho SessionStart no Claude Code e um
tasks.json com "runOn": "folderOpen" em projetos do VS Code. Excluindo
node_modules não faz nada com eles. Aqui está o manual de detecção, rotação e substituição.
Os sete pacotes comprometidos
Cada um está sob o @redhat-cloud-services escopo:
vulnerabilities-clienttsc-transform-importstopological-inventory-clientsources-clientrule-componentsremediations-clientrbac-client
Etapa 1: detectar em menos de 60 segundos
Três sinais: um pacote comprometido na sua árvore, um artefato de persistência no Claude Code ou VS
Codifique e exfilie o tráfego disfarçado de chamadas para api.anthropic[.]com:443/v1/api. Corre
isso de qualquer host com npm e git:
Qualquer acerto significa que você pula para a etapa 2. O worm termina a colheita antes de você terminar de ler o consultivo, portanto, um único sinal é suficiente para começar a girar.
O truque da persistência é a parte que incomoda as equipes que limpam rápido demais. Você pode remover o
pacote ruim, reconstruir node_modules, e ainda tem um gancho SessionStart em
~/.claude/settings.json que executa novamente a carga útil na próxima vez que você abrir Claude
Código. Auditoria ~/.claude/settings.json, .vscode/tasks.json, e
.github/workflows manualmente antes de chamar um host limpo.
Etapa 2: confirme a janela de publicação com a API npm
Antes de fixar uma versão “segura”, verifique quando ela foi publicada. As versões maliciosas chegaram
29 de maio, portanto, qualquer lançamento datado desse dia ou posterior é suspeito. O endpoint botoi npm retorna o
carimbo de data / hora modificado e lista de mantenedores sem um npm install:
UMA modified carimbo de data/hora em ou depois 2026-05-29 significa fixar no último conhecido
bom lançamento publicado antes dessa data, não o mais recente. A forma GET é armazenada em cache no CDN, então você
pode incorporar isso em uma verificação de aprovação de dependência que é executada em cada solicitação pull.
Etapa 3: gire e esfregue os registros
Miasma coleta segredos do GitHub Actions, tokens npm, credenciais de nuvem, Kubernetes e Vault material, chaves SSH e credenciais Git. Gire nesta ordem: tokens npm interrompem novas publicações, Os PATs do GitHub interrompem as gravações do repositório, as chaves IAM da nuvem interrompem a exfiltração de dados e, em seguida, o Vault e o SSH. Não investigue primeiro; gire e depois investigue.
A carga despeja esses segredos em logs que fluem para o Datadog, Sentry e sua emissão de tickets sistema. Canalize campos de alto risco através de um detector secreto e feche a falha antes que cheguem a um índice consultável:
Etapa 4: bloquear a próxima onda com um guarda CI
O Miasma precisa de três coisas no seu runner: uma versão comprometida, um gancho de ciclo de vida que seja executado e um arquivo de persistência que ele pode gravar. Quebre qualquer um. Esta verificação do GitHub Actions desativa o ciclo de vida scripts para o trabalho, falha nos marcadores de persistência do Miasma, sinaliza pacotes de escopo do Red Hat e requer proveniência assinada em dependências de tempo de execução:
Manter ignore-scripts ativado por padrão e manter uma pequena lista de permissões para pacotes que
construir legitimamente (TypeScript, esbuild, Sharp). Um gancho de pré-instalação que nunca é executado não pode ser colhido
qualquer coisa.
Etapa 5: diminuir a superfície que pode hospedar um verme
Os pacotes envenenados com mais frequência nas ondas de 2026 envolvem uma única chamada de rede: clientes API, auxiliares de validação e pequenos utilitários. Cada um é candidato a ser excluído e substituído por um chamada HTTPS revogável que não executa código local.
| Categoria | Dependência típica de npm | Substituição HTTP | Raio de explosão se violado |
|---|---|---|---|
| Verificação secreta e de PII | secretlint, detector pii | /v1/pii/detect |
Girar uma chave de API |
| Metadados do pacote | wrappers de cliente de registro npm | /v1/npm/{package} |
Girar uma chave de API |
| Validação de e-mail | validador, validador de e-mail profundo | /v1/email/validate |
Girar uma chave de API |
| Verificação de violação | pacotes de clientes hibp | /v1/breach/check |
Girar uma chave de API |
Principais conclusões
-
Verifique os arquivos de persistência da ferramenta de desenvolvimento. O miasma se esconde
~/.claude/settings.jsone.vscode/tasks.json. Removendo o pacote não remove o gancho. -
Fixar por data de publicação. Qualquer coisa nos sete pacotes com data igual ou posterior
29/05/2026 é suspeito. Usar
/v1/npm/{package}para confirmar. - Gire antes de investigar. tokens npm, GitHub PATs, chaves de nuvem, Vault, SSH. Exfil é concluído em segundos.
- Desative os scripts de ciclo de vida por padrão. Um gancho de pré-instalação que nunca é executado não pode roubar qualquer coisa.
- Encolher a superfície. Substitua pacotes npm de chamada única por HTTP revogável pontos finais. Uma chave violada morre em uma solicitação.
Exposições de Botoi /v1/npm/{package}, /v1/pii/detect,
/v1/breach/checke cerca de 200 outros endpoints de propósito único atrás de uma chave de API
com 5 req/min grátis. Conecte-os ao seu runbook de incidentes ou conecte o
Servidor MCP para Cláudio
Codifique para que seu assistente execute o script de detecção para você. Comece do
documentos interativos.
FAQ
- O que é o ataque à cadeia de abastecimento do Miasma?
- Miasma é um worm npm de auto-propagação descoberto em 1º de junho de 2026, com seu primeiro commit "Miasma: The Spreading Blight" datado de 29 de maio de 2026. Uma conta GitHub de funcionário da Red Hat comprometida enviou commits órfãos maliciosos para repositórios RedHatInsights, ignorando a revisão de código, e sete pacotes npm @redhat-cloud-services foram publicados com um gancho de pré-instalação ofuscado que coleta credenciais e se espalha para novos hospedeiros.
- Quais pacotes foram comprometidos?
- Sete pacotes sob o escopo @redhat-cloud-services: vulnerabilidades-client, tsc-transform-imports, topological-inventory-client, fontes-client, regras-componentes, remediations-client e rbac-client. Se o seu arquivo de bloqueio obteve algum desses itens após 29 de maio de 2026, trate o host como comprometido e alterne todas as credenciais tocadas.
- Qual a diferença entre o Miasma e os worms npm anteriores?
- O Miasma é executado em um gancho de pré-instalação, por isso é acionado antes da pós-instalação e até mesmo uma instalação cancelada pode acioná-lo, além de plantar persistência nas ferramentas do desenvolvedor, não apenas no CI. Ele injeta um gancho SessionStart no Claude Code, grava um task.json com runOn folderOpen em projetos do VS Code e gera uma carga útil criptografada exclusivamente por infecção para evitar a verificação de assinatura. Excluir node_modules não o remove.
- O que o worm rouba e para onde o envia?
- Segredos do GitHub Actions, tokens npm, credenciais de nuvem, material Kubernetes e Vault, chaves SSH e credenciais Git. Ele disfarça a exfiltração como tráfego para api.anthropic[.]com na porta 443 e recorre ao GitHub como um canal secundário, portanto, a filtragem de saída em domínios desconhecidos por si só não irá detectá-la.
- Como as APIs HTTP de propósito único reduzem esse risco?
- Um pacote com um gancho de pré-instalação executa código arbitrário em cada máquina que o instala. Uma chamada HTTPS para uma API de propósito único não executa nada localmente e é controlada por uma chave revogável. Se o provedor de API for violado, você alterna uma chave. Se um pacote da sua árvore for violado, o malware já foi executado. A troca tem um pequeno custo de latência para um pequeno raio de explosão e revogação instantânea.
Comece a construir com botoi
150+ endpoints de API para consultas, processamento de texto, geração de imagens e utilitários para desenvolvedores. Plano gratuito, sem cartão de crédito.