forge-jsxy npm Infostealer: IOC's & Deteksjegids

forge-jsxy: De npm Infostealer dy't syn namme bliuwt feroarjen

TL; DR

Foar sawat Twa moannen, in inkele npm-ynfostealer is wer opdûkt ûnder in wikseljende searje pakketnammen, wylst hy in hast ûnferoare lading ferstjoerde. It begon iepenlik as forge-jsxy, ûntstien forge-jsx3 / forge-jsx4 sibben, doe de "forge" branding hielendal falle litten om har foar te dwaan as ûntwikkeldersynfrastruktuer - earst zredis-typed, en meast resint pinokio-redis.

Elke fariant draacht de deselde ynterne arkketen: triemmen mei de namme forge-jsx-explorer-*, a relayPackageServe module dy't tsjinnet in forge-jsxy-package.tgz, en in duorsume runtime ferburgen ûnder in stippele map, sadat it it wiskjen fan it npm-pakket oerlibet.

De lading lêst materiaal foar cryptocurrency-wallet en ûntwikkeldersgegevens fan 'e host en stjoert se nei Discord webhooks, HuggingFace Hub uploads, en in hurdkodearre C2-eindpunt. It ynstallearret automatyske start op OS-nivo, sadat it nei it opnij starte wer rint, en it fangt klamboerd-, toetseboerd- en skermaktiviteit. De lêste fariant, pinokio-redis, beskriuwt himsels as in "Autodesk Forge"-yntegraasje - in beskriuwing dy't net relatearre is oan wat de koade docht.

Ekosysteemnpm
Laadklassemearstadiums ynfosteller + ôfstânsbetsjinningsagent (RAT)
Primêre doelenkrypto-wallets, browser-wallet-útwreidings, ûntwikkelder-/wolkgegevens
Persistenceferburgen duorsume runtime + OS autostart (oerlibet pakketferwidering)
Exfiltrationweb discordhooks + relay, HuggingFace Hub, hurdkodearre C2 op poarte 9877
Waarnommen spanmaaie 2026 – july 2026 (oanhâldend)
Lêste nammepinokio-redis:1.0.127

Oanfalsanatomy

Elke fariant yn dizze famylje ynstallearret fia deselde foarm: in pakket dat liket ynert op syn listside, mar ferklearret in postinstall hook, dus de lading rint op it momint dat it pakket as in ôfhinklikens ynstalleare wurdt. heak driuwt in fiiftraps keatling oan.

  • Fase 1 - materialisearje. It ynstallaasjeskript dekodearret in bondele, kodearre blob yn in set runtime-skripts en skriuwt se yn in ferburgen map ûnder de platfoarmkonfiguraasjelokaasje (de forge-jsxy-ferzjes brûkten in stippele .forge-jsxy/runtime/v / paad). Omdat dizze kopy bûten node_modules stiet, wurdt de rinnende agent net fuorthelle troch it npm-pakket te ferwiderjen of te depublisearjen.
  • Fase 2 - oanhâlde. De keatling registrearret in automatyske start fan it bestjoeringssysteem, sadat de agent opnij starte by it opnij starte. Op Windows rint dit fia in ferburgen PowerShell-diagnostykskript; it agentproses wurdt loskeppele en mei windowsHide ynsteld, sadat der gjin konsolefinster ferskynt.
  • Fase 3 - ûntwykje. De runtime kontrolearret op markers foar trochgeande yntegraasje en slút stil ôf as it in CI-omjouwing detektearret, sadat automatisearre bou-sandboxen neat sjogge. Yn 'e forge-jsxy-ferzjes stelde in boarnekommentaar dat in sichtber forgeInstall-fjild mei opsetsin weilitten wie fan package.json "omdat dat fjild sichtber wêze soe op npm" - de operator hat de triggermetadata mei opsetsin bûten de iepenbiere list hâlden.
  • Fase 4 - sammelje. As de agint ienris rint, rispet it yn ien kear:
  1. Materiaal foar krypto-wallet. In bondele secret_filename_patterns.json doellist driuwt in triemsysteem-sweep oan foar wallet.dat, *.mnemonic /.seed / *.phrase-bestannen, keypair.json, Ethereum UTC– kaaiopslaggen, en *.p12 / *.pfx / *.jks kaaiopslaggen. Wallet-ôfliedingsbibleteken (bip39, secp256k1, base58check, en Solana-helpers) binne oanwêzich yn 'e bondel.
  2. Browser wallet-útwreidings. In chromiumExtensionDbHarvest-module lêst de lokale útwreidingsopslachdatabases fan Chromium-browsers, de lokaasje dêr't browser-basearre wallet-útwreidings har kluisgegevens bewarje.
  3. Bewiisbrieven en geheimen. De agent scant shellhistoarje en geheime bestannen en lêst ûntwikkelders-/wolkgegevens, en kodearret dan HuggingFace-gegevens foar upload.
  4. Live ynfier. Ynhâld fan it klamboerd, toetseboerdynfier en skermôfbyldings wurde trochgeande fêstlein.
  • Fase 5 - útfiltrearjeSammele gegevens ferlitte de host fia trije kanalen dy't parallel wurkje: Discord webhooks (discordWebhookPost) en in Discord relay uploader dy't praat mei `discord.com/api/v10` (discordRelayUpload), HuggingFace Hub-uploads (hfUpload), en in hurdkodearre C2-eindpunt berikt oer poarte 9877. In relayPackageServe module tsjinnet ek in forge-jsxy-package.tgz backout - itselde artefaktnamme oer elke omneaming.

It wichtige strukturele punt is dat stadia 1–3 rinne by ynstallaasje mei gjin ynteraksje fan 'e brûker, en etappe 1 pleatst de lading earne yn it pakket manager hâldt gjin spoar. In ûntwikkelder dy't de frjemde ôfhinklikens opmerkt en fiert npm uninstall út en ferwideret de listing mar net de agint.

De lading is ek net fluch te lêzen. De runtime-skripts wurde net ferstjoerd. yn it dúdlik: in kodearring-ynsetstap hâldt de operasjonele logika as in kodearre blob dy't allinich útwreidet nei lêsbere skripts as de ynstallaasjeketen ienris foltôge is dekodearret it yn 'e ferburgen runtime-map. De bestannen dy't sichtber binne op 'e listing - de tinne postinstall shim en in dist-materialisaasje helper - iepenbierje net folle oer wat úteinlik rint. Dizze kodearre levering ûntwerp hat in mjitber effekt hân op triage: oer de hiele libbensdoer fan 'e famylje, meardere befêstige farianten waarden feilich skoard troch automatisearre klassifikaasje, en de lading is ûntrochsichtich genôch west om automatisearre resinsje direkt te stopjen. It gedrach dat de famylje ferriedt, is pas sichtber nei de kodearre it poadium wurdt útwreide, en de runtime wurdt direkt lêzen.

Timeline

De lading fan 'e famylje is opmerklik stabyl bleaun; wat feroaret is de namme op 'e doaze. De bôge rint fan iepen "smederij" branding nei ferklaait har as net-relatearre ûntwikkeldersark.

Datum (2026)Pakket: ferzjeNoat
maaie (betiid)forge-jsxy:1.0.81, :1.0.90Ierste befêstige farianten - RAT mei AES-256-GCM-fersifere C2
mei 19forge-jsxy:1.0.92 / 1.0.105 / 1.0.107 / 1.0.108Kampanje yn aktive publikaasje; 1.0.92 waard yn earste ynstânsje ferkeard as feilich markearre en omkeard by opnij besjen fan koade
Ein maaieforge-jsx3 / forge-jsx4:1.0.122 / 1.0.123, zod-pinoSibling pakketnammen, deselde toolchain
Jun 4forge-jsxy:1.0.120Fuortsetting; feilich klassifisearre troch it ML-model (in misser)
21–23 junyforge-jsxy:1.0.121Module set net feroare fan 1.0.120
Jul 6zredis-typed:1.0.127"smederij" út 'e namme weilitten; noch altyd ferstjoerd forge-jsxy-package.tgz en forgeAgent* konfiguraasjesleutels
Jul 7pinokio-redis:1.0.127Deselde toolchain; nije C2; ​​beskriuwt himsels as in "Autodesk Forge" yntegraasje

