En pågående leverandørkjedekampanje viser hvordan skadelige npm-pakker kan omgå installasjonsbeskyttelse ved å aktiveres under normal bruk av applikasjoner. Pakken indexed-btree skjuler skadevarelasteren i en funksjon som brukes ofte, i stedet for å benytte oppdagbare installasjonsskript.

Pakken utgir seg for å være et populært bibliotek

Sikkerhetsforskere hos Checkmarx oppdaget den skadelige pakken indexed-btree under en undersøkelse av trusler mot npm-forsyningskjeden.

Pakken forsøker å etterligne sorted-btree, et legitimt bibliotek med rundt to millioner nedlastinger i uken. Angripere bruker ofte denne taktikken for å ramme utviklere som skriver et pakkenavn feil eller forveksler en kopi med det ekte prosjektet.

Indexed-btree fremstiller seg også som et legitimt programvarebibliotek. Skaperne bygde et overbevisende kodelager, opprettet en detaljert historikk over kodeendringer og vedlikeholdt den tilknyttede utviklerkontoen grundig.

Dermed vil utviklere som undersøker prosjektet, kanskje ikke umiddelbart oppdage noe mistenkelig.

Checkmarx knyttet også ni andre npm-pakker til den samme kampanjen. npm har siden fjernet disse pakkene fra registeret sitt.

npm blokkerer installasjonsskript uten godkjenning

GitHub kunngjorde ytterligere beskyttelsestiltak for npm i juni 2026 etter at gjentatte angrep hadde forstyrret økosystemet for åpen kildekode.

Et viktig tiltak begrenser livssyklusskript for avhengigheter. Pakker kan bruke skriptene preinstall, install og postinstall til å kjøre kode mens npm installerer dem.

Trusselaktører har ofte misbrukt disse skriptene til å infisere utviklersystemer. Derfor blokkerer npm v12 dem med mindre brukeren gir uttrykkelig godkjenning.

Ytterligere beskyttelsestiltak hindrer npm i å laste ned avhengigheter automatisk fra Git-kodelagre eller eksterne nettadresser uten tillatelse.

Disse kontrollene kan stoppe skadevare som aktiveres under pakkeinstallasjonen. De kan imidlertid ikke beskytte mot alle kjøringsveier.

Skadevaren venter til kjøretid

Indexed-btree unngår livssyklusskript fullstendig. Derfor fremstår installasjonen som ren og utløser ikke npm sin godkjenningsprosess.

I stedet skjuler pakken lasteren sin i metoden BTree.prototype.set(). Applikasjoner bruker denne sentrale funksjonen til å legge til eller oppdatere verdier i en B-tre-datastruktur.

Den skadelige koden aktiveres bare når en applikasjon kaller metoden med en bestemt nøkkelverdi. Dermed kan pakken forbli inaktiv under installasjonen og de første sikkerhetskontrollene.

Når utløseren dukker opp, starter funksjonen en obfuskert fil kalt sharedLoad.min.js. Denne filen inneholder skadevarens første trinn.

Det å skjule lasteren i en legitim og ofte brukt metode gjør også analysen vanskeligere. Statiske skannere kan tolke funksjonen som vanlig bibliotekatferd.

Utløser ved kjøretid unngår sikkerhetsskannere

Mange verktøy for sikkerhet i programvareleverandørkjeden fokuserer på installasjonsaktivitet, kjente mønstre for skadelig kode og mistenkelige dataflyter.

Skadelige npm-pakker kan imidlertid unngå disse kontrollene ved å plassere skadelig logikk i gyldige applikasjonsfunksjoner. Koden aktiveres kanskje bare under bestemte kjøretidsforhold.

Denne metoden begrenser de synlige indikatorene under installasjonen. Den gjør også automatisert analyse mindre pålitelig fordi skanneren kanskje aldri gjenskaper den nødvendige utløseren.

Lasteren bruker dessuten obfuskering for å skjule atferden sin. Sikkerhetsverktøy må derfor identifisere både den skjulte aktiveringsbetingelsen og den kodede skadelige logikken.

Kampanjen viser hvorfor en ren installasjon ikke garanterer at en pakke er trygg.

Skadevaren samler inn systeminformasjon

Etter aktivering samler skadevaren inn opplysninger om den infiserte datamaskinen.

Informasjonen omfatter systemarkitektur, vertsnavn, prosessor, tilgjengelig minne og oppetid. Opplysningene kan hjelpe angriperne med å vurdere det kompromitterte miljøet.

Operatørene kan for eksempel bruke informasjonen til å identifisere verdifulle utviklingssystemer eller unngå uegnede mål.

Skadevaren sender deretter de innsamlede opplysningene gjennom hardkodede Slack- og Telegram-kanaler. Disse legitime tjenestene kan gi trusselaktører praktisk kommunikasjonsinfrastruktur.

