Nakompromiso ang Pakete ng Jscrambler npm: Nagkalat ang mga Malisyosong Bersyon ng Infostealer sa mga Makina ng Developer

Huling pag-update: 07/14/2026
May-akda: C SourceTrail
  • Limang malisyosong bersyon ng jscrambler npm package (8.14.0, 8.16.0, 8.17.0, 8.18.0, 8.20.0) ang inilathala gamit ang isang nakompromisong npm credential, na may dalang Rust-based infostealer.
  • Ang malware ay isinasagawa sa pamamagitan ng isang preinstall hook o habang tumatakbo, tinatarget ang mga cloud credential, cryptocurrency wallet, browser data, AI tool config, at marami pang iba, gamit ang mga persistence mechanism sa Windows at macOS.
  • Natukoy ng mga kompanya ng seguridad tulad ng Socket, StepSecurity, SafeDep, at JFrog ang pag-atake sa loob ng ilang minuto, ngunit nanatili sa npm ang mga malisyosong pakete nang ilang oras; Natukoy ng JFrog ang payload bilang IronWorm na may mga kakayahan sa self-propagation.
  • Hinihimok ang mga developer na mag-upgrade sa bersyon 8.22.0, i-rotate ang lahat ng sikreto, at i-audit ang mga sistema para sa mga senyales ng kompromiso, dahil maaari ring kumalat ang magnanakaw sa pamamagitan ng mga ninakaw na npm token.

Ilustrasyon ng pag-atake sa supply chain ng Jscrambler npm

Noong Hulyo 11, 2026, ang npm package para sa Ang jscrambler, isang komersyal na tool sa pag-obfuscate at seguridad ng JavaScript, ay na-hijack ng isang attacker na gumamit ng ninakaw na publishing credential para mag-upload ng maraming malisyosong bersyon. Ang insidente, na tumagal nang halos tatlong oras, ay nakakita ng limang release—8.14.0, 8.16.0, 8.17.0, 8.18.0, at 8.20.0—na mayroong cross-platform infostealer na agad na nag-a-activate pagkatapos ma-install o ma-import. Na-flag ng mga security firm kabilang ang Socket, StepSecurity, SafeDep, at JFrog ang banta sa loob ng ilang minuto, ngunit nanatiling mada-download ang mga package sa loob ng ilang oras, at ang bersyon 8.14.0 ay hindi kailanman naalis sa registry.

Tinarget ng pag-atake ang supply chain ng software sa pinakamahihirap nitong punto: ang makina ng developer. Hindi tulad ng maraming insidente ng npm na nagsasamantala sa runtime code, gumamit ito ng preinstall hook. sa unang tatlong malisyosong bersyon, ibig sabihin ay tumatakbo lang npm install jscrambler@8.14.0 ay sapat na para mag-drop at magpatakbo ng isang native binary. Inilipat ng mga susunod na bersyon (8.18.0 at 8.20.0) ang dropper sa pangunahing code ng package, kaya kahit na --ignore-scripts hindi pipigilan ang payload. Kinumpirma ng Jscrambler na ang paglabag ay limitado lamang sa produktong Code Integrity nito at mula noon ay binawi na ang mga nakompromisong kredensyal, pinatigas ang pipeline nito, at naglabas ng malinis na bersyon na 8.22.0.

Ang Attack Vector: Isang Ninakaw na Kredensyal at Isang Nakatagong Payload

Ang mga malisyosong release ay inilathala sa ilalim ng isang lehitimong maintainer account, na lumalampas sa normal na daloy ng release na nakabatay sa GitHub ng proyekto. Walang umiiral na katugmang commit, tag, o pull request para sa alinman sa mga napinsalang bersyon sa pampublikong imbakan, ayon sa StepSecurity at SafeDep. Ang pagkakaiba ng pakete sa pagitan ng 8.13.0 at 8.14.0 ay nagpakita ng dalawang bagong file: dist/setup.js, isang maliit na loader, at dist/intro.js, isang 7.8 MB na lalagyan na naglalaman ng tatlong gzip-compressed native binaries para sa Windows, macOS, at Linux. Sa pag-install, setup.js pinipili ang naaangkop na binary, isinusulat ito sa ilalim ng isang random na pangalan sa direktoryo ng pansamantalang sistema, minamarkahan itong maipapatupad, at inilulunsad ito nang nakatago ang output nito.