Twa dingen falle op yn 'e tiidline. Earst wurdt ferzjenûmer 1.0.127 letterlik opnij brûkt troch sawol zredis-typed as pinokio-redis - de nammejouwing ferskowt, mar de build-lineage wurdt net weromset. Twad, de ferskowing fuort fan "forge-*" nammen falt gear mei in ferskowing nei nammen dy't lêze as gewoane ynfrastruktuer (redis, pinokio), wêrtroch't de kâns lytser wurdt dat in ûntwikkelder de namme oerslacht en wifket.

Yndikatoaren fan kompromis

IOC's hjirûnder binne defanged. De C2-host rotearre tusken de forge-jsxy-line en de lêste fariant wylst deselde haven bewarre bliuwt.

indicatorWeardeSjoen yn
C2-einpunt212.193.3[.]61:9877pinokio-redis:1.0.127
C2-einpunt79.108.162[.]160:9877forge-jsxy line, zredis-typed:1.0.127
Exfil-kanaaldiscord.com/api/webhooks/… (webhook-berjocht)alle farianten
Exfil-kanaaldiscord.com/api/v10 (relay upload)alle farianten
Exfil-kanaalHuggingFace Hub-uploadalle farianten
Tsjinne artefaktforge-jsxy-package.tgz (fia relayPackageServe)alle farianten
Toolchain-bestannenchromiumExtensionDbHarvest, discordRelayUpload, discordWebhookPost, hfUpload, encode-hf-credentials, forge-jsx-explorer-*alle farianten
Doellistsecret_filename_patterns.json (wallet.dat, .mnemonic/.seed/.phrase, keypair.json, UTC--, .p12/.pfx/*.jks)alle farianten
Ferburgen runtimedotted …/.forge-jsxy/runtime/v<version>/ konfiguraasjemappaadforge-jsxy line
Windows-persistinsjeferburgen PowerShell "forge diagnostics" autostartskriptalle farianten
Trigger ynstallearjepostinstall hook dy't in dist-materialization skriptketen oproptalle farianten

It duorsumste deteksjesignaal is net ien inkele host of webhook - dy rotearje - mar de toolchain-bestânsnammen en de forge-jsxy-package.tgz artefakt, dy't letterlik oanhâlden binne troch elke omneaming.

Attribúsje en waarnommen gedrach

De pakketten waarden publisearre ûnder mear as ien npm-akkount. De forge-jsxy rigel brûkte de útjouwer jacksonkaandorp2 (jacksonkaandorp2@outlook[.]com); de lêste pinokio-redis fariant waard publisearre troch donimique (donimiqueakers@gmail[.]com). Gjin fan beide akkounts hie in ferifiearre e-postadres of in keppele boarnebewarplak. De trochgeande line oer akkounts is de toolchain, net de identiteit fan 'e útjouwer - deselde modulenammen, itselde tsjinne .tgz, en itselde exfil-ûntwerp komt werom, nettsjinsteande wa't publisearre hat.

Ferskate waarnimbere gedragingen jouwe oan opsetlike ferberging ynstee fan tafallige oerkolleksje:

De runtime wurdt bûten node_modules pleatst yn in ferburgen map, sadat it langer libbet as it pakket dat it levere hat.

De agent springt út as it in CI-omjouwing detektearret, wêrtroch bleatstelling yn automatisearre analysesandboxen beheint.

It agintproses wurdt loskeppele lansearre en finster-ferburgen.Yn de forge-jsxy-ferzjes, in opmerking keppele it weilitten fan in sichtber ynstallaasjefjild oan dat fjild "sichtber op npm" wie.

De beskriuwingen fan it iepenbiere pakket binne net relatearre oan de koade - pinokio-redis wurdt presintearre as in "Autodesk Forge"-yntegraasje.

Ien weromkommende deteksjegat is it neamen wurdich foar ferdigeners dy't fertrouwe op automatisearre klassifikaasje: meardere befêstige farianten yn dizze famylje wiene skoard as feilich troch in ML-klassifikator foardat koadebeoardieling de korrizjeare útspraak. De stabile eleminten wêrop in resinsint ankerje kin - de ynstallaasjetiid chain, de ferburgen runtime, de toolchain-bestânsnammen - binne krekt dejingen dy't de omneamingen oerlibje.

Wy beskriuwe it boppesteande as waarnommen gedrach. Wy skriuwe de kampanje oan elke neamde akteur, en wy meitsje gjin oanspraak op 'e operator syn identiteit of doelen dy't fierder geane as wat de koade en ynfrastruktuer oantoane.

Ynfloed, Trends & Begelieding foar Ferdigeners

Wa is bleatsteld. De kolleksjeset is rjochte op ûntwikkelders masines: krypto-faluta-wallets en kaaiwinkels, browser-wallet-útwreidings, shell-skiednis en wolk-/tsjinstgegevens. Elkenien dy't in ynstalleart troffen pakket - direkt of as in transitive ôfhinklikens — tidens de finster wêr't it live wie is binnen it berik, en it persistinsjeûntwerp betsjut de bleatstelling einiget net as it pakket fuorthelle wurdt.

Wêrom't de oanhâldendheid wichtich is. Omdat etappe 1 de lading kopiearret nei in ferburgen runtime-map en stage 2 registers autostart, de gewoane remediaasje-ynstinkt (deynstallearje de minne ôfhinklikens, wiskje node_modules, opnij ynstallearje) ferwideret de agint net. Ynsidintrespons moat sykje nei de runtime bûten de beam en de autostart-yngong, net allinich it pakket.

De trend. Dizze famylje yllustrearret in patroan dat it wurdich is om te besjen: in lading dy't stabyl en folwoeksen is, ynpakt yn in stream fan wegwerpmateriaalpakketnammen dy't migrearje fan elke namme dy't in eardere takedown makke hat werkenber, nei nammen dy't lêze as gewoane ynfrastruktuer. Namme-basearre blokkearlisten en de reputaasje fan 'e útjouwer ferâldere hjir tsjin fluch; gedrach- en sinjalen basearre op artefakten net.

Foar ûntwikkelders en konsuminten

Behannelje skripts tidens ynstallaasje as it primêre risiko-oerflak. Ynstallearje mei skripts útskeakele wêr mooglik en kontrolearje elke ôfhinklikens dy't in ... ferklearret neiynstallearje. Pin en kontrolearje transitive ôfhinklikheden; dizze klasse malware komt like maklik fia in subôfhinklikens as in direkte ôfhinklikens.

Op in fertochte host, sykje fierder as it pakket: sykje nei in ferburgen runtime-map yn 'e platfoarmkonfiguraasjelokaasje, in ûnferwachte autostart-yngong, en útgeande ferbiningen nei Discord webhook of :9877 einpunten.

Nim oan dat elke wallet seed phrase, keystore, of credential dy't oanwêzich is op in troffen host tidens it bleatstellingsfinster kompromittearre is, en rotearje.

Foar registers en ferdigeners

Warskôging oer de duorsume artefakten (forge-jsxy-package.tgz, de forge-jsx-explorer-* / chromiumExtensionDbHarvest / discordRelayUpload bestânsnammen) ynstee fan de pakketnamme, dy't feroaret.

Markearje de strukturele kombinaasje wêrop de famylje fertrout - in postinstall dy't skripts materialisearret yn in ferburgen config-dir-paad plus in OS autostartregistraasje - ûnôfhinklik fan 'e spesifike strings dy't belutsen binne.

De namme op it pakket is teminsten fjouwer kear feroare; de ​​krat binnenyn hat net. Deteksje basearre op wat de koade docht hat langer oerlibbe as elke oant no ta opnij labeljen.

sca-tools-software-komposysje-analyse-ark
Prioritearje, ferhelpe en befeiligje jo softwarerisiko's
Krij jo fergese akkount.
Gjin kredytkaart nedich.

Befeiligje jo softwareûntwikkeling en levering

mei Xygeni Produkt Suite