En igangværende forsyningskædekampagne viser, hvordan skadelige npm-pakker kan omgå installationsbeskyttelse ved at blive aktiveret under normal brug af applikationer. Pakken indexed-btree skjuler sin malware-loader i en ofte anvendt funktion i stedet for at bruge installationsscripts, som kan opdages.

Pakken udgiver sig for at være et populært bibliotek

Sikkerhedsforskere hos Checkmarx opdagede den skadelige indexed-btree-pakke under en undersøgelse af trusler mod npm-forsyningskæden.

Pakken forsøger at efterligne sorted-btree, som er et legitimt bibliotek med omkring to millioner ugentlige downloads. Angribere bruger ofte denne taktik til at ramme udviklere, der skriver et pakkenavn forkert eller forveksler en kopi med det rigtige projekt.

Indexed-btree præsenterer sig også som et legitimt softwarebibliotek. Skaberne opbyggede et overbevisende kodelager, skabte en detaljeret historik over kodeændringer og vedligeholdt omhyggeligt den tilknyttede udviklerkonto.

Derfor bemærker udviklere, som undersøger projektet, muligvis ikke umiddelbart noget mistænkeligt.

Checkmarx forbandt også yderligere ni npm-pakker med den samme kampagne. npm har siden fjernet disse pakker fra sit register.

npm blokerer ikke-godkendte installationsscripts

GitHub annoncerede yderligere beskyttelsesforanstaltninger for npm i juni 2026, efter at gentagne angreb havde forstyrret økosystemet for open source-software.

En vigtig foranstaltning begrænser livscyklusscripts for afhængigheder. Pakker kan bruge scripts som preinstall, install og postinstall til at køre kode, mens npm installerer dem.

Trusselsaktører har ofte misbrugt disse scripts til at inficere udvikleres systemer. Derfor blokerer npm v12 dem, medmindre brugeren giver udtrykkelig tilladelse.

Yderligere beskyttelsesforanstaltninger forhindrer npm i automatisk at downloade afhængigheder fra Git-kodelagre eller eksterne webadresser uden tilladelse.

Disse kontroller kan stoppe malware, der aktiveres under installationen af en pakke. De kan dog ikke beskytte mod alle eksekveringsveje.

Malwaren venter til kørselstidspunktet

Indexed-btree undgår livscyklusscripts fuldstændigt. Derfor fremstår installationen som ren og udløser ikke npm’s godkendelsesproces.

I stedet skjuler pakken sin loader i metoden BTree.prototype.set(). Applikationer bruger denne kernefunktion til at tilføje eller opdatere værdier i en B-trædatastruktur.

Den skadelige kode aktiveres kun, når en applikation kalder metoden med en bestemt nøgleværdi. Derfor kan pakken forblive inaktiv under installationen og de indledende sikkerhedskontroller.

Når udløseren optræder, starter funktionen en obfuskeret fil med navnet sharedLoad.min.js. Denne fil indeholder malwarens første fase.

Indlejringen af loaderen i en legitim og ofte anvendt metode gør også analysen vanskeligere. Statiske scannere kan fortolke funktionen som almindelig biblioteksadfærd.

Udløser ved kørsel undgår sikkerhedsscannere

Mange sikkerhedsværktøjer til softwareforsyningskæder fokuserer på installationsaktivitet, kendte mønstre for skadelig kode og mistænkelige datastrømme.

Skadelige npm-pakker kan dog omgå disse kontroller ved at placere skadelig logik i gyldige applikationsfunktioner. Koden aktiveres muligvis kun under bestemte betingelser ved kørsel.

Denne tilgang begrænser de synlige indikatorer under installationen. Den gør også automatiseret analyse mindre pålidelig, fordi scanneren muligvis aldrig genskaber den nødvendige udløser.

Desuden bruger loaderen obfuskering til at skjule sin adfærd. Sikkerhedsværktøjer skal derfor identificere både den skjulte aktiveringsbetingelse og den kodede skadelige logik.

Kampagnen viser, hvorfor en ren installation ikke garanterer, at en pakke er sikker.

Malwaren indsamler systemoplysninger

Efter aktivering indsamler malwaren oplysninger om den inficerede computer.

De indsamlede oplysninger omfatter systemarkitektur, værtsnavn, processor, tilgængelig hukommelse og oppetid. Disse oplysninger kan hjælpe angriberne med at vurdere det kompromitterede miljø.

Operatørerne kan eksempelvis bruge oplysningerne til at identificere værdifulde udviklingssystemer eller undgå uegnede mål.

Malwaren sender derefter de indsamlede data via hardkodede Slack- og Telegram-kanaler. Disse legitime tjenester kan give trusselsaktører en praktisk kommunikationsinfrastruktur.