Fordi mange organisasjoner tillater trafikk til disse plattformene, kan dataoverføringene gli inn i vanlig nettverksaktivitet.

Ethereum-kontrakt leverer kommandoer

Skadevaren undersøker også en smartkontrakt på Ethereum for kommando- og kontrollinformasjon.

Mer spesifikt sjekker den regelmessig en kontrakt på testnettverket Sepolia. Angriperne kan oppdatere kontrakten for å levere instruksjoner eller plasseringer for ytterligere nyttelaster.

Denne desentraliserte metoden reduserer avhengigheten av en tradisjonell kommando- og kontrollserver. Sikkerhetsteam kan ikke enkelt stenge kanalen ved å slå ut ett enkelt domene.

Skadevaren bruker en X25519-nøkkelutveksling til å generere en krypteringsnøkkel. Deretter bruker den nøkkelen med AES-kryptering for å låse opp en nyttelast for det andre trinnet som er lagret i kontrakten.

Denne utformingen bidrar til å skjule både nyttelasten og instruksjonene for forskere som overvåker blokkjeden.

Skadevaren kan slette sine egne spor

Kampanjen inneholder en oppryddingsfunksjon som hjelper operatørene med å skjule aktiviteten sin.

Når angriperne bestemmer seg for å avslutte en infeksjon, kan skadevaren slette filene sine fra det berørte systemet. Den kan også fjerne den skadelige utløseren fra pakkekoden.

Denne funksjonen kan gjøre senere kriminaltekniske undersøkelser vanskeligere. En utvikler kan beholde den kompromitterte pakken uten å se den opprinnelige skadelige koden.

Oppryddingsprosessen kan dessuten redusere bevismengden som er tilgjengelig for hendelseshåndterere. Organisasjoner kan få problemer med å fastslå hvilke systemer som kjørte skadevaren, eller hvilken informasjon den samlet inn.

Forskere finner ni relaterte pakker

Checkmarx knyttet ni andre pakker til den samme operasjonen. Til sammen samlet de millioner av nedlastinger:

  • ordered-kv-index – 448 184 nedlastinger
  • btree-leaderboard – 493 685 nedlastinger
  • priority-slot-queue – 402 860 nedlastinger
  • btree-range-store – 468 092 nedlastinger
  • btree-core – 1 951 274 nedlastinger
  • btree-time-index – 425 312 nedlastinger
  • btree-lru-cache – 372 185 nedlastinger
  • neighbor-key-map – 366 019 nedlastinger
  • sliding-score-window – 448 024 nedlastinger

npm har fjernet alle de ni pakkene. Nedlastingstallene viser imidlertid at leverandørkjedekampanjer kan nå mange utviklingsmiljøer før de oppdages.

Antallet nedlastinger tilsvarer ikke nødvendigvis antallet infiserte systemer. Automatiserte bygg, speil og gjentatte installasjoner kan øke pakkestatistikken betydelig.

Kryptolommebok inneholder 109 ETH

Checkmarx identifiserte også en kryptolommebok som var knyttet til operatørene bak kampanjen.

Lommeboken inneholdt angivelig 109 ETH. Forskerne fastslo imidlertid ikke at midlene stammet fra kryptotyveri eller aktivitet knyttet til denne skadevaren.

Saldoen alene bekrefter derfor ikke hvor mye penger angriperne tjente på kampanjen.

Likevel tyder funnet på at økonomisk motiverte trusselaktører med betydelige ressurser kan stå bak operasjonen.

Utviklere trenger overvåking under kjøring

Kampanjen viser at utviklere ikke kan stole utelukkende på skanning under installasjonen.

Sikkerhetsteam bør også overvåke hvordan tredjepartspakker oppfører seg mens applikasjoner kjører. Mistenkelige nettverkstilkoblinger, systemkartlegging og uventet tilgang til meldingsplattformer krever nærmere undersøkelser.

Organisasjoner bør gjennomgå oversiktene over avhengigheter og søke etter indexed-btree eller noen av de ni relaterte pakkene.

Alle som har installert disse skadelige npm-pakkene, bør bytte ut innloggingsopplysninger, tokener og andre hemmeligheter som er lagret i det berørte miljøet.

Utviklere bør også gjenopprette kompromitterte systemer fra en pålitelig sikkerhetskopi der det er mulig. Det å bare slette pakken fjerner kanskje ikke ytterligere nyttelaster eller reverserer endringer som ble utført etter infeksjonen.

Til syvende og sist kan skadelige npm-pakker utnytte normal kjøretidsatferd for å omgå kontroller som er utformet med tanke på installasjon. Sikkerhet i leverandørkjeden må derfor undersøke hva avhengigheter gjør etter at utviklere begynner å bruke dem.


0 responses to “Skadelige npm-pakker omgår installasjonsbeskyttelse under kjøring”