Pular para o conteúdo principal
Fechar
Segurança

Miasma e IronWorm: Quando a Supply Chain Aprende a Infectar Seu Agente de IA

Gabriel Ferraresi· CEO | Tech8627 de junho de 20266 min
segurancasupply-chainianpmagentes

Abrir um repositório no Claude Code pode executar um backdoor. Sem npm install. Sem click. Sem aviso. A supply chain aprendeu a reescrever as instruções do seu agente de IA — e duas worms em junho de 2026 mudaram a superfície de ataque para sempre. Nós analisamos Miasma e IronWorm em detalhe técnico, e o quadro é claro: a camada de instruções do agente de IA é a nova superfície de ataque.

Miasma: a worm que infecta o agente, não só o código

O Miasma operou em três ondas coordenadas em junho de 2026, cada uma mais sofisticada que a anterior.

Wave 1 — 1 de junho: 32 pacotes via preinstall hook

Segundo a Wiz Research e o Microsoft Defender, 32 pacotes sob o escopo @redhat-cloud-services foram comprometidos via conta GitHub de funcionário Red Hat. O atacante fez push de orphan commits (sem parents, só workflow + carregador de carga) e deletou o branch. A proveniência aponta para refs/heads/oidc-2530ec68 — branch que já retorna 404. O commit sobrevive só porque Git mantém objetos sem referência.

Wave 2 — 3-4 de junho: 57 pacotes, 286+ versões, Phantom Gyp

Segundo o StepSecurity e o Snyk (classificação: crítica), 57 pacotes npm foram comprometidos em 286+ versões maliciosas em menos de 2 horas. A técnica inédita: Phantom Gyp. Em vez de preinstall/postinstall no package.json — onde toda ferramenta de segurança olha — o malware coloca um binding.gyp de 157 bytes na raiz do pacote. Quando o npm vê binding.gyp sem binário pré-compilado, ele executa node-gyp rebuild automaticamente. O mecanismo: <!(node index.js > /dev/null 2>&1 && echo stub.c) — substituição de comandos do gyp roda o payload silenciosamente. Scanners que só leem package.json não veem nada. O código legítimo em dist/ fica intacto.

A primeira vítima: @vapi-ai/server-sdk (SDK oficial Vapi.ai, 408 mil+ downloads mensais), às 23:30 UTC. Depois ai-sdk-ollama (120 mil+). Depois 25 pacotes autotel-* (o worm republicou tudo que uma conta comprometida alcançava).

O payload tem 4 estágios: binding.gyp dispara node-gyp rebuild, bootstrap loader executa, blob de 668 KB ofuscado (obfuscator.io, tabela de 2.306 strings criptografadas), strings decodificadas revelam roubo de credenciais (npm, GitHub, AWS, GCP, Azure, Vault, K8s, CircleCI), paths de IA, lógica anti-EDR e propagação do worm.

Wave 3 — 5 de junho: 73 repositórios Microsoft comprometidos

Segundo o GitHub, 73 repositórios Microsoft foram comprometidos — incluindo Azure, Azure-Samples, MicrosoftDocs e azure-search-openai-demo. O GitHub desabilitou todos em 105 segundos. A velocidade de propagação via OIDC do npm torna reação manual impossível.

O golpe: configs que sequestram o agente

O Miasma dropa configurações maliciosas em quatro arquivos de agentes de IA:

  • .claude/settings.json: hook SessionStart — executa automaticamente ao abrir o Claude Code
  • .cursor/rules/setup.mdc: alwaysApply: true — a IA segue instruções injetadas sem questionar
  • .gemini/settings.json: executa automaticamente no Gemini CLI
  • .vscode/tasks.json: folderOpen — depende do workspace trust do VS Code

Segundo a Ossprey, 13 ferramentas foram afetadas: Claude Code, Codex, Gemini CLI, Copilot, Kiro, OpenCode, Cline, Aider, Tabby, Amazon Q, Cody, Bolt e Continue.

Propagação e tripwire destrutivo

