Uma campanha auto-propagante conhecida como ChainDrop (também rastreada como Mini Shai-Hulud) contaminou 444 pacotes npm e mais de 1.300 releases maliciosos após os atacantes assumirem o controle da conta GitHub vinculada à biblioteca de cache Keyv. O incidente representa uma evolução crítica nas ameaças à cadeia de suprimentos de software, pois os atacantes conseguiram burlar controles de integridade tradicionais ao utilizar canais de publicação legítimos e assinaturas válidas.
O que mudou agora
Diferente de compromissos anteriores que dependiam de injeção direta durante a instalação, o ChainDrop introduziu arquivos de configuração de repositório que executam código quando um desenvolvedor abre um projeto no VS Code ou inicia uma sessão no Claude Code. Isso significa que a infecção pode ocorrer apenas com o clone do repositório, sem necessidade de executar comandos de build ou instalar dependências adicionais.
Vetor e exploração
O ataque começou em 4 de agosto com a tomada de conta da conta GitHub do mantenedor do Keyv. Os criminosos usaram credenciais roubadas para publicar versões alteradas dos pacotes, que carregavam atestações de proveniência válidas publicadas através de workflows do GitHub Actions configurados como editores confiáveis. O problema reside no fato de que a proveniência confirma a origem da construção, mas não garante que o computador ou a conta que produziu o código estava limpa.
Impacto e alcance
Os pacotes afetados representam mais de dois bilhões de instalações mensais. A escala do impacto é amplificada pela natureza dos pacotes comprometidos, que são bibliotecas fundamentais utilizadas em diversos projetos de desenvolvimento. Projetos que rastreiam as versões principais mais recentes foram particularmente vulneráveis, enquanto aqueles com versões fixadas (pinned majors) permaneceram protegidos.
Implicações regulatórias (LGPD)
Embora o foco seja técnico, a contaminação de cadeias de suprimentos de software pode ter implicações legais sob a LGPD se resultar no vazamento de dados de usuários finais. Organizações que utilizam esses pacotes comprometidos em sistemas que processam dados pessoais devem considerar a possibilidade de violação de segurança e iniciar processos de avaliação de risco e notificação à ANPD, caso haja evidência de exfiltração de dados.
Análise técnica detalhada
O ChainDrop inseriu dois arquivos de configuração específicos em até 50 branches de repositórios atingidos: .claude/settings.json, que registra um hook de início de sessão do Claude Code, e .vscode/tasks.json, que define uma tarefa do VS Code ativada ao abrir uma pasta. Cada arquivo pode lançar um dropper a partir do diretório da outra ferramenta, permitindo execução sem etapas de instalação padrão. Essa abordagem foge à visão de muitos scanners de dependência, que normalmente examinam manifestos e lockfiles, ignorando configurações de editor.
Medidas de mitigação recomendadas
Equipes de engenharia e segurança devem adotar as seguintes práticas:
- Revisão de Repositórios: Procure por arquivos de configuração inesperados (.claude, .vscode) em todos os branches, não apenas na main branch.
- Rotação de Credenciais: Revogue e rotacione imediatamente tokens de publicação de npm e credenciais de acesso ao GitHub.
- Isolamento de Ambientes: Reconstrua ambientes de desenvolvimento e CI/CD a partir de um estado conhecido e limpo.
- Verificação de Proveniência: Não confie cegamente em assinaturas de proveniência; valide a integridade do ambiente de build e da conta mantenedora.
Perguntas frequentes
Como identificar se meu projeto foi afetado? Compare as versões dos pacotes utilizados com a lista de releases maliciosos identificada (ex: keyv@6.0.0, flat-cache@6.1.24) e verifique a presença de hooks suspeitos nos arquivos de configuração do repositório.
Devo remover os pacotes? Sim, substitua imediatamente as versões comprometidas por versões verificadas e seguras, preferencialmente com hashes pinados.