Jscrambler npm-pakke kompromittert: Rust Infostealer retter seg mot utviklerlegitimasjon og AI-verktøy

Siste oppdatering: 07/13/2026
Forfatter: C SourceTrail
  • En ondsinnet versjon av jscrambler (8.14.0) ble publisert på npm ved bruk av en stjålet legitimasjon, som inneholdt en skjult forhåndsinstallasjonskrok som slipper en plattformuavhengig Rust-infostealer.
  • Tyveren retter seg mot skylegitimasjon, kryptolommebøker, passordbehandlere, konfigurasjoner for AI-kodingsverktøy og meldingsapper, og inkluderer også kjernenivåfunksjoner på Linux.
  • Angriperen sendte ut fem ondsinnede versjoner i løpet av tre timer, med senere versjoner som omgikk --ignore-scripts ved å legge inn dropperen i hovedkoden.
  • Jscrambler har gitt ut en ren versjon (8.22.0) og anbefaler brukere å rotere all eksponert legitimasjon og revidere systemene sine.

Illustrasjon av Jscrambler npm-forsyningskjedeangrep

11. juli 2026 ble npm-pakken for Jscrambler, en kjent JavaScript-forvirrings- og sikkerhetsleverandør, rammet av et forsyningskjedeangrep som gikk langt utover en enkel kodeinjeksjon. Angriperen brukte en stjålet npm-publiseringslegitimasjon for å presse versjon 8.14.0, som hadde en preinstall-krok som stille droppet og kjørte en innebygd binærfil på offerets maskin. Socket.dev flagget den skadelige utgivelsen bare seks minutter etter at den traff registeret, men da var skaden allerede skjedd for alle som installerte den i løpet av det vinduet.

Den kompromitterte pakken var ikke en isolert hendelse. I løpet av de neste tre timene sendte den samme aktøren ut fire skadelige versjoner til – 8.16.0, 8.17.0, 8.18.0 og 8.20.0 – som hver hadde den samme plattformuavhengige Rust-infostealeren . Angrepet utnyttet en grunnleggende tillit i npm-økosystemet, der én kompromittert konto kan gjøre et legitimt utviklingsverktøy om til et våpen rettet mot utviklerne som er avhengige av det.

Angrepet: En stjålet legitimasjon og en skjult nyttelast

Versjon 8.14.0 introduserte to nye filer som ikke var tilstede i den forrige rene utgivelsen, 8.13.0: dist/setup.js og dist/intro.js . Til tross for navnet var intro.js ikke JavaScript, men en container på omtrent 7.8 MB som inneholdt tre gzip-komprimerte, native binærfiler – én for hver av Linux x86-64, Windows x86-64 og macOS arm64. Under installasjonen identifiserte setup.js vertsoperativsystemet, skrev den tilsvarende binærfilen til en tilfeldig navngitt fil i systemets midlertidige katalog, markerte den som kjørbar og startet den med utdata skjult. Nyttelasten kjørte deretter med de samme rettighetene som installasjonsprosessen, som på en utviklermaskin eller CI-kjører ofte inkluderer tilgang til sensitive legitimasjonsopplysninger og tokener.

Jscrambler bekreftet senere at angriperen hadde kompromittert en npm-publiseringslegitimasjon og brukt den til å omgå prosjektets normale utgivelsesflyt. Ingen samsvarende commit, tag eller pull-forespørsel fantes i det offentlige GitHub-depotet for versjon 8.14.0. Versjonen ble sendt direkte til npm, og pekte på en kapret konto eller byggepipeline. Selskapet tilbakekalte legitimasjonen, roterte hemmeligheter og forsterket publiseringspipeline, men de skadelige versjonene forble på npm – avskrevet, men fortsatt installerbare av Exact-versjonen.

Hva tyveren sikter mot

Rust-bygde infostealeren ble designet med en bred og utviklerfokusert målliste. Ifølge analyser fra Socket, StepSecurity og JFrog, søker den etter skylegitimasjon fra AWS, Azure og Google Cloud , inkludert metadata-endepunkter som brukes av CI-løpere. Den jakter også på kryptovaluta-lommebøker og frøfraser fra MetaMask, Phantom, Exodus, TrustWallet og Coinbase Wallet, samt Bitwarden-passordbehandlingshvelvet. Nettleserlagrede passord og informasjonskapsler, sammen med økter fra Discord, Slack, Telegram og Steam, er også fritt vilt.

Det som skiller denne tyveren fra andre programvarer er fokuset på AI-kodeverktøy . Den retter seg mot konfigurasjonsfiler for Claude Desktop, Cursor, Windsurf, VS Code og Zed, der API-nøkler og Model Context Protocol (MCP)-serverlegitimasjon ofte lagres. JFrogs analyse avslørte også at skadevaren bruker VPN-konfigurasjonsfiler, Tor-nøkler for skjulte tjenester og til og med installasjonsmappene til Red Team-rammeverk som Metasploit, Sliver og Havoc – noe som tyder på at angriperne spesifikt siktet seg mot sikkerhetsforskere og penetrasjonstestere.

Kampanjeutvikling og unnvikelsestaktikker

Angriperen stoppet ikke ved den første preinstall-kroken. Fra og med versjon 8.18.0 endret leveringsmetoden seg: dropperen ble flyttet til pakkens hovedkode og CLI-inngangspunkter, slik at den utløste når pakken ble importert eller kjørt, i stedet for under installasjonen. Denne endringen omgikk npm install –ignore-scripts-beskyttelsen som mange utviklere stoler på, og unngikk også skannere som bare inspiserer installasjonsskript. De senere versjonene inkluderte også anti-feilsøkingskontroller på Windows og macOS, og stjeleren innebygde persistensmekanismer – en skjult Windows-planlagt oppgave satt til å starte på nytt hvert minutt, og en macOS LaunchAgent som lastes inn på nytt ved innlogging.

På Linux gikk nyttelasten et skritt videre ved å koble kjernens BPF-bibliotek og laste et eBPF-program direkte inn i kjernen fra minnet. Dette ga angriperen fotfeste på kjernenivå , utover den vanlige brukerområdets filtilgang. Både StepSecurity og SafeDep flagget denne muligheten, selv om det nøyaktige formålet med eBPF-programmet fortsatt er under analyse. Kommando- og kontrolldetaljene forble kryptert i binærfilen, men StepSecuritys kjøretidsovervåking observerte at den tapte binærfilen nådde ut til to hardkodede IP-adresser og Tor-infrastruktur.

Indikatorer for kompromiss og avbøtende tiltak

De identifiserte skadelige versjonene er 8.14.0, 8.16.0, 8.17.0, 8.18.0 og 8.20.0. Versjon 8.15.0, publisert mellom de to første, ser ut til å være ren, og Jscrambler har utpekt versjon 8.22.0 som den sikre utgivelsen å oppgradere til. SHA-256-hashene for de tillagte filene og deres dekomprimerte nyttelaster har blitt publisert av sikkerhetsfirmaer, sammen med de to C2 IP-adressene: 37.27.122.124 og 57.128.246.79. Artefakter på verten inkluderer en tilfeldig navngitt skjult fil i systemets midlertidige katalog, pluss en skjult planlagt Windows-oppgave eller macOS LaunchAgent for vedvarende funksjonalitet.

Hvis du eller byggesystemene dine installerte en berørt versjon, er det første trinnet å oppgradere til 8.22.0 umiddelbart og fjerne alle spor av de skadelige versjonene fra låsefiler og hurtigbuffere. Deretter, gransk arbeidsstasjonen eller CI-kjøreren som hentet pakken. Sjekk installasjonsloggene for utførelse av dist/setup.js, og se etter uventede underprosesser eller utførelse av midlertidige kataloger rundt installasjonstidspunktet. På Windows, inspiser Oppgaveplanleggeren for skjulte oppgaver; på macOS, sjekk ~/Library/LaunchAgents for ukjente plister. Til slutt, behandle alle hemmeligheter som maskinen kan nå som stjålet – roter skynøkler, npm- og GitHub-tokens, AI-verktøy- og MCP API-nøkler, tilbakekall Discord-, Slack-, nettleser- og Bitwarden-økter, og flytt all kryptovaluta ut av lommebøker på den verten.

Angrepet understreker en hard virkelighet: i npm-økosystemet kan én kompromittert legitimasjon gjøre et pålitelig utviklingsverktøy til en vektor for legitimasjonstyveri og lateral bevegelse. Deteksjonshastigheten – seks minutter for den første utgivelsen – var imponerende, men angriperens evne til å sende flere versjoner og tilpasse leveringsmetoden viser at forsvar i forsyningskjeden må utvikles utover enkel skriptinspeksjon. Foreløpig er den reneste veien videre å feste til en verifisert utgivelse og behandle enhver eksponering som et fullstendig kompromittering av det berørte miljøet.

Relaterte innlegg: