Jscrambler npm-paket komprometterat: Skadliga versioner sprider informationsstöld över utvecklarmaskiner

Senaste uppdateringen: 07/14/2026
Författare: C SourceTrail
  • Fem skadliga versioner av jscrambler npm-paketet (8.14.0, 8.16.0, 8.17.0, 8.18.0, 8.20.0) publicerades med hjälp av en komprometterad npm-inloggningsuppgifter, innehållande en Rust-baserad informationstjuv.
  • Den skadliga programvaran körs via en preinstall-hook eller under körning, och riktar in sig på molnuppgifter, kryptovalutaplånböcker, webbläsardata, AI-verktygskonfigurationer med mera, med persistensmekanismer på Windows och macOS.
  • Säkerhetsföretag som Socket, StepSecurity, SafeDep och JFrog upptäckte attacken inom några minuter, men de skadliga paketen låg kvar på npm i timmar; JFrog identifierade nyttolasten som IronWorm med självspridningskapacitet.
  • Utvecklare uppmanas att uppgradera till version 8.22.0, rotera alla hemligheter och granska system för tecken på kompromisser, eftersom stjälaren också kan spridas via stulna npm-tokens.

Jscrambler npm leveranskedjeattackillustration

Den 11 juli 2026 kapades npm-paketet för jscrambler, ett kommersiellt JavaScript-förvirrings- och säkerhetsverktyg, av en angripare som använde en stulen publiceringsinloggning för att distribuera flera skadliga versioner. Incidenten, som utspelade sig under ungefär tre timmar, innebar att fem utgåvor – 8.14.0, 8.16.0, 8.17.0, 8.18.0 och 8.20.0 – hade en plattformsoberoende informationsstöld som aktiveras omedelbart vid installation eller import. Säkerhetsföretag som Socket, StepSecurity, SafeDep och JFrog flaggade hotet inom några minuter, men paketen förblev nedladdningsbara i timmar, och version 8.14.0 togs aldrig bort från registret.

Attacken riktade sig mot mjukvaruleveranskedjan på dess mest sårbara punkt: utvecklarens maskin. Till skillnad från många npm-incidenter som utnyttjar runtime-kod, använde den här en preinstall-krok i de tre första skadliga versionerna, vilket betyder att helt enkelt körs npm install jscrambler@8.14.0 räckte för att släppa och exekvera en inbyggd binärfil. Senare versioner (8.18.0 och 8.20.0) flyttade droppern till paketets huvudkod, så även --ignore-scripts skulle inte stoppa nyttolasten. Jscrambler bekräftade att intrånget var begränsat till deras Code Integrity-produkt och har sedan dess återkallat de komprometterade autentiseringsuppgifterna, stärkt sin pipeline och släppt en ren version 8.22.0.

Attackvektorn: En stulen legitimation och en dold nyttolast

De skadliga utgåvorna publicerades under ett legitimt ansvariga konto, vilket kringgick projektets normala GitHub-baserade utgivningsflöde. Ingen matchande commit, tagg eller pull request fanns för någon av de kontaminerade versionerna. i det publika arkivet, enligt StepSecurity och SafeDep. Paketskillnaden mellan 8.13.0 och 8.14.0 avslöjade två nya filer: dist/setup.js, en liten lastare, och dist/intro.js, en 7.8 MB-behållare som innehåller tre gzip-komprimerade, inbyggda binärfiler för Windows, macOS och Linux. Vid installationen, setup.js väljer lämplig binärfil, skriver den under ett slumpmässigt namn i systemets temp-katalog, markerar den som körbar och startar den med dess utdata dold.

Socket upptäckte den första skadliga utgåvan bara sex minuter efter att den nådde registret. Angriparen publicerade sedan ytterligare fyra versioner under de kommande tre timmarna , var och en med samma Rust-kompilerade informationsstöld. JFrog identifierade senare nyttolasten som IronWorm, en stöld som de hade dokumenterat en månad tidigare, och kopplade den till Shai-Hulud-linjen. Den skadliga programvarans kommando-och-kontrollinfrastruktur (C2) inkluderade två hårdkodade IP-adresser (37.27.122.124 och 57.128.246.79) och Tor-nätverksadresser, vilka StepSecuritys runtime-övervakning observerade.

Vad skadlig programvara riktar sig mot

Informationstjuvens mållista är bred och riktar sig specifikt till utvecklare. Den söker efter molnuppgifter från AWS, Azure och Google Cloud , inklusive metadata-slutpunkter som används av CI-användare. Den jagar också efter kryptovalutaplånböcker och seedphraser från MetaMask, Phantom, Exodus och andra, samt Bitwardens lösenordshanteringsvalv. Webbläsarlagrade lösenord, cookies och sessionstokens för Discord, Slack, Telegram och Steam samlas också in. Det är värt att notera att skadlig kod jagar konfigurationsfiler för AI-kodningsverktyg som Claude Desktop, Cursor, Windsurf, VS Code och Zed, där API-nycklar och Model Context Protocol (MCP)-serveruppgifter ofta finns.

JFrogs analys utökade mållistan ytterligare genom att lägga till VPN-konfigurationsfiler, 1Password-valv, Tor-nycklar för dolda tjänster och installationsmapparna för red-team-ramverk som Metasploit, Sliver och Havoc. Det här sista målet antyder att angriparna också riktade sig mot säkerhetsforskare och penetrationstestare.Skadlig programvara använder stark per-sträng-förvirring via ChaCha20-Poly1305-kryptering, vilket gör reverse engineering svårt. Vid bulkutvinning laddar den upp stulen data direkt till temp.sh, en offentlig filvärd, över en anslutning som läcker offrets riktiga IP-adress.

Uthållighet och avancerade förmågor

Nyttolasten går utöver enkel stöld. På Linux länkar den kärnans BPF-bibliotek och kan ladda ett eBPF-program direkt i kärnminnet, vilket ger ett fotfäste långt bortom åtkomst till användarutrymmets filer. Både StepSecurity och SafeDep flaggade denna eBPF-funktion , även om dess exakta funktion fortfarande analyseras. På Windows och macOS lägger stjälaren till anti-felsökningskontroller och persistensmekanismer: en dold schemalagd Windows-uppgift som är inställd på att starta om varje minut, och en macOS LaunchAgent som laddas om vid inloggning. C2-uppgifterna förblir krypterade i binärfilen och dyker aldrig upp i statisk analys.

JFrog upptäckte också en självförökningsrutin. Skadlig programvara letar efter npm-tokens i miljövariabler och filer som .npmrc, kontrollerar dem mot registret, väljer paket med många nedladdningar, injicerar en skadlig setup.mjs förinstallera skriptet i sina tarbollar och publicerar de infekterade versionerna direkt till registry.npmjs.org via rå HTTP PUT – utan att någonsin anropa npm-klienten. JFrog bekräftade visserligen rutinen i koden, men bekräftade inte att masken lyckades publicera något genom en stulen token. Implikationen är dock tydlig: vilken maskin som helst som körde en drabbad version kunde få sina npm-tokens använda för att sprida attacken ytterligare.

Responsen och saneringen

Jscrambler agerade snabbt efter att ha blivit meddelad. Företaget avfärdade de skadliga versionerna och släppte 8.15.0, och senare 8.22.0, som den rekommenderade rena versionen. Version 8.14.0 hämtades dock aldrig från npm , vilket innebär att alla låsfiler eller kommandon som är fästa på den fortfarande installerar stjälaren. Företagets rekommendation listade fyra skadliga versioner (8.14.0, 8.16.0, 8.17.0, 8.20.0) men utelämnade 8.18.0, som båda Socket och JFrog inkluderar. Jscrambler säger att npm för närvarande rapporterar noll nedladdningar av de skadliga versionerna, men varnar för att antalet släpar efter med timmar och fortfarande verifieras.

För utvecklare är de omedelbara stegen tydliga: uppgradera till version 8.22.0 eller spara till 8.13.0, och granska alla system som kan ha hämtat de skadliga utgåvorna. Kontrollera låsfiler och pakethanterarens loggar för jscrambler@8.14.0 och liknande versioneroch leta efter CI-poster för dist/setup.js körning från och med 11 juli. I Windows, kontrollera om det finns dolda uppgifter i Aktivitetsschemaläggaren; i macOS, kontrollera ~/Library/LaunchAgents för okända plister. Laddaren släpper sin nyttolast under ett slumpmässigt namn i temp-katalogen, så det finns inget fast binärt namn att använda grep för – justera installationstidsstämplar mot Nodens underprocesser och exekvering av temp-katalogen istället.

Indikatorer för kompromiss

Säkerhetsföretag har publicerat detaljerade indikatorer. De skadliga paketversionerna är jscrambler@8.14.0, 8.16.0, 8.17.0, 8.18.0 och 8.20.0SHA-256-hashar för de tillagda filerna och dekomprimerade nyttolasten finns tillgängliga från Socket och StepSecurity. Nätverksslutpunkter som observeras vid körning inkluderar de två C2-IP:erna (37.27.122.124 och 57.128.246.79) och Tor-infrastrukturen (check.torproject.org, archive.torproject.org). Artefakter på värddatorn inkluderar en slumpmässigt namngiven dold fil i systemets temporära katalog (av formen .{random} or .{random}.exe på Windows), plus en dold schemalagd Windows-uppgift eller macOS LaunchAgent för beständighet. JFrog flaggar också temp.sh som en slutpunkt för dataexfiltrering och setup.mjs som spridningsskriptet.

Om du körde någon påverkad version, behandla alla hemligheter den kan komma åt som stulna. Rotera molnnycklar, npm- och GitHub-tokens, AI-verktyg och MCP API-nycklar, återkalla Discord-, Slack-, webbläsar- och Bitwarden-sessioner och flytta all krypto från plånböcker på den värden. Blockera de två C2-IP-adresserna och övervaka ovanliga utgående anslutningar till Tor eller temp.shStjälaren gör sitt jobb sekunderna efter installationen, så även en kort exponering räcker för att äventyra inloggningsuppgifterna.

Denna händelse är en skarp påminnelse om att npm-ekosystemet fortfarande är ett huvudmål för attacker i leveranskedjorna. Trots att npm 12 levererades med installationsskript avstängda som standard den 8 juli, äldre klienter kör dem fortfarande automatiskt, och de senare skadliga versionerna kringgick det skyddet helt. Jscrambler-attacken, som kom bara några dagar efter att Injective SDK-komprometterats, visar att angripare i allt högre grad riktar in sig på utvecklarverktyg och säkerhetsleverantörer själva. Lärdomen är tydlig: alla maskiner som kör npm install med riktiga meriter är att lita på en leveranskedja där en enda stulen token kan bli fientlig på några minuter.

Relaterade inlägg: