Shai-Hulud traff npm-pakker med gyldig proveniens
Den nye Shai-Hulud-kampanjen mot npm-økosystemet er mer enn enda en pakkealarm. Den viser et hull mange styringsmodeller har oversett: signert byggproveniens beviser hvor en pakke ble bygget, men ikke at koden som gikk inn i bygget var trygg.
Elastic Security Labs beskriver kampanjen som CHAINDROP. Ifølge Elastic ble vedlikeholderen bak Keyv kompromittert 4. august. Angriperne trojaniserte monorepoet og la inn en selvspredende orm som brukte stjålne npm-legitimasjoner til å bakdøre andre pakker vedlikeholderen hadde publiseringsrettigheter til. Keyv alene hadde over 600 millioner nedlastinger siste måned. Relaterte pakker som flat-cache, cacheable-request, cacheable og cache-manager økte eksponeringen ytterligere. Elastic oppgir at mer enn 400 unike npm-pakker var kompromittert da analysen ble publisert.
Aikido Security rapporterte samtidig at de forgiftede pakkene ble publisert gjennom legitime GitHub Actions-løp og derfor kom ut med gyldig npm-proveniens. Det er den delen norske teknologiledere bør bite seg merke i. Mange virksomheter har de siste årene skjerpet kravene til signerte pakker, OIDC-publisering, SLSA-proveniens og «trusted publishing». Alt dette er riktig. Men denne saken viser at kontrollene kan gi falsk trygghet hvis angriperen først får skrive til kilderepoet eller releaseflyten.
Angrepsmetoden var enkel i inngangen og aggressiv i effekten. Pakkene fikk en preinstall-hook som kjørte setup.mjs. Dropperen lastet ned Bun-runtime og kjørte den egentlige nyttelasten, Math_Symbol.js eller math_init.js. Ifølge Elastic var nyttelasten tungt obfuskert og på over 700 KB. Den skannet utviklermaskiner og CI-miljøer etter hemmeligheter, komprimerte og krypterte funnene, og sendte dem videre via blant annet GitHub-repositorier og infrastruktur som kunne roteres via en Ethereum-smartkontrakt.
Målet var bredt. Elastic beskriver innsamling av npm-tokens, GitHub-tokenformater, skylegitimasjon for AWS, GCP, Azure og Alibaba Cloud, Kubernetes-tokens, Vault, SSH-nøkler og en rekke lokale filer som ofte inneholder hemmeligheter. Særlig relevant for 2026 er at nyttelasten også ser etter legitimasjon knyttet til AI-verktøy og agentarbeid, inkludert Anthropic, Claude, Codex, Cursor, OpenAI og Gemini.
Det siste punktet gjør saken mer alvorlig enn en vanlig utviklerhendelse. Mange selskaper har begynt å gi kodeagenter egne tokens, prosjektmapper og repo-tilgang. Noen kjører dem i lokale arbeidsflater. Andre lar dem jobbe i CI eller skylignende sandkasser. Når en forsyningskjedeorm leter etter akkurat disse nøklene, blir agentøkosystemet en del av angrepsflaten.
CHAINDROP hadde også flere spredningsbaner. Dersom den fant et npm-token med skrive- og publiseringsrettigheter uten 2FA-krav, kunne den hente pakker, legge inn nyttelasten, øke patchversjonen og publisere på nytt. Elastic skriver også at kampanjen la inn kroker i Claude- og VS Code-konfigurasjon i enkelte repositorier. Dermed kunne en utvikler bli eksponert bare ved å åpne et infisert prosjekt eller starte en agentøkt i feil arbeidsmappe.
For CISO-er er første konsekvens operasjonell. Organisasjoner som bruker Node.js må vite om de har installert rammede versjoner, ikke bare om de har dem i package.json. Det betyr låsefilanalyse, cache-gjennomgang, CI-runner-sjekk og rask rotasjon av tokens som kan ha ligget i miljøvariabler, .npmrc, GitHub Actions, Vault, Kubernetes eller lokale utviklermapper.
Andre konsekvens er styringsmessig. Software Bill of Materials er nødvendig, men ikke nok. Proveniens er nødvendig, men ikke nok. En pakke kan ha riktig signatur, riktig byggpipeline og riktig metadata, og likevel være ondsinnet fordi kilden eller releasekontrollen er overtatt. Innkjøp og sikkerhet må derfor stille spørsmål om maintainer-risiko, repo-beskyttelse, branch-regler, tokenlevetid, publish-2FA og hvordan leverandører oppdager kompromitterte transitive avhengigheter.
Tredje konsekvens gjelder AI-verktøyene i utviklingsmiljøet. Hvis Claude Code, Codex, Cursor eller Gemini brukes med tilgang til repoer og hemmeligheter, må de inngå i samme hendelsesrespons som IDE, shell og CI. Det betyr isolerte arbeidsmapper, kortlevde tokens, minst mulig scope, tydelig forbud mot hemmeligheter i agentkonfigurasjon og logging som gjør det mulig å se hvilken prosess som leste hva.
Den praktiske lærdommen er nøktern: grønn provenance-merking på npm er ikke en garanti mot forgiftet kildekode. Den er ett signal i en kjede av kontroller. Når angripere går etter vedlikeholdere, releaseflyt og agentlegitimasjon samtidig, må virksomhetene se utviklermaskinen som produksjonsnær infrastruktur.
Det er ubehagelig, men presist. I 2026 er CI/CD, pakkelager og agentarbeidsflater ikke støttefunksjoner. De er en del av virksomhetens kontrollplan.
Kilder og medier
Primærkilde: Elastic Security Labs, «Shai-Hulud strikes again: CHAINDROP worm hits 400+ npm packages». https://www.elastic.co/security-labs/shai-hulud-chaindrop-npm-supply-chain
Supplerende teknisk kilde: Aikido Security, «Keyv and friends compromised in active Shai-Hulud supply chain attack». https://www.aikido.dev/blog/keyv-and-friends-compromised-in-npm-supply-chain-attack
Thumbnail: OpenAI Image 2 / hogby.ai
📬 Likte du denne?
AI-nyheter for ledere. Kuratert av en CIO som bygger det selv. Daglig i innboksen.