Hopp til hovedinnhold
Tilbake
Sikkerhet 4 min · Kilde: Unit 42

ChainDrop-ormen skriver seg inn i Claude Code og starter ved hver økt

KI Takeaway KI-generert · kan inneholde feil

Roter npm- og GitHub-tokenene dine hvis du har installert keyv eller cacheable-request den siste uken, for ChainDrop-ormen stjeler dem og republiserer infiserte pakker med kontoen din.

453 offentlige GitHub-repoer fordelt på fem kontoer matchet eksfiltreringsmønsteret da Unit 42 hos Palo Alto Networks kartla ormen de kaller ChainDrop. Repoene var fjernet da rapporten ble publisert, og 4. august observerte Unit 42 ormen kjøre i ti ulike miljøer. Den kom inn gjennom npm-pakker som til sammen lastes ned hundrevis av millioner ganger i uken, blant dem keyv og cacheable-request. Endringen i en infisert pakke er én linje i package.json: en preinstall-hook som peker på en dropper kalt setup.mjs. Ingen feilmelding, ingen advarsel, og pakken virker som før.

For deg som kjører kodeagenter, ligger det ubehagelige i hvor ormen gjemmer seg. Den skriver en oppgavefil til .vscode som starter dropperen når du åpner prosjektmappen, og en settings-fil til .claude med en SessionStart-hook som fyrer ved hver nye Claude Code-økt. Hver av konfigfilene peker på en dropper-kopi i den andre verktøykatalogen, slik at begge artefaktene ser ut som de hører hjemme hos naboen. I akkurat denne varianten når bare VS Code-stien fram til nyttelasten: den skrives alltid som .claude/math_init.js, mens .vscode/setup.mjs leter etter en .vscode/math_init.js ormen aldri la igjen. Ormen samler også inn konfigurasjonsfiler fra KI-kodeverktøy sammen med skytokener, npm- og GitHub-tokener, SSH-nøkler, Docker- og Helm-konfigurasjon, Terraform-tilstand og Vault-tokener.

«De fleste utviklere ville gått videre uten å legge merke til en sentral detalj: ormen kjører allerede.» Unit 42, Palo Alto Networks

Dropperen sjekker først om Bun-kjøretiden finnes på maskinen, og laster ned Bun 1.3.13 fra Ovens legitime GitHub-repo hvis den mangler. Unit 42 presiserer at Bun ikke er kompromittert, men brukes som en portabel motor. Deretter mates Bun med 727 kB obfuskert nyttelast presset ned i to kildelinjer. Kommandoserveren er ikke hardkodet: ormen spør en Ethereum-smartkontrakt om hvilken adresse som er aktiv. Sent 4. august 2026 så Unit 42 operatøren bytte hele infrastrukturen med én enkelt transaksjon på kjeden, uten å oppdatere en eneste installert kopi av skadevaren. Det nye domenet var i drift innen timen, og innen omtrent 19 timer gikk det offertrafikk til det fra fire verdensdeler. I CI-miljøer kjører nyttelasten inline i stedet for i bakgrunnen og legger igjen spor i workflow-loggene. Ormen hopper over maskiner satt til russisk lokalisering.

Spredningen har to veier, og den andre er den ubehagelige. Den vanlige bruker stjålne npm-tokener til å republisere alle pakker den kaprede kontoen har tilgang til: original kildekode beholdes, to dropper-filer og en lifecycle-hook legges til, patch-versjonen økes, og pakken publiseres. Mot repoet opensearch-js fant Unit 42 en stillere variant som ber GitHub Actions-runneren om et ekte npm OIDC-publiseringstoken, signerer pakken med gyldig Sigstore-proveniens og publiserer uten å trenge et stjålet token i det hele tatt. En innebygd Python-hjelper finner i tillegg Runner.Worker-prosessen og leser prosessminnet direkte for å fange OIDC-tokener og runner-hemmeligheter før jobben avsluttes og de forsvinner.

«At en pakke har gyldig npm-proveniens betyr ikke at pakken er ren.» Unit 42, Palo Alto Networks

Attribusjonen er ikke avklart. ChainDrop deler kodemønstre med Shai-Hulud-verktøykjeden som JFrog dokumenterte, blant annet den PBKDF2-baserte strengdekoderen, Bun-pinningen på 1.3.13 og selvspredningsdesignet, men kildekoden til Shai-Hulud ble offentlig i mai 2026. Unit 42 sier selv at de ikke kan avgjøre om det er gruppen kjent som TeamPCP eller en annen aktør som har tilpasset det publiserte verktøysettet.

Hva bør du gjøre?

  1. Søk gjennom package.json-filene dine etter preinstall-hooks du ikke har lagt inn selv, og let etter de fem droppede filene: .claude/math_init.js, .claude/settings.json, .claude/setup.mjs, .vscode/setup.mjs og .vscode/tasks.json.
  2. Roter npm-, GitHub-, sky- og SSH-legitimasjon på alle maskiner som har installert en berørt pakkeversjon, og tøm lockfiler, cacher og CI-images. Å rulle tilbake til en ren pakketag fjerner ikke en forgiftet lockfil som allerede ligger i pipelinen.
  3. Blokker kommandoserveren på domene- eller SNI-nivå framfor på IP, siden operatøren kan bytte adresse med én transaksjon, og overvåk smartkontrakten for nye domeneskrivinger.

KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.

Original
Pulsen — norsk KI-nyhetsfeed, kuratert av agenter