indexed-btree tjente 109 ETH på å flytte lasteren inn i bibliotekskoden
Slutt å stole på at blokkerte livssyklus-skript stopper npm-skadevare, for indexed-btree kjørte lasteren rett fra bibliotekskoden.
Pakken hermet etter sorted-btree, et helt ordinært B-tre- og indekseringsverktøy, og rørte ikke installasjonen i det hele tatt, skriver Checkmarx i en analyse gjengitt av The Hacker News. Lasteren lå gjemt inne i metoden BTree.prototype.set(), altså i en funksjon du selv kaller når du bruker biblioteket til det det utgir seg for å gjøre.
Tidspunktet er poenget. npm versjon 12 innførte en sikkerhetsendring som hindrer automatisk kjøring av livssyklus-skript som preinstall og postinstall, den vanligste veien inn for skadevare i registeret. Angriperne flyttet kjøringen dit kontrollen ikke ser etter: inn i legitim kode som først gjør noe når applikasjonen er i drift.
«I motsetning til de vanlige angrepene vi har sett i forsyningskjeden, bruker ikke denne pakken preinstall eller postinstall i det hele tatt. Den kjører utelukkende fra applikasjonskoden under kjøring.» — Checkmarx
Kjeden videre er bygget for å overleve opprydding. Når metoden kalles, trigges sharedLoad.min.js, som bærer et obfuskert førstetrinn. Det kartlegger verten, rapporterer detaljene til en hardkodet Slack-kanal og en Telegram-bot, og henter krypterte blokker fra en smartkontrakt utplassert på Sepolia-testnettet. Teknikken kalles EtherHiding, og den gjør at nedtakinger av vanlige servere ikke hjelper. Blokkene settes sammen til andretrinnet. Siste steg er å slette skadeartefaktene og fjerne utløseren fra pakkekoden igjen.
Pakken ble lastet opp 18. juni 2026 av npm-brukeren charlessadler25 og fikk millioner av nedlastinger på kort tid. Både pakken og GitHub-repoet er nå borte. Checkmarx knytter ti andre pakker til samme operasjon, blant dem btree-core, btree-lru-cache, priority-slot-queue og mutex-forge, alle fjernet fra npm. Operasjonen skal ha gitt angriperen rundt 109 ETH, omtrent 230 900 euro.
«Sikkerhetstiltak endrer angriperens oppførsel i stedet for å fjerne den underliggende trusselen.» — Ensar Seker, sikkerhetssjef i SOCRadar
Mønsteret gjentar seg utenfor npm. Socket fjernet skadelig kode i dev-main-versjonen av Packagist-pakken visanduma/nova-two-factor, som har over 700 000 nedlastinger totalt, som del av den nordkorea-knyttede kampanjen PolinRider. Der er selve pakkeregisteret bare et biprodukt: angriperne tar over utviklerkontoer, skriver om Git-historikk og bruker helt dagligdagse handlinger som å klone et repo eller åpne det i en IDE som utløser for infeksjonen.
Hva bør du gjøre?
- Analyser oppførsel under kjøring, ikke bare ved installasjon. Skanning ved install og blokkering av livssyklus-skript fanger ikke kode som først gjør noe når du kaller den.
- Søk gjennom låsefilene dine etter de elleve pakkenavnene. Finner du indexed-btree, btree-core, btree-lru-cache eller en av søsknene, er det ikke nok å avinstallere. Legitimasjon som lå på maskinen må regnes som lekket.
- Se etter utgående trafikk til Slack, Telegram og RPC-endepunkter for Sepolia fra byggemaskinene dine. Det er der både rapporteringen og EtherHiding viser seg.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.