O motor de autopropagação do Miasma: valida token npm roubado via /-/whoami, enumera TODOS os pacotes do mantenedor via /-/v1/search?text=maintainer:{username}, troca token OIDC, baixa o pacote e injeta binding.gyp + index.js ofuscado, solicita certificado ao Fulcio, cria entrada no Rekor, gera atestado SLSA v1, publica tarball assinado como nova versão. Propaga também via RubyGems e GitHub.

O golpe fatal: npm audit signatures PASSA no malware. Todo pacote malicioso carrega SLSA provenance válida e assinada. O certificado é preciso. O pacote realmente foi construído por aquele pipeline — só que tinha malware injetado. Segundo Leitwacht: "Proveniência prova de onde um build veio; não diz nada sobre o que o build faz."

C2 via próprio GitHub. Tripwire destrutivo: honeytoken que dispara rm -rf se revogado.

IronWorm: rootkit eBPF que torna processos invisíveis

Segundo a JFrog Security Research, o IronWorm foi descoberto em 3 de junho. É um binário ELF de 976KB compilado em Rust com rootkit eBPF embutido. Com 32.177 downloads mensais combinados.

Invisibilidade em tempo real

O IronWorm reescreve entradas de /proc em tempo real. Processos ocultos ficam invisíveis a ps, top e ls. Cada execve é checado contra uma watchlist e auto-adicionado ao set oculto. ptrace recebe SIGKILL — strace mata seu shell. Hiding de rede via reescrita de /proc/net/tcp.

A limitação: em sistemas com kernel lockdown, o helper BPF falha e processos ocultos reaparecem. Isso significa que a proteção de kernel lockdown é parcialmente eficaz, mas não substitui monitoramento ativo.

Colheita de credenciais em massa

O IronWorm colhe 86 variáveis de ambiente incluindo 14 chaves de API de IA: Anthropic, OpenAI, Gemini, Cohere, Mistral, Groq, Perplexity e xAI. Também mira:

  • ~/.claude/.credentials.json, ~/.codex/auth.json, ~/Cursor/auth.json
  • ~/.aws/credentials, ~/.kube/config, ~/.npmrc
  • ~/.ssh/, keystores de browser
  • Wallet Exodus — enfraquece sandboxing do Electron para capturar seed mnemonic

Propagação via identidades forjadas

Propagação via Trusted Publishing OIDC do npm, commits com identidades de bot (dependabot, renovate), autor forjado como [email protected]. A linha Shai-Hulud de worms de supply chain: set/2025 (1.0), nov/2025 (2.0), abr/2026 (Mini: SAP, PyTorch Lightning, Intercom), mai/2026 (Wave 4: TanStack 42 pacotes, Mistral AI, UiPath, OpenSearch, 170+ pacotes em npm e PyPI), 12/mai (TeamPCP open-sourceou o worm), 19/mai (atool: 639 versões em 323 pacotes em UMA HORA), 1/jun (Miasma/Red Hat), 3/jun (Phantom Gyp).

A nova superfície de ataque: seus arquivos de instrução são boundaries de confiança

A superfície de ataque mudou. Seu .claude/settings.json é um boundary de confiança. Seu .cursor/rules é um boundary de confiança. Se você constrói com agentes de IA, seu package.json não é mais o único config que pode te comprometer.

O Miasma provou que SLSA provenance não protege nada — todo pacote malicioso carregava proveniência válida. O IronWorm provou que rootkits eBPF podem tornar processos invisíveis em produção. Juntos, eles mostram que a supply chain de IA tem duas camadas de ataque: o código que o agente executa e as instruções que o agente segue.

Remediação imediata: pin versões conhecidas. Rode npm install --ignore-scripts. Rotacione credenciais. Não confie na tag latest limpa — versões maliciosas continuam no registry. Cooldown para pacotes recém-publicados. E acima de tudo: trate arquivos de configuração de agentes de IA com o mesmo rigor que chaves SSH e credenciais AWS.

Conclusão

Quem protege as instruções que sua IA segue? Essa é a pergunta que Miasma e IronWorm deixam no ar. A supply chain evoluiu de atacar dependências para atacar a camada de instruções dos agentes de IA — e a maioria das ferramentas de segurança ainda olha só para package.json. Nós da Tech86 ajudamos empresas a mapear essa nova superfície de ataque, implementar monitoramento eBPF e estabelecer boundaries de confiança para arquivos de instrução de agentes. Se você constrói com IA, precisa proteger não só o código — mas as instruções que seu agente segue.

