forge-jsxy npm Infostealer: Průvodce IOC a detekcí

forge-jsxy: NPM Infostealer, který neustále mění svůj název

TL, DR

Zhruba dva měsíc, jediný npm infostealer se znovu objevil pod rotující sérií názvů balíčků a zároveň dodával téměř nezměněný datový obsah. Otevřeně začal jako forge-jsxy, zplodil forge-jsx3 / forge-jsx4 sourozenci, poté zcela opustili značku „forge“, aby se mohli prezentovat jako vývojářská infrastruktura – nejprve zredis-typeda naposledy pinokio-redis.

Každá varianta nese stejný interní řetězec nástrojů: soubory s názvem forge-jsx-explorer-*, je relayPackageServe modul, který slouží forge-jsxy-package.tgza odolný běhový modul skrytý v adresáři s tečkami, aby přežil smazání balíčku npm.

Užitečné zatížení čte materiál pro kryptoměnovou peněženku a přihlašovací údaje vývojáře od hostitele a přenese je na web Discorduhooks, nahrávání z HuggingFace Hub a pevně naprogramovaný koncový bod C2. Nainstaluje automatické spuštění na úrovni operačního systému, takže se po restartu znovu spustí, a zaznamenává aktivitu schránky, klávesnice a obrazovky. Nejnovější varianta, pinokio-redis, se popisuje jako integrace „Autodesk Forge“ – popis nesouvisí s tím, co kód dělá.

EkosystémNpm
Třída užitečného zatíženívícestupňový infostealer + agent pro vzdálené ovládání (RAT)
Primární cílekrypto peněženky, rozšíření peněženek prohlížeče, přihlašovací údaje pro vývojáře/cloud
Perzistenceskrytý odolný běhový modul + automatické spuštění OS (přežije odebrání balíčku)
Exfiltracewebový nesouladhooks + relé, HuggingFace Hub, pevně naprogramovaný C2 na portu 9877
Pozorovaný rozsahkvěten 2026 – červenec 2026 (probíhá)
Nejnovější jménopinokio-redis:1.0.127

Anatomie útoku

Každá varianta v této rodině se instaluje prostřednictvím stejného tvaru: balíčku to na stránce se seznamem vypadá inertně, ale deklaruje postinstalační hook, takže Datová část se spustí v okamžiku instalace balíčku jako závislost. hák pohání pětistupňový řetěz.

  • Fáze 1 – zhmotnění. Instalační skript dekóduje zakódovaný soubor blob do sady běhových skriptů a zapíše je do skrytého adresáře v umístění konfigurace platformy (verze forge-jsxy používaly tečkovaný .forge-jsxy/runtime/v) /cesta). Protože se tato kopie nachází mimo node_modules, odebrání nebo zrušení publikování balíčku npm neodstraní spuštěného agenta.
  • Fáze 2 – přetrvává. Řetězec zaregistruje položku automatického spuštění operačního systému, takže se agent po restartu znovu spustí. Ve Windows se to provádí přes skrytý diagnostický skript PowerShellu; proces agenta se spouští odděleně a s nastavenou vlastností windowsHide, takže se nezobrazí žádné okno konzole.
  • Fáze 3 – vyhnout se. Běhové prostředí kontroluje markery kontinuální integrace a tiše se ukončí, když detekuje prostředí CI, takže automatizované sandboxy sestavení nic nevidí. Ve verzích forge-jsxy komentář ke zdroji uváděl, že viditelné pole forgeInstall bylo z package.json záměrně vynecháno, „protože by toto pole bylo viditelné na npm“ – operátor záměrně ponechal metadata spouštěče mimo veřejný seznam.
  • Fáze 4 – sběr. Jakmile agent běží, sklidí v jednom průchodu:
  1. Materiál pro krypto peněženku. Přiložený seznam cílů secret_filename_patterns.json řídí prohledávání souborového systému pro wallet.dat, *.mnemonic /Soubory .seed / *.phrase, keypair.json, Ethereum UTC– úložiště klíčů a úložiště klíčů *.p12 / *.pfx / *.jks. V balíčku jsou obsaženy knihovny pro odvození peněženek (pomocné programy bip39, secp256k1, base58check a Solana).
  2. Rozšíření peněženky prohlížeče. Modul chromiumExtensionDbHarvest čte lokální databáze úložišť rozšíření prohlížečů Chromium, což je místo, kde rozšíření peněženek v prohlížeči uchovávají svá data trezoru.
  3. Pověření a tajemství. Agent prohledává historii shellu a soubory s tajnými údaji, čte přihlašovací údaje vývojáře/cloudu a poté zakóduje přihlašovací údaje HuggingFace pro nahrání.
  4. Živý vstup. Obsah schránky, vstupy z klávesnice a snímky obrazovky se zaznamenávají průběžně.
  • Fáze 5 – exfiltraceShromážděná data opouštějí hostitele třemi kanály fungující paralelně: Discord webhooks (discordWebhookPost) a nahrávač relay na Discord, který komunikuje s `discord.com/api/v10` (discordRelayUpload), nahrávání z HuggingFace Hubu (hfUpload) a Pevně ​​zakódovaný koncový bod C2 byl dosažen přes port 9877. relayPackageServe Modul navíc obsluhuje soubor forge-jsxy-package.tgz zpětně – totéž název artefaktu u každého přejmenování.

Důležitým strukturálním bodem je, že fáze 1–3 probíhají v době instalace s žádná interakce s uživatelem a fáze 1 umístí užitečné zatížení někam do balíčku manažer nesleduje. Vývojář, který si všimne zvláštní závislosti a Spuštěním příkazu npm uninstall se odstraní záznam, ale ne agent.

Užitečná zátěž je také odolná proti rychlému čtení. Běhové skripty nejsou dodávány. jasně řečeno: krok kódování a nasazení udržuje operační logiku jako zakódovaný blob, který se rozbalí do čitelných skriptů až po dokončení instalačního řetězce dekóduje jej do skrytého běhového adresáře. Soubory, které jsou viditelné na seznamu — tenká postinstalační podložka a dist-materializace pomocník – prozrazuje jen málo o tom, co nakonec běží. Toto kódované doručení design měl měřitelný vliv na třídění: po celou dobu života rodiny, více potvrzených variant bylo automatickou klasifikací ohodnoceno jako bezpečné, a užitečné zatížení bylo natolik neprůhledné, že zcela zastavilo automatickou kontrolu. Chování, které prozrazuje rodinu, je viditelné až po zakódování fáze je rozbalena a běhové prostředí je čteno přímo.

Timeline

Nosnost rodiny zůstala pozoruhodně stabilní; co se mění, je to název na krabici. Oblouk vede od otevřeného brandingu „kovárny“ směrem maskuje se jako nesouvisející vývojářské nástroje.

Datum (2026) Balíček: verze Hodnocení
květen (začátek) forge-jsxy:1.0.81, :1.0.90 Nejdříve potvrzené varianty — RAT s C2 šifrovaným pomocí AES-256-GCM
může 19 forge-jsxy:1.0.92 / 1.0.105 / 1.0.107 / 1.0.108 Kampaň v aktivní publikaci; verze 1.0.92 byla původně chybně označena jako bezpečná a po opětovné kontrole kódu byla zrušena.
Koncem května forge-jsx3 / forge-jsx4:1.0.122 / 1.0.123, zod-pino Názvy sourozeneckých balíčků, stejný toolchain
června 4 forge-jsxy:1.0.120 Pokračování; klasifikováno jako bezpečné podle modelu ML (neúspěšné)
21.–23. června forge-jsxy:1.0.121 Sada modulů nezměněna od verze 1.0.120
července 6 zredis-typed:1.0.127 slovo „kovárna“ bylo z názvu vynecháno; stále se lodí forge-jsxy-package.tgz a forgeAgent* konfigurační klíče
července 7 pinokio-redis:1.0.127 Stejný nástrojový řetězec; nový C2; popisuje se jako integrace „Autodesk Forge“

V celé časové ose vynikají dvě věci. Zaprvé, číslo verze 1.0.127 je doslovně znovu použito jak zredis-typed, tak pinokio-redis – pojmenování se sice posune, ale linie sestavení se neresetuje. Zadruhé, odklon od názvů „forge-*“ se shoduje s posunem směrem k názvům, které se čtou jako běžná infrastruktura (redis, pinokio), což snižuje pravděpodobnost, že vývojář název přehlédne a zaváhá.

Ukazatele kompromisu

Níže uvedené IOC jsou defanged. Hostitel C2 se rotoval mezi řádkem forge-jsxy. a nejnovější variantu se zachováním stejného portu.

Indikátor Hodnota Při pohledu
Koncový bod C2 212.193.3[.]61:9877 pinokio-redis:1.0.127
Koncový bod C2 79.108.162[.]160:9877 řádek forge-jsxy, zredis-typed:1.0.127
Exfilní kanál discord.com/api/webhooks/… (příspěvek s webhookem) všechny varianty
Exfilní kanál discord.com/api/v10 (nahrávání přes relé) všechny varianty
Exfilní kanál Nahrávání do HuggingFace Hub všechny varianty
Poskytnutý artefakt forge-jsxy-package.tgz (Via relayPackageServe) všechny varianty
Soubory Toolchainu chromiumExtensionDbHarvest, discordRelayUpload, discordWebhookPost, hfUpload, encode-hf-credentials, forge-jsx-explorer-* všechny varianty
Seznam cílů secret_filename_patterns.json (wallet.dat, .mnemonic/.seed/.phrase, keypair.json, UTC--, .p12/.pfx/*.jks) všechny varianty
Skryté běhové prostředí tečkovaný …/.forge-jsxy/runtime/v<version>/ cesta ke konfiguračnímu adresáři řádek forge-jsxy
Perzistence systému Windows skrytý skript PowerShellu pro automatické spuštění „forge diagnostics“ všechny varianty
Instalace spouštěče postinstall hook volající řetězec skriptů pro materializaci dist všechny varianty

Nejodolnějším detekčním signálem není žádný jednotlivý hostitel nebo webhook – ty otočit — ale názvy souborů nástrojové chainy a soubor forge-jsxy-package.tgz artefakt, který doslovně přetrvával i přes každé přejmenování.

Atribuce a pozorované chování

Balíčky byly publikovány pod více než jedním npm účtem. forge-jsxy řádek použitý vydavatelem jacksonkaandorp2 (jacksonkaandorp2@outlook[.]com); Nejnovější variantu pinokio-redis publikoval donimique (donimiqueakers@gmail[.]com). Ani jeden z účtů neměl ověřený e-mail ani propojené zdrojové úložiště. Propojení mezi účty je toolchain, nikoli identita vydavatele – stejné názvy modulů, stejné sloužil .tgz a stejný design exfilu se opakoval bez ohledu na to, kdo jej publikoval.

Několik pozorovatelných projevů chování naznačuje spíše úmyslné skrývání než náhodné nadměrné nasbírání:

Runtime je umístěn mimo node_modules ve skrytém adresáři, takže přežije balíček, který jej doručil.

Agent se automaticky vypne, když detekuje prostředí CI, čímž se omezí expozice v automatizovaných analytických sandboxech.

Proces agenta je spuštěn odděleně a okno-skryté.V Ve verzích forge-jsxy komentář spojil vynechání viditelného pole install s tím, že toto pole je „viditelné na npm“.

Veřejné popisy balíčků nesouvisí s kódem – pinokio-redis se prezentuje jako integrace s „Autodesk Forge“.

U obránců, kteří se spoléhají na…, stojí za zmínku jedna opakující se mezera v detekci… automatizovaná klasifikace: v této rodině bylo potvrzeno více variant ohodnoceno jako bezpečné klasifikátorem ML před opravou revize kódu verdikt. Stabilní prvky, na které se recenzent může zaměřit – doba instalace řetězec, skryté běhové prostředí, názvy souborů toolchainu – jsou přesně ty které přežijí přejmenování.

Výše uvedené popisujeme jako pozorované chování. Nepřipisujeme kampaň žádnému jmenovanému aktérovi a nečiníme žádná prohlášení o provozovateli identitu nebo cíle nad rámec toho, co kód a infrastruktura demonstrují.

Dopad, trendy a pokyny pro obránce

Kdo je odhalen. Sada kolekcí je určena výhradně pro vývojáře stroje: kryptoměnové peněženky a úložiště klíčů, rozšíření peněženek prohlížeče, historie shellu a přihlašovací údaje ke cloudu/službě. Každý, kdo si nainstaluje dotčený balíček – přímo nebo jako tranzitivní závislost — během Okno, ve kterém bylo aktivní, je v rozsahu a návrh perzistence znamená, že Expozice nekončí odstraněním obalu.

Proč je vytrvalost důležitá. Protože fáze 1 kopíruje užitečné zatížení do skrytý běhový adresář a registry fáze 2, automatické spuštění, obvyklé instinkt nápravy (odinstalace špatné závislosti, smazání modulů node_modules, přeinstalace) nevyřadí agenta. Reakce na incidenty musí hledat běhové prostředí mimo strom a položka automatického spuštění, nejen balíček.

Trend. Tato rodina ilustruje vzorec, který stojí za to sledovat: stabilní a zralé užitečné zatížení, zabalené v proudu jednorázovýchnázvy balíčků, které se odchylují od jakéhokoli názvu, po kterém bylo provedeno předchozí zastavení šíření rozpoznatelné, směrem k názvům, které se čtou jako běžná infrastruktura. Založené na názvech seznamy blokovaných stránek a reputace vydavatelů v důsledku toho rychle stárnou; chování- a signály založené na artefaktech nikoli.

Pro vývojáře a spotřebitele

Skripty probíhající při instalaci považujte za primární oblast rizika. Pokud je to možné, nainstalujte je se zakázanými skripty a zkontrolujte všechny závislosti, které deklarují po instalaci. Kontrola a kontrola tranzitivních závislostí; tato třída malwaru se dostává stejně snadno prostřednictvím podzávislosti jako přímo.

Na podezřelém hostiteli hledejte za hranicemi balíčku: hledejte skrytý běhový adresář v umístění konfigurace platformy, neočekávanou položku automatického spuštění, a odchozí připojení k webhooku Discordu nebo koncovým bodům :9877.

Předpokládejme, že jakákoli fráze peněženky, úložiště klíčů nebo přihlašovací údaje přítomné na postiženém hostiteli během expozičního okna jsou ohroženy, a proveď rotaci.

Pro registry a obhájce

Upozornění na odolné artefakty (forge-jsxy-package.tgz, forge-jsx-explorer-* / chromiumExtensionDbHarvest / discordRelayUpload) názvy souborů) spíše než název balíčku, který se mění.

Označte strukturální kombinaci, na které se rodina spoléhá – postinstalační příkaz, který materializuje skripty do skryté cesty k konfiguračnímu adresáři a operačního systému. automatické spuštění registrace – nezávisle na konkrétních použitých řetězcích.

Jméno na balíku se změnilo nejméně čtyřikrát; bedna uvnitř ne. Detekce postavená na tom, co kód dělá, přežila každý dosavadní přeznačení.

nástroje pro analýzu složení softwaru SCA
Stanovte priority, opravte a zabezpečte svá softwarová rizika
Získejte svůj bezplatný účet.
Nevyžaduje se žádná kreditní karta.

Zajistěte si vývoj a dodávky softwaru

s produktovým balíčkem Xygeni