Der er registreret et andet angreb på pakker i NPM-repositoriet, udført ved hjælp af en modificeret selvreproducerende orm kaldet Shai-Hulud, som indsætter malware i afhængigheder. Som følge af angrebet er der offentliggjort skadelige udgivelser af 605 pakker, der i alt har over 100 millioner downloads.
For at udføre angrebet har angriberne via phishing opfanget kontooplysningerne fra vedligeholderen af en populær pakke, der bruges som afhængighed af mange andre pakker. Ved at udnytte den opfangede konto har angriberne offentliggjort en udgivelse af pakken, der har fået tilføjet kode til at aktivere ormen, når en berørt pakke installeres som afhængighed. Den aktiverede orm søger efter legitimationsoplysninger i det nuværende miljø ved at downloade og køre TruffleHog-værktøjet.
Hvis ormen opdager en NPM-forbindelsestoken, offentliggør den automatisk nye skadelige udgivelser for pakker, der udvikles i det nuværende miljø. På denne måde rammes hele afhængighedstræet kædemæssigt. Udover NPM-token gemmer ormen adgangsnøgler til GitHub og cloud-tjenester som AWS, Azure og GCP (Google Cloud Platform), samt miljøvariabler og andre fortrolige oplysninger, som TruffleHog-scanneren kan opdage.
De fortrolige oplysninger, der findes i systemet, uploades til GitHub gennem oprettelse af repositories med tilfældige navne (f.eks. "qzx15djl71alh6p80h") og med beskrivelsen "Sha1-Hulud: The Second Coming". Desuden udskriver de i kodet format til GitHub Actions-logs. I det oprettede repository placeres en fil i JSON-format (f.eks. jsonactionsSecrets.json eller contents.json), som indeholder en streng med base64-kodede oplysninger om systemet, miljøvariabler og opfangede data. For at overføre oplysninger fra CI-systemer baseret på GitHub opretter ormen en GitHub Actions-handler med navnet ".github/workflows/formatter_123456789.yml" og konfigurerer en runner med navnet SHA1HULUD.
Forskellene fra det lignende septemberangreb omhandler en anden metode til indsættelse af skadelig kode i pakken. I de frembragte skadelige udgivelser af ormen angives der støtte til JavaScript-platformen Bun. Kommandoen "node setup_bun.js" tilføjes i sektionen "preinstall" i package.json, der definerer de scripts, der køres før installationen begynder.

Filens «setup_bun.js» indeholder kode til eksekvering af det obfuskerede script «bun_environment.js», som indeholder ormekode. For sin videre spredning finder ormen pakkenes kode, foretager ændringer i filen package.json (øger versionsnummeret og inkluderer et kald til setup_bun.js), tilføjer filerne setup_bun.js og bun_environment.js, ompakker pakken og udfører kommandoen «npm publish» for at udgive den nye version.
Blandt de kompromitterede populære pakker: @zapier/zapier-sdk (2,8 millioner downloads om ugen), @posthog/core (2,8 millioner), posthog-node (1,5 millioner), @asyncapi/specs (1,4 millioner), @postman/tunnel-agent (1,2 millioner). Det antages, at angrebet begyndte med kompromitteringen af den pakke, der følger med @asyncapi/specs.
Kilde: opennet.ru
