- Na npm byla publikována škodlivá verze jscrambleru (8.14.0) s použitím ukradených přihlašovacích údajů, která obsahovala skrytý preinstalační hook, jenž uvolňuje multiplatformní infostealer Rustu.
- Tento únikový program se zaměřuje na cloudové přihlašovací údaje, krypto peněženky, správce hesel, konfigurace nástrojů pro kódování s využitím umělé inteligence a aplikace pro zasílání zpráv a zahrnuje také funkce na úrovni jádra v Linuxu.
- Útočník během tří hodin šířil pět škodlivých verzí, přičemž pozdější verze obcházely --ignore-scripts vložením dropperu do hlavního kódu.
- Jscrambler vydal čistou verzi (8.22.0) a doporučuje uživatelům, aby střídali všechny odhalené přihlašovací údaje a auditovali své systémy.
Dne 11. července 2026 byl balíček npm pro Jscrambler, známého dodavatele obfuskace a zabezpečení JavaScriptu, zasažen útokem dodavatelského řetězce, který šel daleko za rámec pouhé injekce kódu. Útočník použil ukradené publikační přihlašovací údaje npm k nainstalování verze 8.14.0, která obsahovala preinstalační hook, jenž tiše spustil nativní binární soubor na počítači oběti. Socket.dev označil škodlivou verzi pouhých šest minut poté, co se dostala do registru, ale v té době už byla škoda napáchána pro každého, kdo ji během tohoto okna nainstaloval.
Napadený balíček nebyl ojedinělým incidentem. Během následujících tří hodin tentýž útočník zveřejnil další čtyři škodlivé verze – 8.16.0, 8.17.0, 8.18.0 a 8.20.0 – z nichž každá obsahovala stejný multiplatformní informačního krádeže Rustu . Útok zneužil základní důvěru v ekosystém npm, kde jediný napadený účet může proměnit legitimní vývojářský nástroj ve zbraň namířenou proti vývojářům, kteří se na něj spoléhají.
Útok: Ukradené pověření a skrytý náklad
Verze 8.14.0 přinesla dva nové soubory, které nebyly v předchozí čisté verzi 8.13.0: dist/setup.js a dist/intro.js . Navzdory svému názvu nebyl intro.js JavaScript, ale zhruba 7.8 MB kontejner obsahující tři gzip komprimované nativní binární soubory – jeden pro Linux x86-64, Windows x86-64 a macOS arm64. Během instalace soubor setup.js identifikoval hostitelský operační systém, zapsal odpovídající binární soubor do náhodně pojmenovaného souboru v dočasném adresáři systému, označil jej jako spustitelný a spustil jej se skrytým výstupem. Datová část se poté spustila se stejnými oprávněními jako instalační proces, který na vývojářském počítači nebo CI runneru často zahrnuje přístup k citlivým přihlašovacím údajům a tokenům.
Společnost Jscrambler později potvrdila, že útočník kompromitoval publikační přihlašovací údaje npm a použil je k obejití běžného procesu vydávání projektu. Ve veřejném repozitáři GitHub neexistoval žádný odpovídající commit, tag ani pull request pro verzi 8.14.0. Verze byla odeslána přímo do npm a ukazovala na unesený účet nebo build pipeline. Společnost zrušila přihlašovací údaje, rotovala tajné kódy a posílila svůj publikační pipeline, ale škodlivé verze zůstaly na npm – zastaralé, ale stále instalovatelné podle přesné verze.
Na co se zloděj zaměřuje
Informační krádež vytvořená v Rustu byla navržena s ohledem na široký seznam cílových skupin zaměřených na vývojáře. Podle analýz od společností Socket, StepSecurity a JFrog vyhledává cloudové přihlašovací údaje z AWS, Azure a Google Cloud , včetně koncových bodů metadat používaných spouštěči CI. Hledá také kryptoměnové peněženky a seed fráze z MetaMask, Phantom, Exodus, TrustWallet a Coinbase Wallet, stejně jako z trezoru správce hesel Bitwarden. Hesla a soubory cookie uložené v prohlížeči, spolu s relacemi z Discordu, Slacku, Telegramu a Steamu, jsou také relevantní.
To, co odlišuje tohoto zloděje malwaru, je jeho zaměření na nástroje pro kódování s umělou inteligencí . Zaměřuje se na konfigurační soubory pro Claude Desktop, Cursor, Windsurf, VS Code a Zed, kde jsou často uloženy klíče API a přihlašovací údaje serveru Model Context Protocol (MCP). Analýza společnosti JFrog také odhalila, že malware sahá po konfiguračních souborech VPN, klíčích skrytých služeb Tor a dokonce i po instalačních složkách frameworků s negativními vlastnostmi, jako jsou Metasploit, Sliver a Havoc – což naznačuje, že útočníci se konkrétně zaměřovali na bezpečnostní výzkumníky a penetrační testery.
Vývoj kampaně a taktiky úhybných manévrů
Útočník se nezastavil u počátečního preinstalačního hooku. Počínaje verzí 8.18.0 se změnila metoda doručování: dropper byl přesunut do hlavního kódu balíčku a vstupních bodů CLI, takže se spouštěl při importu nebo spuštění balíčku, nikoli během instalace. Tato změna obešla bezpečnostní opatření npm install –ignore-scripts , na které se spoléhá mnoho vývojářů, a také se vyhnula skenerům, které kontrolují pouze instalační skripty. Novější verze také obsahovaly anti-debuggingové kontroly ve Windows a macOS a stealer zapojený do mechanismů perzistence – skrytou naplánovanou úlohu ve Windows nastavenou na restartování každou minutu a macOS LaunchAgent, který se znovu načte při přihlášení.
V Linuxu šlo užitečné zatížení ještě o krok dál tím, že propojilo knihovnu BPF jádra a načetlo program eBPF přímo do jádra z paměti. To útočníkovi poskytlo oporu na úrovni jádra , nad rámec obvyklého přístupu k souborům v uživatelském prostoru. StepSecurity i SafeDep tuto možnost nahlásily, ačkoli přesný účel programu eBPF je stále předmětem analýzy. Podrobnosti o příkazovém a kontrolním systému zůstaly v binárním souboru zašifrované, ale monitorování běhu StepSecurity pozorovalo, jak se ztracený binární soubor dostal ke dvěma pevně zakódovaným IP adresám a infrastruktuře Tor.
Indikátory kompromisu a kroky ke zmírnění následků
Identifikované škodlivé verze jsou 8.14.0, 8.16.0, 8.17.0, 8.18.0 a 8.20.0. Verze 8.15.0, publikovaná mezi prvními dvěma, se jeví jako čistá a Jscrambler označil verzi 8.22.0 za bezpečnou verzi pro upgrade. Bezpečnostní firmy zveřejnily hash SHA-256 pro přidané soubory a jejich dekomprimované datové části spolu se dvěma IP adresami C2: 37.27.122.124 a 57.128.246.79. Mezi artefakty na hostiteli patří náhodně pojmenovaný skrytý soubor v dočasném adresáři systému a skrytá naplánovaná úloha systému Windows nebo LaunchAgent systému macOS pro zajištění perzistence.
Pokud jste vy nebo vaše sestavovací systémy nainstalovali jakoukoli dotčenou verzi, prvním krokem je okamžitý upgrade na verzi 8.22.0 a odstranění všech stop škodlivých verzí ze souborů zámků a mezipamětí. Dále proveďte audit pracovní stanice nebo CI runneru, který balíček stáhl. Zkontrolujte instalační protokoly, zda se v době instalace nespouštěl soubor dist/setup.js, a hledejte neočekávané podřízené procesy nebo spuštění dočasných adresářů. Ve Windows zkontrolujte Plánovač úloh, zda neobsahuje skryté úlohy; v macOS zkontrolujte ~/Library/LaunchAgents, zda neobsahuje neznámé plisty. Nakonec zacházejte s každým tajným údajem, ke kterému se počítač mohl dostat, jako s ukradeným – rotujte cloudové klíče, tokeny npm a GitHub, klíče API nástrojů AI a MCP, zrušte relace Discordu, Slacku, prohlížeče a Bitwardenu a přesuňte všechny kryptoměny z peněženek na daném hostiteli.
Útok podtrhuje drsnou realitu: v ekosystému npm může jediný kompromitovaný přihlašovací údaj proměnit důvěryhodný vývojový nástroj ve vektor pro krádež přihlašovacích údajů a jejich laterální přesun. Rychlost detekce – šest minut u první verze – byla působivá, ale schopnost útočníka prosadit více verzí a přizpůsobit způsob doručování ukazuje, že obrana dodavatelského řetězce se musí vyvíjet nad rámec pouhé kontroly skriptů. Prozatím je nejčistší cestou vpřed připojit se k ověřené verzi a považovat jakékoli odhalení za úplné kompromitování postiženého prostředí.