Natukoy ng Socket ang unang malisyosong release anim na minuto lamang matapos itong makapasok sa registry. Pagkatapos ay naglabas ang umaatake ng apat pang bersyon sa susunod na tatlong oras, bawat isa ay may dalang parehong infostealer na na-compile ng Rust. Kalaunan ay kinilala ng JFrog ang payload bilang IronWorm, isang stealer na naidokumento nito isang buwan bago nito, at iniugnay ito sa linyang Shai-Hulud. Kasama sa command-and-control (C2) infrastructure ng malware ang dalawang hard-coded na IP address (37.27.122.124 at 57.128.246.79) at mga address ng Tor network, na naobserbahan ng runtime monitoring ng StepSecurity.

Ang Tinatarget ng Malware

Malawak ang listahan ng target ng infostealer at partikular na nakatuon sa mga developer. Hinahanap nito ang mga kredensyal sa cloud mula sa AWS, Azure, at Google Cloud, kabilang ang mga metadata endpoint na ginagamit ng mga CI runner. Hinahanap din nito ang mga cryptocurrency wallet at mga seed phrase mula sa MetaMask, Phantom, Exodus, at iba pa, pati na rin ang Bitwarden password manager vault. Kinokolekta rin ang mga password, cookies, at session token na nakaimbak sa browser para sa Discord, Slack, Telegram, at Steam. Kapansin-pansin, hinahabol ng malware ang mga configuration file para sa mga AI coding tool tulad ng Claude Desktop, Cursor, Windsurf, VS Code, at Zed, kung saan kadalasang matatagpuan ang mga API key at Model Context Protocol (MCP) server credentials.

Pinalawak pa ng pagsusuri ni JFrog ang listahan ng target, na nagdagdag ng mga VPN configuration file, 1Password vault, Tor hidden-service key, at mga install folder ng mga red-team framework tulad ng Metasploit, Sliver, at Havoc. Ang huling target na ito ay nagmumungkahi na ang mga umaatake ay tinatarget din ang mga mananaliksik ng seguridad at mga tagasubok ng penetration.Gumagamit ang malware ng malakas na per-string obfuscation sa pamamagitan ng ChaCha20-Poly1305 encryption, na nagpapahirap sa reverse engineering. Para sa bulk exfiltration, direktang ina-upload nito ang ninakaw na data sa temp.sh, isang pampublikong file host, sa pamamagitan ng isang koneksyon na naglalabas ng totoong IP ng biktima.

Pagtitiyaga at mga Mataas na Kakayahan

Ang payload ay higit pa sa simpleng pagnanakaw. Sa Linux, iniuugnay nito ang BPF library ng kernel at maaaring mag-load ng eBPF program nang direkta sa kernel memory, na nagbibigay ng foothold na higit pa sa userspace file access. Parehong minarkahan ng StepSecurity at SafeDep ang kakayahang ito ng eBPF, bagama't ang eksaktong tungkulin nito ay sinusuri pa rin. Sa Windows at macOS, ang stealer ay nagdaragdag ng mga anti-debugging check at mga mekanismo ng persistence: isang nakatagong naka-iskedyul na gawain ng Windows na nakatakdang ilunsad muli bawat minuto, at isang macOS LaunchAgent na nagre-reload sa pag-login. Ang mga detalye ng C2 ay nananatiling naka-encrypt sa binary at hindi kailanman lumalabas sa static analysis.

Natuklasan din ni JFrog ang isang rutina sa pagpaparami ng sarili. Hinahanap ng malware ang mga npm token sa mga environment variable at mga file tulad ng .npmrc, sinusuri ang mga ito laban sa registry, pumipili ng mga high-download na package, nag-i-inject ng malisyosong setup.mjs i-preinstall ang script sa kanilang mga tarball, at direktang i-publish ang mga nahawaang bersyon sa registry.npmjs.org sa pamamagitan ng raw HTTP PUT—nang hindi kailanman tinatawagan ang npm client. Bagama't kinumpirma ng JFrog ang routine sa code, hindi nito kinumpirma na nagawang mag-publish ng kahit ano ang worm sa pamamagitan ng isang ninakaw na token. Gayunpaman, malinaw ang implikasyon: anumang makina na nagpapatakbo ng apektadong bersyon ay maaaring gamitin ang mga npm token nito upang higit pang maikalat ang pag-atake.

Ang Tugon at Paglilinis

Mabilis na kumilos ang Jscrambler matapos maabisuhan. Hindi na ginamit ng kumpanya ang mga malisyosong bersyon at inilabas ang 8.15.0, at kalaunan ay ang 8.22.0 bilang ang inirerekomendang malinis na bersyon. Gayunpaman, ang bersyon 8.14.0 ay hindi kailanman kinuha mula sa npm, ibig sabihin, anumang lockfile o command na naka-pin dito ay nag-i-install pa rin ng stealer. Nakalista sa advisory ng kumpanya ang apat na malisyosong bersyon (8.14.0, 8.16.0, 8.17.0, 8.20.0) ngunit hindi isinama ang 8.18.0, na parehong kasama sa Socket at JFrog. Sinasabi ng Jscrambler na kasalukuyang nag-uulat ang npm ng zero na pag-download ng mga malisyosong bersyon, ngunit nagbabala na ang bilang ay nahuhuli ayon sa oras at bineberipika pa rin.

Para sa mga developer, malinaw ang mga agarang hakbang: mag-upgrade sa bersyon 8.22.0 o i-pin sa 8.13.0, at i-audit ang lahat ng system na maaaring nakakuha ng mga malisyosong release. Suriin ang mga lockfile at mga log ng package-manager para sa jscrambler@8.14.0 at mga katulad na bersyon, at maghanap ng mga talaan ng CI ng dist/setup.js pagpapatupad mula Hulyo 11 pataas. Sa Windows, siyasatin ang Task Scheduler para sa mga nakatagong gawain; sa macOS, tingnan ~/Library/LaunchAgents para sa mga hindi pamilyar na plist. Inilalagay ng loader ang payload nito sa ilalim ng isang random na pangalan sa temp directory, kaya walang nakapirming binary name na i-grep—ihanay ang mga install timestamp laban sa mga Node child process at sa halip ay ang temp-directory execution.

Mga Tagapagpahiwatig ng Kompromiso

Naglathala ang mga kompanya ng seguridad ng mga detalyadong tagapagpahiwatig. Ang mga bersyon ng malisyosong pakete ay jscrambler@8.14.0, 8.16.0, 8.17.0, 8.18.0, at 8.20.0Ang mga SHA-256 hash para sa mga idinagdag na file at mga decompressed payload ay makukuha mula sa Socket at StepSecurity. Ang mga network endpoint na naobserbahan sa runtime ay kinabibilangan ng dalawang C2 IP (37.27.122.124 at 57.128.246.79) at Tor infrastructure (check.torproject.org, archive.torproject.org). Kasama sa mga on-host artifact ang isang random na pinangalanang nakatagong file sa system temp directory (na nasa anyong .{random} or .{random}.exe sa Windows), kasama ang isang nakatagong naka-iskedyul na gawain sa Windows o macOS LaunchAgent para sa persistence. Nagfa-flag din ang JFrog temp.sh bilang isang endpoint ng pag-exfilt ng datos at setup.mjs bilang iskrip ng pagpapalaganap.

Kung nagpatakbo ka ng anumang apektadong bersyon, ituring na ninakaw ang bawat sikretong maaari nitong matuklasan. I-rotate ang mga cloud key, npm at GitHub token, AI-tool at MCP API key, bawiin ang mga sesyon ng Discord, Slack, browser, at Bitwarden, at alisin ang anumang crypto mula sa mga wallet sa host na iyon. I-block ang dalawang C2 IP at subaybayan ang mga hindi pangkaraniwang outbound na koneksyon sa Tor o temp.shGinagawa ng magnanakaw ang trabaho nito ilang segundo pagkatapos ng pag-install, kaya kahit ang isang maikling pagkakalantad ay sapat na para masira ang mga kredensyal.

Ang insidenteng ito ay isang malinaw na paalala na ang npm ecosystem ay nananatiling pangunahing target para sa mga pag-atake sa supply chain. Sa kabila ng pagpapadala ng npm 12 na may mga install script na naka-off bilang default noong Hulyo 8, awtomatiko pa rin itong pinapatakbo ng mga lumang kliyente, at ang mga mas bagong malisyosong bersyon ay ganap na lumampas sa proteksyong iyon. Ang pag-atake ng Jscrambler, na dumating ilang araw lamang matapos ang kompromiso sa Injective SDK, ay nagpapakita na ang mga umaatake ay lalong tinatarget ang mga tool ng developer at mga vendor ng seguridad mismo. Malinaw ang aral: anumang makinang tumatakbo npm install ang pagkakaroon ng totoong kredensyal ay ang pagtitiwala sa isang supply chain na ang isang ninakaw na token ay maaaring maging agresibo sa loob lamang ng ilang minuto.

Kaugnay na mga post: