- 4. august 2026 kompromitterte en selvforplantende orm ved navn ChainDrop over 400 npm-pakker, inkludert keyv og flat-cache, i løpet av fire timer.
- Angrepet brukte stjålne GitHub-legitimasjon til å publisere ondsinnede versjoner med gyldig opprinnelse, noe som gjorde dem umulige å skille fra legitime utgivelser.
- Nyttelasten stjeler påloggingsinformasjon, eksfiltrerer data via Ethereum-basert C2 og publiserer infiserte pakker på nytt ved hjelp av stjålne npm-tokens.
- Organisasjoner må sjekke låsefiler, rotere legitimasjon og fjerne vedvarende mekanismer for å redusere virkningen.

npm-økosystemet er preget av et av de mest aggressive forsyningskjedeangrepene noensinne. 4. august 2026 rev en orm kalt ChainDrop seg gjennom registeret og forgiftet hundrevis av pakker på under fire timer. Angrepet utnyttet en kompromittert GitHub-konto til å publisere ondsinnede versjoner av mye brukte biblioteker som keyv og flat-cache, som til sammen står for hundrevis av millioner ukentlige nedlastinger. Det som gjør denne hendelsen spesielt alarmerende, er at de ondsinnede utgivelsene hadde gyldig SLSA-opprinnelse, noe som fikk dem til å se helt legitime ut for automatiserte sikkerhetskontroller.
Sikkerhetsforskere fra StepSecurity, Unit 42, Sonatype og Aikido har kjempet for å analysere ormen og begrense spredningen. Den første bølgen traff jaredwray-økosystemet, men ormen spredte seg raskt til andre vedlikeholdere og organisasjoner, inkludert ServiceTitan, Qlik og Deliveroo. Fra og med den siste oppdateringen fortsetter antallet kompromitterte pakker å stige, med nye infeksjoner som dukker opp med noen få minutters mellomrom. Dette er ikke bare nok en skrivefeil-squat-kampanje; det er en sofistikert, selvforplantende orm som stjeler legitimasjon og bruker den til å publisere seg selv på nytt i npm-registeret.
Angrepet i korte trekk

Angrepet startet da GitHub-kontoen til Jared Wray, vedlikeholder av keyv og relaterte pakker, ble kompromittert. Angriperen sendte ondsinnede commits direkte til hovedgrenen og kuttet nye utgivelser, som deretter ble publisert til npm via prosjektets egen pålitelige publiseringsarbeidsflyt. Dette betydde at de forgiftede versjonene hadde gyldige SLSA-proveniensattester , en funksjon som mange team stoler på som et sikkerhetssignal. Proveniens beviser imidlertid bare hvilken commit som ble bygget, ikke om commiten var autorisert. Angriperen plantet også falske testfiler og modifiserte utgivelsesskript for å sikre at de ondsinnede versjonene ble den nyeste dist-taggen.
De ondsinnede pakkene inneholdt et forhåndsinstallasjonsskript som kjørte en dropper kalt setup.mjs. Denne dropperen lastet ned den legitime Bun JavaScript-kjøretiden fra GitHub og brukte den til å kjøre en 727 KB obfuskert nyttelast kalt Math_Symbol.js. Nyttelasten var en fullfunksjonell orm som høstet legitimasjon fra offerets system, inkludert npm-tokens, GitHub-tokens, skylegitimasjon, SSH-nøkler og til og med AI-verktøykonfigurasjoner. Den eksfiltrerte deretter dataene til en kommando-og-kontroll-server, som ble løst via en Ethereum smartkontrakt – en teknikk kjent som EtherHiding.
Berørte pakker og omfang

Den første bølgen var rettet mot 11 pakker i jaredwray-økosystemet, inkludert keyv@6.0.0, flat-cache@6.1.24 og file-entry-cache@11.1.6. Disse pakkene er transitive avhengigheter av utallige prosjekter, fra ESLint til cache-manager. Ormen brukte deretter stjålne legitimasjonsdetaljer til å publisere 433 ekstra pakker på nytt, noe som bringer totalen til 444 pakker og 2,212 versjoner i løpet av de første timene. Senere rapporter fra Sonatype og Aikido antyder at antallet har vokst enda høyere, med over 1,000 pakker berørt da støvet har lagt seg.
Den andre bølgen traff pakker fra organisasjoner som @servicetitan, @qlik, @onereach og @deliveroo, noe som indikerer at ormen hadde flyttet seg fra offentlige utviklerverktøy til bedriftens byggepipeliner. Angriperne opprettet også offentlige databaser med Dune-temanavn for å iscenesette eksfiltrerte data, og de plantet persistensmekanismer i .vscode- og .claude-katalogene for å infisere utviklere som åpnet de kompromitterte databasene på nytt.
Hvordan ChainDrop-ormen fungerer
Angrepskjeden er en mesterklasse i å leve av landet. Forhåndsinstallasjonsskriptet kjører før noen avhengighet installeres, slik at ormen kjører med brukerens rettigheter. Dropperen sjekker om Bun allerede er til stede; hvis ikke, laster den ned en legitim Bun-binærfil fra GitHub. Dette får nettverkstrafikken til å se uskyldig ut, ettersom den kommer fra github.com. Nyttelasten i andre trinn kobler seg deretter fra som en bakgrunnsprosess og begynner sitt skitne arbeid.
En av de mest særegne teknikkene er skraping av runner-minne . Nyttelasten kjører en Python-hjelper som leser minnet til GitHub Actions Runner.Worker-prosessen, og søker etter hemmeligheter som er injisert i arbeidsflyten. Dette lar den fange OIDC-tokens og andre flyktige påloggingsinformasjoner som ellers ville forsvinne når jobben er avsluttet. Ormen bruker også en russisk språklig kill switch, og avslutter uten problemer hvis systemspråket er russisk, en vanlig taktikk for å unngå å målrette SNG-land.
Nyttelasten inkluderer en komplett npm-publiseringsmotor. Den lister opp alle pakker offeret kan publisere, laster ned gjeldende tarball, injiserer det skadelige forhåndsinstallasjonsskriptet og nyttelasten, og publiserer pakken på nytt med en oppgradert versjon. Den genererer til og med sine egne Sigstore- og SLSA-provenienspakker, noe som gjør at de skadelige versjonene ser legitimt bygget ut. Denne selvforplantningsmekanismen er det som tillot ormen å spre seg så raskt på tvers av urelaterte organisasjoner.
Indikatorer for kompromiss
Hvis du har installert noen av de berørte versjonene, kan du anta at systemet ditt er kompromittert. Se etter disse indikatorene:
- Filer med navnet setup.mjs, Math_Symbol.js eller math_init.js i node_modules-katalogene.
- Uventede Bun-binærfiler på systemet ditt, spesielt hvis du aldri har installert Bun.
- Endringer i .claude/settings.json eller .vscode/tasks.json som refererer til setup.mjs.
- Utgående tilkoblinger til npm-cache.com eller awqhnjewqjkl.icu, eller Ethereum RPC-kall for å kontraktere 0xE1f2395ee43e45A1556EC6438a88c31B83493103.
- Nye GitHub-repositorier med beskrivelser som «Shai-Hulud: Here We Go Again» eller navn med Dune-tema.
Sjekk også om tokenmonitoren er installert etter eksfiltrering: ~/.local/bin/gh-token-monitor.sh, ~/.config/gh-token-monitor/, og systemd eller LaunchAgent-tjenester. Ormen installerer dette for å straffe rotasjon av legitimasjon ved å utløse en angripernyttelast når den stjålne tokenen tilbakekalles.
Avbøtende tiltak og gjenoppretting
Hvis du er berørt, må du handle raskt. Isoler først maskinen og behold loggene. Roter deretter all påloggingsinformasjon som var tilstede på systemet, inkludert npm-tokener, GitHub PAT-er, skynøkler og SSH-nøkler. Fjern token-monitoren før rotering, da den vil utløses hvis du tilbakekaller tokenet. Rengjør deretter låsefilene dine og fest dem til kjente versjoner. For keyv, flat-cache og file-entry-cache, bruk overstyringer for å blokkere de skadelige versjonene. Til slutt, installer på nytt med –ignore-scripts for å forhindre at eventuelle gjenværende installasjonshooker kjøres.
For CI/CD-pipelines, se gjennom logger for alle installasjoner som løste berørte versjoner i løpet av eksponeringsvinduet. Behandle alle løpere som installerte en forgiftet pakke som kompromittert, og roter alle hemmeligheter som er tilgjengelige for den jobben. Revider også GitHub-organisasjonene dine for uventede arbeidsflyter kalt «Run Copilot» eller artefakter kalt «format-results», som er tegn på ormens hemmelighetsvasking.
Dybdegående forsvar er avgjørende. Bruk tillatelseslister for utgående systemer på CI-løpere for å blokkere dropperen fra å hente Bun. Implementer nedkjølingsregler som krever at pakker er noen dager gamle før de tas i bruk. Og ikke stol utelukkende på opprinnelse – det er ikke en garanti for sikkerhet. Det beste forsvaret er å minimere bruken av installasjonsskript og overvåke unormal oppførsel.
Etter hvert som etterforskningen fortsetter, øker antallet berørte pakker fortsatt. Ormens evne til å rotere C2-infrastrukturen sin via en enkelt Ethereum-transaksjon gjør den spesielt robust. Sikkerhetsteam bør overvåke smartkontrakten for endringer og holde seg oppdatert på nye indikatorer. npm-registeret har begynt å fjerne skadelige versjoner, men oppryddingen pågår.
Denne hendelsen er en sterk påminnelse om at et åpen kildekode-økosystem bare er så sikkert som det svakeste leddet. Én kompromittert vedlikeholderkonto kan føre til et massivt angrep i forsyningskjeden. ChainDrop-ormen er en vekker for utviklere og organisasjoner om å ta i bruk sterkere sikkerhetspraksiser, inkludert flerfaktorautentisering, tokener med minst mulig rettigheter og kontinuerlig overvåking av avhengigheter.