Precisa de orientação especializada?

Agende uma consultoria com nossos especialistas.

Consultoria de Segurança para IA

Perguntas Frequentes

Miasma e IronWorm são duas worms de supply chain descobertas em junho de 2026 que representam uma mudança fundamental na superfície de ataque. Segundo o StepSecurity e a JFrog Security Research, Miasma infecta agentes de IA dropando configurações maliciosas em .claude/settings.json, .cursor/rules/setup.mdc, .gemini/settings.json e .vscode/tasks.json — o agente executa código automaticamente ao abrir um reposit��rio. IronWorm é um rootkit eBPF compilado em Rust que torna processos invisíveis reescrevendo /proc em tempo real. A diferença para worms anteriores: não atacam só o código, atacam as instruções que a IA segue.

Segundo a Ossprey, 13 ferramentas de IA foram afetadas: Claude Code, Codex, Gemini CLI, Copilot, Kiro, OpenCode, Cline, Aider, Tabby, Amazon Q, Cody, Bolt e Continue. O Miasma dropa configs com hooks SessionStart no .claude/settings.json (executa automaticamente), regras com alwaysApply: true no .cursor/rules/setup.mdc (a IA segue instruções injetadas), e tasks folderOpen no .vscode/tasks.json (depende do workspace trust). No Claude Code e Gemini CLI, a execução é automática. No Cursor, a IA obedece instruções injetadas sem questionar. Seu package.json não é mais o único config que pode te comprometer.

Segundo a JFrog Security Research, o IronWorm é um binário ELF de 976KB compilado em Rust com rootkit eBPF embutido. Ele reescreve entradas de /proc em tempo real: processos ocultos ficam invisíveis a ps, top e ls. Cada execve é checado contra uma watchlist e auto-adicionado ao set oculto. ptrace recebe SIGKILL — strace mata seu shell. Hiding de rede via reescrita de /proc/net/tcp. A limitação: em sistemas com kernel lockdown, o helper BPF falha e processos ocultos reaparecem. O IronWorm também colhe 86 variáveis de ambiente incluindo 14 chaves de API de IA e credenciais de ~/.claude/.credentials.json, ~/.codex/auth.json, ~/Cursor/auth.json, ~/.aws/credentials, ~/.kube/config, ~/.npmrc, ~/.ssh/, keystores de browser e wallet Exodus.

Segundo o StepSecurity e a JFrog, as proteções essenciais são: auditar arquivos de configuração de agentes (.claude/settings.json, .cursor/rules, .gemini/settings.json, .vscode/tasks.json), implementar cooldown para pacotes recém-publicados, rodar npm install --ignore-scripts, não confiar em proveniência SLSA sozinha (o Miasma forjou proveniência via Sigstore, Fulcio e Rekor), deploy de monitoramento eBPF para detectar processos ocultos, e tratar arquivos de instrução de agentes como boundaries de confiança — mesmo nível de rigor que chaves SSH e credenciais AWS. O Miasma comprometeu 73 repositórios Microsoft em 105 segundos via propagação OIDC do npm — velocidade que torna reação manual impossível.

Blog — Fale Conosco

Tem alguma pergunta sobre nossos artigos ou serviços? Nossa equipe está pronta para ajudar.

Agendar Reunião

Reserve um horário.

Agendar Agora

E-mail

Envie uma mensagem.

[email protected]

WhatsApp

Conversa rápida.

Endereço

Avenida Paulista, 1636 - São Paulo - SP - 01310-200

Especialista Tech86

Online agora

Olá! Como podemos ajudar a escalar seu negócio hoje?

Tech86 Engineering

Nós valorizamos sua privacidade

Utilizamos cookies e tecnologias similares para otimizar a sua experiência, analisar o tráfego do site e personalizar conteúdo. Ao clicar "Aceitar Todos", você concorda com o uso de todos os cookies. Leia nossa Política de Privacidade.