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ém | Npm |
| Třída užitečného zatížení | vícestupňový infostealer + agent pro vzdálené ovládání (RAT) |
| Primární cíle | krypto peněženky, rozšíření peněženek prohlížeče, přihlašovací údaje pro vývojáře/cloud |
| Perzistence | skrytý odolný běhový modul + automatické spuštění OS (přežije odebrání balíčku) |
| Exfiltrace | webový nesouladhooks + relé, HuggingFace Hub, pevně naprogramovaný C2 na portu 9877 |
| Pozorovaný rozsah | květen 2026 – červenec 2026 (probíhá) |
| Nejnovější jméno | pinokio-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:
- 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).
- 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.
- 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í.
- Ž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í.