Fordi mange organisationer tillader trafik til disse platforme, kan dataoverførslerne falde ind i den normale netværksaktivitet.

Ethereum-kontrakt leverer kommandoer

Malwaren undersøger også en Ethereum-smartkontrakt for kommando- og kontroloplysninger.

Mere specifikt kontrollerer den regelmæssigt en kontrakt på Sepolia-testnetværket. Angriberne kan opdatere kontrakten for at levere instruktioner eller placeringer til yderligere payloads.

Denne decentraliserede tilgang reducerer afhængigheden af en traditionel kommando- og kontrolserver. Sikkerhedsteams kan ikke nemt lukke kanalen ved at fjerne et enkelt domæne.

Malwaren bruger en X25519-nøgleudveksling til at generere en krypteringsnøgle. Derefter bruger den nøglen med AES-kryptering til at låse op for en andenfase-payload, som er gemt i kontrakten.

Dette design hjælper med at skjule både payloaden og dens instruktioner for forskere, der overvåger blockchainen.

Malwaren kan slette sine egne spor

Kampagnen omfatter en oprydningsfunktion, som hjælper operatørerne med at skjule deres aktiviteter.

Når angriberne beslutter at afslutte en infektion, kan malwaren slette sine filer fra det berørte system. Den kan også fjerne den skadelige udløser fra pakkekoden.

Denne funktion kan gøre senere kriminaltekniske undersøgelser vanskeligere. En udvikler kan beholde den kompromitterede pakke uden at se den oprindelige skadelige kode.

Desuden kan oprydningsprocessen reducere mængden af beviser, der er tilgængelige for incident response-teams. Organisationer kan få svært ved at fastslå, hvilke systemer der kørte malwaren, eller hvilke oplysninger den indsamlede.

Forskere finder ni relaterede pakker

Checkmarx forbandt ni andre pakker med den samme operation. Tilsammen opnåede de millioner af downloads:

  • ordered-kv-index – 448.184 downloads
  • btree-leaderboard – 493.685 downloads
  • priority-slot-queue – 402.860 downloads
  • btree-range-store – 468.092 downloads
  • btree-core – 1.951.274 downloads
  • btree-time-index – 425.312 downloads
  • btree-lru-cache – 372.185 downloads
  • neighbor-key-map – 366.019 downloads
  • sliding-score-window – 448.024 downloads

npm har fjernet alle ni pakker. Deres downloadtal viser dog, at forsyningskædekampagner kan nå mange udviklingsmiljøer, før de bliver opdaget.

Antallet af downloads svarer ikke nødvendigvis til antallet af inficerede systemer. Automatiserede builds, spejle og gentagne installationer kan øge pakkestatistikkerne betydeligt.

Kryptowallet indeholder 109 ETH

Checkmarx identificerede også en kryptowallet, der var forbundet med kampagnens operatører.

Walleten indeholdt angiveligt 109 ETH. Forskerne fastslog dog ikke, at midlerne stammede fra kryptotyveri eller aktiviteter forbundet med denne malware.

Saldoen alene bekræfter derfor ikke, hvor mange penge angriberne tjente gennem kampagnen.

Opdagelsen antyder dog, at økonomisk motiverede trusselsaktører med betydelige ressourcer kan stå bag operationen.

Udviklere har brug for overvågning under kørsel

Kampagnen viser, at udviklere ikke udelukkende kan stole på scanning under installationen.

Sikkerhedsteams bør også overvåge, hvordan tredjepartspakker opfører sig, mens applikationer kører. Mistænkelige netværksforbindelser, systemkortlægning og uventet adgang til beskedplatforme kræver nærmere undersøgelse.

Organisationer bør gennemgå deres oversigter over afhængigheder og søge efter indexed-btree eller en af de ni relaterede pakker.

Alle, der har installeret disse skadelige npm-pakker, bør udskifte loginoplysninger, tokens og andre hemmeligheder, som er gemt i det berørte miljø.

Udviklere bør også gendanne kompromitterede systemer fra en pålidelig sikkerhedskopi, hvor det er muligt. Det er muligvis ikke tilstrækkeligt blot at slette pakken for at fjerne yderligere payloads eller fortryde ændringer, der blev foretaget efter infektionen.

I sidste ende kan skadelige npm-pakker udnytte normal adfærd under kørsel til at omgå kontroller, der er udviklet med fokus på installation. Forsyningskædesikkerhed skal derfor undersøge, hvad afhængigheder gør, efter at udviklere begynder at bruge dem.


0 svar til “Skadelige npm-pakker omgår installationsbeskyttelse under kørsel”