O que aconteceu com os pacotes npm da Red Hat
32 pacotes oficiais foram infectados sem que os desenvolvedores percebessem
Em 1 de junho de 2026, pesquisadores das empresas Aikido Security e OX Security identificaram que pelo menos 32 pacotes do namespace oficial @redhat-cloud-services no registro npm continham código malicioso. No total, 96 versões diferentes foram comprometidas. Esses pacotes somavam cerca de 117.000 downloads semanais, o que significa que a janela de exposicao pode ter afetado dezenas de milhares de ambientes de desenvolvimento ao redor do mundo. A Red Hat confirmou o incidente, removeu os pacotes e afirmou que não identificou impacto em sistemas de clientes ou em produção interna.
O que é o ataque Miasma e de onde veio
Uma variante do worm Mini Shai-Hulud com capacidade de auto-propagacao
O malware inserido nos pacotes e uma variante do worm Mini Shai-Hulud, batizada pelos pesquisadores de "Miasma: The Spreading Blight". A campanha foi atribuída ao grupo TeamPCP, que chegou a disponibilizar o framework do ataque como código aberto, o que amplia consideravelmente o risco de campanhas similares por outros agentes de ameaca. O worm não apenas rouba dados: ele e projetado para se auto-propagar para repositórios downstream, infectando projetos que dependem dos pacotes comprometidos.
Como o malware entrou nos pacotes oficiais
O pipeline de CI/CD foi sequestrado, não uma conta individual do npm
O vetor de entrada foi a comprometacao de uma conta GitHub de um funcionário da Red Hat. Com esse acesso, os atacantes injetaram commits orfaos maliciosos em dois repositórios do namespace RedHatInsights, contornando o processo de revisao de código. A publicação dos pacotes infectados foi feita atraves de tokens OIDC do GitHub Actions, o que significa que o próprio pipeline de integração contínua foi sequestrado. Cada pacote comprometido continha um hook de pre-instalação em package.json que executava automaticamente um payload ofuscado de 4,2 MB com múltiplas camadas de descriptografia (arrays numéricos, transformacoes ROT e blocos AES-128-GCM).
O que o Miasma rouba da sua maquina
Uma varredura agressiva por qualquer credencial acessível ao desenvolvedor
O worm realiza uma varredura sistémica pela maquina do desenvolvedor e por serviços conectados. Na categoria de CI/CD, captura GITHUB_TOKEN e ACTIONS_RUNTIME_TOKEN. Em cloud, vai atras de credenciais da GCP, Azure e AWS, incluindo chaves e tokens temporários. Na infraestrutura, busca tokens Vault, contas Kubernetes e arquivos kubeconfig. No ambiente de desenvolvimento, rouba chaves SSH, tokens npm e PyPI, chaves GPG e arquivos .env. Em gerenciadores de segredo, tenta acessar AWS Secrets Manager, Azure Key Vault e GCP Secret Manager. Os dados são exfiltrados para repositórios GitHub públicos criados pelo atacante sob a conta da própria vitima, com a descrição "Miasma: The Spreading Blight".
Como o malware se esconde e persiste
O tráfego malicioso se mistura com chamadas legítimas de ferramentas de IA
O Miasma usa duas técnicas principais de camuflagem. Primeiro, o tráfego de exfiltracao e disfarado como chamadas a api.anthropic.com:443/v1/api, misturando-se ao tráfego normal de equipes que utilizam serviços de IA. Segundo, o malware verifica a presença de soluções de segurança como CrowdStrike, SentinelOne e Carbon Black antes de executar, e evita sistemas configurados em russo. Para persistência, injeta hooks em ferramentas de IA para desenvolvedores, incluindo Claude Code, Códex, Gemini e GitHub Copilot, além de criar tarefas no VS Code que re-executam o código malicioso ao abrir qualquer projeto. No Linux, instala um serviço chamado kitty-monitor.service; no macOS, um plist com.user.kitty-monitor.plist.
Quais outras organizações ja foram afetadas
A mesma família de malwares ja comprometeu Bitwarden, SAP, OpenAI e outros
O incidente com a Red Hat não foi isolado. A mesma família de malwares ja foi encontrada em pacotes mantidos por organizações como Bitwarden, SAP, Mistral, TanStack, OpenAI e o próprio GitHub. Esse padrão indica uma campanha coordenada e persistente contra a cadeia de suprimentos de software, com foco em organizações que publicam pacotes muito baixados por desenvolvedores. O framework de ataque open-sourced pelo TeamPCP significa que qualquer ator de ameaca pode replicar a campanha com relativa facilidade.
Como identificar se sua maquina foi comprometida
Verifique esses arquivos e serviços antes de revogar qualquer credencial
Se você ou sua equipe instalou qualquer versão dos pacotes @redhat-cloud-services a partir de 1 de junho de 2026, verifique a presença desses indicadores antes de tomar qualquer acao: no Linux, cheque a existência do serviço kitty-monitor.service com systemctl status kitty-monitor.service; no macOS, verifique o plist em ~/Library/LaunchAgents/com.user.kitty-monitor.plist; em qualquer sistema, verifique se ~/.claude/settings.json foi modificado, se .vscode/tasks.json contem tarefas desconhecidas e se .github/workflows/codeql.yml foi alterado. Atenção importante: o malware pode apagar o diretório home do usuário se um token GitHub for revogado antes de remover a persistência. Remova a persistência primeiro, revogue as credenciais depois.
O que fazer se você instalou os pacotes afetados
Trate todas as credenciais como comprometidas e siga esta ordem de acoes
A primeira acao e isolar as maquinas que executaram npm install com os pacotes afetados, desconectando-as da rede enquanto a investigacao acontece. Em seguida, remova os mecanismos de persistência descritos na secao anterior antes de qualquer revogacao de credenciais. Somente então rotacione todas as credenciais de CI/CD, cloud, SSH e npm. Audite artefatos de build criados durante a janela de exposicao e revise os repositórios GitHub da organização para commits não autorizados, especialmente via GraphQL. A análise foi conduzida em conjunto por Aikido Security, JFrog, Microsoft, OX Security, Socket, StepSecurity e Wiz.
Como se proteger de ataques a cadeia de suprimentos npm
Auditoria de dependências e monitoramento de hooks são o primeiro passo
Algumas práticas reduzem significativamente a superfície de ataque. Audite periodicamente os scripts de pre e pos-instalação dos seus pacotes com npm install --ignore-scripts seguido de uma revisao manual. Use ferramentas como socket.dev ou similares para monitorar comportamentos suspeitos em novas versões de dependências. Adote lockfiles rigorosos (package-lock.json ou yarn.lock) e configure alertas para atualizações automáticas de versão. Em pipelines de CI/CD, use tokens com o menor privilegio possível e com escopo restrito por repositório. Por fim, considere ambientes de build isolados que não tenham acesso a credenciais de produção.
O que esse incidente revela sobre a segurança do ecossistema
Quando ate organizações de grande porte são comprometidas, nenhum pacote e automaticamente confiável
O ataque Miasma deixa uma licao dura: a reputacao de uma organização não e garantia de segurança dos seus pacotes. A Red Hat, a Bitwarden, a SAP e a OpenAI são nomes respeitados, e ainda assim tiveram pacotes comprometidos pela mesma família de malwares. O ponto de falha não foi o código em si, mas o processo humano ao redor dele: uma conta GitHub comprometida foi suficiente para sequestrar um pipeline inteiro. Para desenvolvedores e times de segurança, a mensagem e clara: dependências devem ser tratadas como código externo não confiável, auditado antes de cada nova versão que entra no seu projeto.
Dados do ataque Miasma (1/jun/2026)
Pacotes comprometidos
32 pacotes no namespace @redhat-cloud-services
Versoes afetadas
96 versoes distribuidas entre os 32 pacotes
Downloads semanais
~117.000 downloads por semana na janela de exposicao
Data do ataque
1 de junho de 2026
Malware identificado
Mini Shai-Hulud (variante Miasma: The Spreading Blight)
Origem do ataque
Conta GitHub de funcionario Red Hat comprometida
Vetor de publicacao
Tokens OIDC do GitHub Actions (pipeline CI/CD sequestrado)
Analistas
Aikido Security, JFrog, Microsoft, OX Security, Socket, StepSecurity, Wiz
O que o Miasma rouba
CI/CD
GITHUB_TOKEN, ACTIONS_RUNTIME_TOKEN
Cloud AWS
Chaves de acesso, tokens temporarios, credenciais IAM
Cloud GCP
Credenciais de conta de servico, tokens de acesso
Cloud Azure
Service principal credentials, tokens de acesso
Infraestrutura
Tokens Vault, contas Kubernetes, arquivos kubeconfig
Desenvolvimento
Chaves SSH, tokens npm e PyPI, chaves GPG, arquivos .env
Gerenciadores de segredo
AWS Secrets Manager, Azure Key Vault, GCP Secret Manager
Destino da exfiltracao
Repositorios GitHub publicos criados na conta da vitima
Como o ataque funcionou (tecnicamente)
Passo 1
Atacantes comprometem conta GitHub de funcionario Red Hat
Passo 2
Injetam commits orfaos maliciosos em repositorios RedHatInsights
Passo 3
Revisao de codigo e contornada pelos commits orfaos
Passo 4
Pipeline GitHub Actions publica versoes infectadas no npm via OIDC
Passo 5
Developer faz npm install do pacote e hook pre-install executa o payload
Passo 6
Payload ofuscado (4,2 MB, AES-128-GCM) descriptografa e executa
Passo 7
Credenciais coletadas e exfiltradas via trafego camuflado como api.anthropic.com
Passo 8
Worm injeta persistencia em ferramentas de IA e VS Code
Mecanismos de evasao do Miasma
Anti-AV
Verifica presenca de CrowdStrike, SentinelOne e Carbon Black antes de executar
Anti-sandbox
Evita sistemas configurados em russo (padrao de campanhas GlassWorm)
Polimorfismo
Cada infeccao gera payload com criptografia unica, dificultando rastreamento
Camuflagem de rede
Trafego exfiltrado simula chamadas a api.anthropic.com:443/v1/api
Ofuscacao em camadas
Arrays numericos + transformacoes ROT + blocos AES-128-GCM
Persistencia IA
Hooks em Claude Code, Codex, Gemini e GitHub Copilot
Persistencia Linux
Servico kitty-monitor.service
Persistencia macOS
Plist com.user.kitty-monitor.plist
Indicadores de comprometimento (verificar antes de revogar credenciais)
Linux
systemctl status kitty-monitor.service (nao deve existir)
macOS
~/Library/LaunchAgents/com.user.kitty-monitor.plist (nao deve existir)
Claude Code
~/.claude/settings.json modificado recentemente
VS Code
.vscode/tasks.json com tarefas desconhecidas
GitHub Actions
.github/workflows/codeql.yml alterado sem autorizacao
GitHub repos
Repositorios publicos criados com descricao 'Miasma: The Spreading Blight'
ATENCAO
Remova a persistencia ANTES de revogar tokens - risco de apagar diretorio home
O que fazer agora (em ordem)
1. Isolar
Desconecte da rede maquinas que executaram npm install dos pacotes afetados
2. Checar persistencia
Verifique indicadores de comprometimento (ver bloco anterior)
3. Remover persistencia
Remova servicos e hooks maliciosos ANTES de revogar credenciais
4. Revogar credenciais
Rotacione CI/CD, cloud, SSH, npm - trate tudo como comprometido
5. Auditar builds
Revise artefatos de build criados durante a janela de exposicao
6. Auditar GitHub
Verifique commits nao autorizados nos repositorios da organizacao
7. Reportar
Notifique a Red Hat e as empresas de seguranca que conduziram a analise
Fontes verificadas
O que desenvolvedores estao dizendo
Rotacionei todas as credenciais da equipe assim que soube do ataque. O checklist de indicadores de comprometimento foi essencial para agir na ordem certa e nao perder dados.
O que mais me preocupa e que o trafego foi camuflado como chamada a Anthropic. Nossa ferramenta de monitoramento nao teria pego. Temos que repensar como auditamos dependencias.
Esse caso mostrou que npm install --ignore-scripts deveria ser padrao em todo pipeline. A maioria dos pacotes legitimos nao precisa de hooks de pre-instalacao.
Comentários
Deixar um comentárioVocê precisa ter uma conta no CuritibaBlog para comentar.