SafeDep dokumenterte 19. mai et målrettet angrep der npm-kontoen «atool» ble overtatt og brukt til å pushe 637 ondsinnede versjoner over 317 pakker. De mest brukte rammede pakkene er size-sensor (4,2 millioner månedlige nedlastinger), echarts-for-react (3,8 millioner), @antv/scale (2,2 millioner) og timeago.js (1,15 millioner). Hele scoped @antv-økosystemet er involvert.
Payloaden er et 498 KB obfuskert Bun-script som matcher Mini Shai-Hulud-verktøysettet brukt mot SAP for tre uker siden: samme skanner-arkitektur, samme regex-sett for legitimasjon og samme obfuskeringsmønster. Den høster legitimasjon fra hele AWS-kjeden (env-variabler, konfig, EC2 IMDS, ECS-metadata, Secrets Manager), Kubernetes service account-tokens, HashiCorp Vault, GitHub PAT-er, npm-tokens og SSH-nøkler. Stjålet data sendes ut ved å committes som Git-objekter til offentlige GitHub-repoer opprettet under den stjålne tokenen, med User-Agent forfalsket til python-requests/2.31.0.
Det mest alarmerende for KI-utviklere: payloaden injiserer SessionStart-hooks i Claude Code og Codex, slik at koden re-eksekveres ved hver KI-sesjon. VS Code-prosjekter får tasks.json med «runOn»: «folderOpen». En systemd-tjeneste (kitty-monitor) holder en GitHub dead-drop C2-kanal åpen som henter RSA-PSS-signerte kommandoer fra commit-meldinger en gang i timen. En sekundær daemon poller stjålne tokens hvert 60. sekund.
Angrepet har to leveringskanaler. Hver kompromittert versjon legger til en preinstall-hook (bun run index.js). 630 av 637 versjoner injiserer i tillegg en optionalDependencies-oppføring som peker på orphan-commits i antvis/G2-repoet, en utnyttelse av GitHubs fork-objektdeling som lar angriperen hoste en kopi av payloaden uten skrivetilgang til target-repoet. npms github:-avhengighetsoppløsning henter og kjører innholdet via SHA.
Hva bør du gjøre?
- Sjekk lock-filer mot listen: Søk package-lock.json og pnpm-lock.yaml for navnene size-sensor, echarts-for-react, @antv/scale, timeago.js og alle @antv-pakker. Hvis du har installert noe fra 19. mai, anta kompromittering.
- Roter all legitimasjon som finnes på utvikler-maskiner og CI-runnere: AWS-nøkler, GitHub PAT-er, npm-tokens, SSH-nøkler og service account-tokens. Påkrevd hvis bun- eller npm-install har kjørt etter angrepstidspunktet.
- Sjekk om Claude Code- eller Codex-konfig har fått nye hooks: Se etter SessionStart-oppføringer du ikke har lagt inn selv. Samme gjelder .vscode/tasks.json med folderOpen-triggere.
- Lås produksjons-CI til eksakte versjoner: Bruk = i stedet for ^ eller ~ på pakker som har vært rammet, og krev signaturverifisering der det er mulig.