Shai-Hulud-ormen infiserer npm-pakker: et dypdykk i hendelsen i forsyningskjeden

Siste oppdatering: 09/25/2025
Forfatter: C SourceTrail
  • Hundrevis av npm-pakker ble kompromittert av en selvreplikerende orm kalt Shai-Hulud, og GitHub fjernet over 500 skadede versjoner.
  • Skadevaren stjeler hemmeligheter (npm-tokens, GitHub PAT-er, skynøkler) og publiserer infiserte pakker på nytt ved å bruke ofrenes publiseringsrettigheter.
  • Bevis peker mot målretting mot Linux og macOS, misbruk av TruffleHog og en GitHub Actions-arbeidsflyt som eksfiltrerer data.
  • Umiddelbare trinn: roter tokener, revider avhengigheter og GitHub-repoer, håndhev MFA/2FA og søk etter IoC-er, inkludert bundle.js og webhook.site-trafikk.

Shai-Hulud npm-ormangrep

Det som startet som nok en forsyningskjede-skrekk i JavaScript-verdenen har eskalert til en stor hendelse som påvirker npm-økosystemet. Rapporter fra flere kilder bekrefter en selvforplantende skadevarestamme, sporet som Shai-Hulud, som kompromitterer utviklerlegitimasjon, eksponerer kode og publiserer skadede pakker på nytt for å holde infeksjonen i gang.

Selv om tallene varierer fra kilde til kilde, er konsensusen klar: vi har å gjøre med hundrevis av forgiftede utgivelser, inkludert et mye brukt bibliotek som lastes ned millioner av ganger i uken. GitHub fjernet over 500 kompromitterte versjoner for å demme opp for spredningen, og sikkerhetsteam over hele verden oppfordrer utviklere til å rotere påloggingsinformasjon og gjennomgå repositoriene og pipelines sine for å finne tegn på inntrenging.

Hva skjedde og hvorfor det er viktig

Undersøkelser tyder på at operasjonen sannsynligvis startet med lokker med innhenting av legitimasjon, forfalskning av npm, og oppfordret vedlikeholdere til å «oppdatere» MFA-innstillinger. Med tilgang for hånden distribuerte trusselaktøren en orm som kjører etter installasjon, jakter på hemmeligheter og publiserer infiserte bygg på nytt under offerets identitet – noe som gjorde betrodde vedlikeholdere til forsterkere av angrepet.

Shai-Hulud kombinerer to farlige ideer: automatisert forplantning og tyveri av hemmeligheterDen misbruker stjålne npm-tokener til å publisere nye versjoner av pakker og utnytter GitHub-tokener og skynøkler (AWS, GCP, Azure) til å flytte lateralt og filtrere data. Denne sammenkoblingen øker eksplosjonsradiusen, slik at ett kompromiss sprer seg til utallige nedstrømsbrukere.

Målene ser ut til å være skjeve mot Unix-lignende systemer. Analysen bemerker at de fleste ondsinnet logikk kjøres på Linux og macOS, basert på miljøsjekker, selv om fasen med å oppdage hemmeligheter (spesielt med TruffleHog) kan forekomme i et bredere spekter. Dette fokuset innsnevret ormens fotavtrykk, men etterlot fortsatt et bredt spekter av utviklermaskiner eksponert.

Pakker fra flere kjente organisasjoner ble påvirket, sammen med populære fellesskapsmoduler. I et høyprofilert eksempel, @ctrl/litenfarge Pakken – som ble lastet ned millioner av ganger i uken – ble trukket inn i kampen, noe som demonstrerte hvor dypt infeksjonen kunne grave seg inn i avhengighetsgrafen.

npm-pakker kompromissillustrasjon

Hvordan ormen fungerer (teknisk oversikt)

Kjernenyttelasten sendes som en kraftig JavaScript-fil, ofte kalt bundle.js (over 3 MB i observerte eksempler). Den kjøres via en postinstall-krok lagt til package.json, som betyr at den skadelige koden kjører automatisk rett etter at en bruker installerer pakken fra npm.

Inne i bundle.js er det moduler for GitHub API-interaksjon, sky-SDK-er (AWS/GCP), nettverkshjelpere og rutiner for å kjøre TruffleHog for hemmelig oppdagelse. Skriptet inventariserer operativsystemet, finner et npm-token og sjekker etter et gyldig GitHub-token. Hvis ingen blir funnet, stopper det – ellers starter det eksfiltrering og replikering.

En bemerkelsesverdig særegenhet: noen infiserte pakker inneholdt et arkiv med navnet pakke.tar i stedet for den vanlige navnekonvensjonen, en melding som hjalp forskere med å flagge kompromitterte artefakter. Analytikere observerte også en variant som ble utført som en preinstall-krok; et tidlig tilfelle som ble sitert var ngx-bootstrap 18.1.4, som kan ha tjent som et innledende brohode i spredningen.

Når den kjører, lister skadevaren opp utviklerens mest nedlastede pakker via npm search API, pakker ut hver tarball, fjerner bundle.js, injiserer en postinstall-kommando, oppgraderer versjonen og publiserer på nytt til npm med offerets token. Dette gjør utviklerens portefølje til et redskap for ytterligere infeksjoner.

Hemmelighetsutvinning og GitHub-arbeidsflyter

For innsamling av legitimasjonsinformasjon skanner Shai-Hulud etter npm-tokens, GitHub Personal Access Tokens og Cloud API-nøkler (AWS, GCP, Azure). Deretter oppretter den et offentlig GitHub-repo kalt «Shai‑Hulud» under offerets konto, og lagrer en datafil (f.eks. data.json) med de stjålne hemmelighetene – og eksponerer dem effektivt for verden.

Parallelt observerte forskere en utspekulert GitHub Actions-vinkel: ormen oppretter en gren kalt «shai‑hulud» på tvers av tilgjengelige databaser og sender en arbeidsflytfil (shai-hulud-workflow.yml). Arbeidsflyten, som utløses ved sendinger, samler inn hemmeligheter og sender dem til angriperens infrastruktur, noen ganger etter dobbel Base64-koding å tilsløre innhold underveis.

Det finnes også bevis på et migrasjonsskript som kloner private/interne repositorier fra organisasjoner offeret har tilgang til, og lagrer dem på nytt i brukerens konto som offentlige speil. Målet ser ut til å være automatisert kildekodetyveri fra private prosjekter, noe som øker presset på berørte organisasjoner.

Flere rapporter påpeker gjenstander av AI-assistanse i bash-skriptene (kommentarer og til og med emojier), noe som tyder på at angriperen kan ha brukt en LLM skal akselerere utviklingen av automatiseringskomponentene til skadevaren.

Omfang og bemerkelsesverdige pakker

På tvers av koordinerte fjerninger fjernet GitHub 500+ kompromitterte versjoner for å stoppe ormens spredning. Selv om den nøyaktige summen fortsetter å utvikle seg, spenner listen over en rekke økosystemer og organisasjoner, med nedstrøms innvirkning på utviklere som oppdaterte i løpet av det aktive vinduet.

Blant ofte siterte pakker og navnerom: @ctrl/litenfarge (millioner av ukentlige nedlastinger), flere @folkemengdestrike/* komponenter (som commitlint og UI-biblioteker), og et bredt utvalg av fellesskapsmoduler, inkludert ngx-bootstrap, ng2-filopplasting, ngx-toasterog mer. CrowdStrike indikerte at kjerneplattformen forble upåvirket, og at nøklene ble rotert raskt etter å ha oppdaget ondsinnede oppføringer i det offentlige registeret.

  • Eksempler knyttet til bølgen: @ctrl/tinycolor; @crowdstrike/commitlint; @crowdstrike/foundry-js; @crowdstrike/glide-core; ngx-bootstrap; ng2-file-upload; ngx-toastr; @nativescript-community/*; @teselagen/*; @things-factory/*; og andre.
  • Forskerne så også flere skadelige versjoner per pakke i noen tilfeller – sannsynligvis på grunn av at ormen sprer seg via flere vedlikeholders kontoer innenfor samme prosjekt.

Plattformrespons og sikkerhetsendringer

GitHubs umiddelbare handlinger inkluderte tømming av kjente skadede pakker fra npm og blokkering av opplastinger som samsvarer med kompromissindikatorer (IoC-er). Selskapet ruller også ut strengere publiseringskontroller: obligatorisk 2FA for lokal publisering, kortere levetid for granulære tokener (f.eks. syv dager) og bredere bruk av Pålitelig publisering for å redusere avhengigheten av langvarige hemmeligheter.

Kommende endringer vil avvikle eldre klassiske tokener og TOTP-basert 2FA for publisering, standard for å forby tokenpublisering, og utvide leverandører for Trusted Publishing. GitHub har signalisert en gradvis utrulling med dokumentasjon og migreringsveiledninger, i erkjennelse av at noen arbeidsflyter vil trenge justeringer.

Trusselinformasjons- og hendelsesresponsteam i hele bransjen (inkludert Unit 42, Kaspersky, Trend Micro og andre) har utstedte veiledninger og deteksjoner samtidig som de deler IOC-er med kolleger og allianser for å akselerere beskyttelsesoppdateringer.

Hvordan redusere risikoen akkurat nå

Handle raskt under antagelsen om at enhver utviklermaskin som nylig installerte npm-pakker kan ha lekket hemmeligheter. Prioriteten er å inneholder misbruk av legitimasjon, stoppe persistens og eliminere skadede avhengigheter fra byggekjeder.

  • Roter npm-tokener, GitHub PAT-er/SSH-nøkler og skylegitimasjon (AWS/GCP/Azure) umiddelbart; anse alle hemmeligheter som finnes på utviklerverter som kompromittert.
  • Revider avhengigheter via package-lock.json/yarn.lock; fjern eller fest vekk fra kjente kompromitterte versjoner; installer på nytt fra rene kildekoder.
  • Håndhev MFA/2FA på tvers av GitHub og npm; gå over til Trusted Publishing der det er mulig for å kutte ut langlivede tokener fra løkken.
  • Gransk GitHub for uventede offentlige repoer kalt «Shai‑Hulud», ukjente grener eller arbeidsflyter og avvikende handlingskjøringer.
  • Herde CI/CD med RBAC med minst mulig privilegium, artefaktsignering/verifisering og kontinuerlig SCA-skanning; behandle forbruk av åpen kildekode som en styrt risiko.

Tips for trusseljakt (kontroller av høyt signal)

Se etter utgående forbindelser til webhook.site domener, spesielt URI-en som er observert i flere rapporter. Søk etter tilstedeværelsen av endepunkter bundle.js i midlertidige kataloger eller pakkekataloger og for en GitHub Actions-fil med navnet shai-hulud-arbeidsflyt.yml.

  • Nettverkstelemetri: DNS/URL-logger som inneholder webhook.site; flagg den spesifikke banen bb8ca5f6‑4175‑45d2‑b042‑fc9ebb8170b7 hvis den sees.
  • Filtelemetri: oppretting eller kjøring av bundle.js; tilstedeværelsen av shai-hulud-workflow.yml på Linux/macOS-utviklerverter.
  • Prosesstelemetri: TruffleHog-påkallelser der det ikke forventes (merk at legitim bruk kan eksistere i noen organisasjoner).

Indikatorer for kompromiss (IoC-er)

Ledetråder i fil og streng sett på tvers av undersøkelser inkluderer bundle.js og shai-hulud-arbeidsflyt.yml, med den bokstavelige strengen 'shai-hulud' som vises i grener, repoer og arbeidsflyter.

  • Filer: bundle.js; shai-hulud-workflow.yml
  • Strenger: shai-hulud; pakke.tar
  • Hashes (selected): 46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09; b74caeaa75e077c99f7d44f46daaf9796a3be43ecf24f2a1fd381844669da777; dc67467a39b70d1cd4c1f7f7a459b35058163592f4a9e8fb4dffcbba98ef210c; 4b2399646573bb737c4969563303d8ee2e9ddbd1b271f1ca9e35ea78062538db; C96FBBE010DD4C5BFB801780856EC228; 78E701F42B76CCDE3F2678E548886860
  • Nettverk: https://webhook.site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7 (varianter og underbaner observert)

Tidslinje og pågående analyse

Rapporter tilskriver den første oppdagelsen til midten av september 2025, med toppinndempningsaksjoner rundt 16.–19. septemberGitHub og flere leverandører har siden oppdatert beskyttelse, deteksjon og veiledning. Forvent ytterligere tilbakevirkende funn etter hvert som organisasjoner fullfører hendelsesgjennomganger og utvider lister over berørte versjoner.

Noe bevis tyder på at hendelsen bygget på tidligere hemmelige lekkasjer, noe som understreker hvordan langlivede tokener og hurtigbufret legitimasjon kan gi næring til nye bølger av kompromittering måneder senere. Dette bør forsterke arbeidet med å forkorte tokenenes levetid og ta i bruk publiseringsmodeller som minimere hemmelig spredning.

Ikke alle rapporter er enige om nøyaktige totaler eller pakker som er de første i kjeden, men det generelle bildet stemmer overens: a selvreplikerende npm-orm som bevæpnet utviklertillit og automatiserte publiseringsrettigheter for å skalere raskt – raskere enn mange team kunne oppdage bare ved manuell gjennomgang.

Hendelsen illustrerer hvor raskt moderne byggeprosesser kan bli til motorveier for skadelig programvare. stramme inn autentiseringen, fjerne langlivede tokener fra banen, herde CI/CD og aggressivt jakte på IoC-er, kan organisasjoner begrense eksponering i dag og gjøre den neste bølgen mye vanskeligere å gjennomføre.

Relaterte innlegg: