Raio de explosão04·08·2026 ~10:39 UTC

Às ~10:39 UTC, o ChainDrop estava a 1 salto do got.

npm install sem lockfile, 4 ago 2026, às ~10:39 UTC

O keyv ficou de fora aqui também: ^5.6.0 não aceita 6.0.0. A porta foi o cacheable-request, dependência direta.

Às ~10:39 UTC, o ChainDrop estava a 1 salto do got.~10:39 UTC. Caminho: got → cacheable-request → keyv; 1 infectados alcançáveis; 2 arestas barradas pela faixa.cacheable-requestkeyvoutras 10 diretas

25 NO GRAFO · 2 NO CAMINHOFaixas do grafo coletado em 25 set 2026 (deps.dev); raiz resolvida no instante escolhido

◂ Anterior~10:39 UTCPróximo evento ▸

~10:39 UTC · o npm começa a remover as versões (StepSecurity). A hora de saída de cada versão não é pública; o gráfico fica como estava.

A manhã de 4 de agosto

  1. 09:30:00nenhuma versão publicadaantes do primeiro evento
  2. 09:35:00keyv@6.0.0barrado · ^5.6.0
  3. 10:11:24cacheable-request@13.0.20abre 1 salto
  4. ~10:39remoção começa (StepSecurity)grafo sem mudança

Caminho

porta de entrada: cacheable-request, dependência direta

  1. MAL-2026-11964 ↗

Barrados pela faixa

E se fosse outro pacote

Sem lista de maliciosos: escolha qualquer um dos 24 pacotes do grafo do got e veja todos os caminhos até ele. Tocar num pacote do gráfico faz o mesmo.

O que fazer

  1. Veja o seu caminho no repositório. Compare as versões que aparecem com a lista em Fontes e método.

    npm ls keyv flat-cache file-entry-cache cacheable cacheable-request --all
  2. Commite o lockfile e instale com npm ci no CI: ele instala o que está no lockfile e não resolve faixas de novo.

    npm ci
  3. Trave a porta de entrada com overrides no package.json até o incidente fechar.

    "overrides": { "file-entry-cache": "11.1.5" }
  4. Durante a janela de um incidente, instale sem scripts: o ChainDrop entrava pelo preinstall.

    npm install --ignore-scripts

Fontes e método

Lista de IOCs do ChainDrop, Datadog Security Labs
Apache-2.0. 444 pacotes, 2.236 versões no arquivo usado; a StepSecurity conta 2.212. Artigo: “ChainDrop” worm compromises hundreds of popular npm packages (4 ago 2026).
Dados de dependências: deps.dev (Google), CC BY 4.0
O grafo resolvido de cada caso, com a faixa de cada aresta (API v3, GetDependencies), e a data de publicação da raiz.
OSV e ossf/malicious-packages
Apache-2.0. O registro MAL-… de cada versão maliciosa, com o mecanismo e os créditos.
Registro do npm
O segundo em que cada versão maliciosa foi publicada (campo time). Só esses horários foram guardados.
StepSecurity, “ChainDrop npm Worm”
A remoção: o npm começou a despublicar por volta de 10:39 UTC, e os 11 portadores principais foram revertidos até 18:10 UTC. É a afirmação deles; a hora de saída de cada versão não é pública.

Dados coletados uma vez em 25 set 2026; a página não consulta nada ao abrir.

A regra. Uma aresta está aberta quando uma versão maliciosa do pacote de destino já estava publicada naquele instante e a faixa da aresta a aceita (semver do npm). Está barrada quando há versão maliciosa publicada e a faixa não aceita nenhuma.

  • A raiz é a versão que npm install dava na manhã de 4 de agosto; o resto é o grafo como o deps.dev o coletou, não o de 4 de agosto. A regra usa a faixa de cada aresta, não a versão resolvida.
  • As dependências da versão maliciosa não são conhecidas (foi despublicada); supõe-se que tinha as mesmas faixas da versão limpa anterior.
  • Com lockfile commitado e npm ci, nada disso é resolvido de novo. A página não afirma que alguém foi infectado.
  • A hora em que cada versão saiu do registro não é conhecida; o gráfico não encolhe a zona depois de 10:39.