TL; DR
Aptuveni divus mēnešus, viens npm informācijas zaglis ir atkal parādījies ar mainīgu pakotņu nosaukumu sēriju, vienlaikus piegādājot gandrīz nemainīgu vērtumu. Tas atklāti sākās kā forge-jsxy, radās forge-jsx3 / forge-jsx4 brāļi un māsas, pēc tam pilnībā atteicās no "kalves" zīmola, lai vispirms izliktos par izstrādātāja infrastruktūru zredis-typed, un pavisam nesen pinokio-redis.
Katram variantam ir tā pati iekšējā instrumentu ķēde: faili ar nosaukumu forge-jsx-explorer-*, relayPackageServe modulis, kas kalpo forge-jsxy-package.tgzun noturīgu izpildlaiku, kas paslēpts zem punktētas direktorijas, lai tas izdzīvotu pēc npm pakotnes dzēšanas.
Derīgā slodze nolasās kriptovalūtas maka materiāls un izstrādātāja akreditācijas datus no mitināšanas vietnes un nosūta tos uz Discord tīmekļa vietnihooks, HuggingFace Hub augšupielādes un cietkodā iekodēts C2 galapunkts. Tas instalē operētājsistēmas līmeņa automātisko palaišanu, lai tas atkal darbotos pēc pārstartēšanas, un tas fiksē starpliktuves, tastatūras un ekrāna aktivitātes. Jaunākā versija, pinokio-redis, sevi raksturo kā "Autodesk Forge" integrāciju — apraksts, kas nav saistīts ar koda darbību.
| Ekosistēma | npm |
| Derīgās slodzes klase | daudzpakāpju informācijas zaglis + tālvadības aģents (RAT) |
| Galvenie mērķi | kriptovalūtu maki, pārlūkprogrammas maka paplašinājumi, izstrādātāja/mākoņa akreditācijas dati |
| Neatlaidība | slēpta izturīga izpildlaika vide + OS automātiskā palaišana (iztur pakotnes noņemšanu) |
| Eksfiltrācija | Discord tīmeklishooks + relejs, HuggingFace centrmezgls, cietkodēts C2 9877. portā |
| Novērotais diapazons | 2026. gada maijs – 2026. gada jūlijs (turpinās) |
| Jaunākais vārds | pinokio-redis:1.0.127 |
Uzbrukuma anatomija
Katrs šīs saimes variants tiek uzstādīts, izmantojot vienu un to pašu formu: iepakojumu. kas saraksta lapā izskatās inerts, bet deklarē pēcinstalēšanas āķi, tāpēc Lietderīgā slodze tiek palaista brīdī, kad pakotne tiek instalēta kā atkarība. āķis dzen piecu pakāpju ķēdi.
- 1. posms — materializēšanās. Instalēšanas skripts dekodē komplektētu, kodētu blob iekļauj izpildlaika skriptu kopā un ieraksta tos slēptā direktorijā platformas konfigurācijas atrašanās vietā (forge-jsxy versijās tika izmantots punktēts .forge-jsxy/runtime/v / ceļš). Tā kā šī kopija atrodas ārpus node_modules, npm pakotnes noņemšana vai publicēšanas atcelšana nenoņem darbojošos aģentu.
- 2. posms — pastāvēt. Ķēde reģistrē OS automātiskās palaišanas ierakstu, tāpēc aģents tiek atkārtoti palaists pēc atkārtotas palaišanas. Operētājsistēmā Windows tas darbojas, izmantojot slēptu PowerShell diagnostikas skriptu; aģenta process tiek palaists atsevišķi un ar iestatītu windowsHide, tāpēc konsoles logs netiek parādīts.
- 3. posms — izvairīšanās. Izpildlaika vide pārbauda nepārtrauktas integrācijas marķierus un klusi aizveras, kad tā atrod CI vidi, tāpēc automatizētās būvēšanas smilškastes neko neredz. forge-jsxy versijās avota komentārā bija norādīts, ka redzamais forgeInstall lauks tika apzināti izlaists no package.json, "jo šis lauks būtu redzams npm" — operators apzināti nerādīja trigera metadatus publiskajā sarakstā.
- 4. posms — savākšana. Kad aģents ir palaists, tas vienā piegājienā apkopo:
- Kriptovalūtu maka materiāls. Komplektā iekļautais secret_filename_patterns.json mērķu saraksts veic failu sistēmas pārbaudi wallet.dat, *.mnemonic /.seed / *.phrase faili, keypair.json, Ethereum UTC– atslēgu krātuves un *.p12 / *.pfx / *.jks atslēgu krātuves. Komplektā ir iekļautas maku atvasināšanas bibliotēkas (bip39, secp256k1, base58check un Solana palīgprogrammas).
- Pārlūkprogrammas maka paplašinājumi. chromiumExtensionDbHarvest modulis nolasa Chromium pārlūkprogrammu lokālās paplašinājumu krātuves datubāzes — vietu, kur pārlūkprogrammas maka paplašinājumi glabā savus glabātuves datus.
- Pilnvaras un noslēpumi. Aģents skenē čaulas vēsturi un slepenos failus, kā arī nolasa izstrādātāja/mākoņa akreditācijas datus un pēc tam kodē HuggingFace akreditācijas datus augšupielādei.
- Tiešraides ievade. Starpliktuves saturs, tastatūras ievade un ekrānuzņēmumi tiek pastāvīgi tverti.
5. posms — eksfiltrācijaApkopotie dati atstāj resursdatoru trīs paralēli darbojošies kanāli: Discord webhooks (discordWebhookPost) un Discord retranslācijas augšupielādētājs, kas sazinās ar `discord.com/api/v10` (discordRelayUpload), HuggingFace Hub augšupielādes (hfUpload) un a Cietkodētais C2 galapunkts sasniegts, izmantojot 9877. portu. RelayPackageServe. modulis papildus apkalpo forge-jsxy-package.tgz atpakaļizvadi — tas pats artefakta nosaukums katrā pārdēvēšanā.
Svarīgs strukturāls aspekts ir tas, ka 1.–3. posms tiek veikts instalēšanas laikā ar nav lietotāja mijiedarbības, un 1. posmā vērtums tiek novietots kaut kur pakotnē pārvaldnieks neseko. Izstrādātājs, kurš pamana dīvainu atkarību un palaižot npm uninstall, tiek noņemts saraksts, bet ne aģents.
Arī lietderīgā slodze ir izturīga pret ātru nolasīšanu. Izpildes laika skripti netiek piegādāti. skaidri: kodēšanas-izvietošanas solis saglabā darbības loģiku kā kodēts blobs, kas izvēršas lasāmos skriptos tikai pēc instalēšanas ķēdes dekodē to slēptajā izpildlaika direktorijā. Redzamie faili sarakstā — plānā pēcinstalācijas starplikas un dist-materializācijas palīgs — atklāj maz par to, kas galu galā darbojas. Šī kodētā piegāde dizainam ir bijusi izmērāma ietekme uz triāžu: visā ģimenes dzīves laikā, vairāki apstiprināti varianti tika novērtēti kā droši, izmantojot automatizētu klasifikāciju, un lietderīgā slodze ir bijusi pietiekami necaurspīdīga, lai pilnībā apturētu automatizētu pārskatīšanu. Uzvedība, kas atklāj ģimeni, ir redzama tikai pēc iekodēšanas posms tiek izvērsts, un izpildlaiks tiek nolasīts tieši.
Timeline
Saimes kravnesība ir saglabājusies ievērojami stabila; izmaiņas ir nosaukums uz kastes. Lokāls sākas no atvērtas “kalves” zīmola uz maskējas kā nesaistīti izstrādātāju rīki.
| Datums (2026) | Pakotne: versija | Piezīmes |
|---|---|---|
| Maijs (agri) | forge-jsxy:1.0.81, :1.0.90 | Agrākie apstiprinātie varianti — RAT ar AES-256-GCM šifrētu C2 |
| 19.Maijs | forge-jsxy:1.0.92 / 1.0.105 / 1.0.107 / 1.0.108 | Kampaņa aktīvi tiek publicēta; 1.0.92 versija sākotnēji tika kļūdaini atzīmēta kā droša un tika mainīta pēc koda atkārtotas pārskatīšanas. |
| Maija beigas | forge-jsx3 / forge-jsx4:1.0.122 / 1.0.123, zod-pino | Radniecīgu pakotņu nosaukumi, tā pati rīku ķēde |
| jūnijs 4 | forge-jsxy:1.0.120 | Turpinājums; klasificēts kā drošs pēc ML modeļa (kļūda) |
| 21.–23. jūnijs | forge-jsxy:1.0.121 | Moduļu komplekts nav mainīts no 1.0.120 versijas |
| jūlijs 6 | zredis-typed:1.0.127 | Vārds "kalve" no nosaukuma izņemts; joprojām tiek piegādāts forge-jsxy-package.tgz un forgeAgent* konfigurācijas atslēgas |
| jūlijs 7 | pinokio-redis:1.0.127 | Tā pati rīku ķēde; jaunais C2; sevi raksturo kā "Autodesk Forge" integrāciju |
Visā laika skalā izceļas divas lietas. Pirmkārt, versijas numurs 1.0.127 tiek atkārtoti izmantots burtiski gan zredis-typed, gan pinokio-redis — nosaukumi mainās, bet būvējuma līnija netiek atiestatīta. Otrkārt, pāreja no “forge-*” nosaukumiem sakrīt ar pāreju uz nosaukumiem, kas lasāmi kā parasta infrastruktūra (redis, pinokio), samazinot iespēju, ka izstrādātājs noskumstē nosaukumu un vilcinās.
Kompromisa rādītāji
Zemāk esošie IOC ir atbrīvoti no fangiem. C2 resursdators tika pagriezts starp forge-jsxy līniju. un jaunāko variantu, saglabājot to pašu portu.
| Indikators | Vērtība | Redzēts iekšā |
|---|---|---|
| C2 galapunkts | 212.193.3[.]61:9877 | pinokio-redis:1.0.127 |
| C2 galapunkts | 79.108.162[.]160:9877 | forge-jsxy līnija, zredis-typed:1.0.127 |
| Exfil kanāls | discord.com/api/webhooks/… (tīmekļa āķa ieraksts) | visi varianti |
| Exfil kanāls | discord.com/api/v10 (releja augšupielāde) | visi varianti |
| Exfil kanāls | HuggingFace Hub augšupielāde | visi varianti |
| Pasniegts artefakts | forge-jsxy-package.tgz (Pa relayPackageServe) | visi varianti |
| Rīkķēdes faili | chromiumExtensionDbHarvest, discordRelayUpload, discordWebhookPost, hfUpload, encode-hf-credentials, forge-jsx-explorer-* | visi varianti |
| Mērķu saraksts | secret_filename_patterns.json (wallet.dat, .mnemonic/.seed/.phrase, keypair.json, UTC--, .p12/.pfx/*.jks) | visi varianti |
| Slēpta izpildlaika | punktētas …/.forge-jsxy/runtime/v<version>/ konfigurācijas mapes ceļš | forge-jsxy līnija |
| Windows noturība | slēptais PowerShell automātiskās palaišanas skripts "kalšanas diagnostika" | visi varianti |
| Instalējiet sprūdu | pēcinstalēšanas āķis, kas izsauc dist-materializācijas skriptu ķēdi | visi varianti |
Visizturīgākais noteikšanas signāls nav jebkurš atsevišķs resursdators vai tīmekļa āķis — tie rotēt — bet rīku ķēdes failu nosaukumi un forge-jsxy-package.tgz artefakts, kas ir saglabājies burtiski līdz katrai pārdēvēšanai.
Atribūcija un novērotā uzvedība
Pakotnes tika publicētas vairāk nekā vienā npm kontā. Forge-jsxy rindā izmantots izdevējs jacksonkaandorp2 (jacksonkaandorp2@outlook[.]com); Jaunāko Pinokio-Redis variantu publicēja Donimique (donimiqueakers@gmail[.]com). Nevienā no kontiem nebija verificētas e-pasta adreses vai saistīta avota krātuve. Caurlaide starp kontiem ir rīku ķēde, nevis izdevēja identitāte — tie paši moduļu nosaukumi, tas pats apkalpoja .tgz, un viens un tas pats exfil dizains atkārtojas neatkarīgi no tā, kurš publicēja.
Vairākas novērojamas uzvedības liecina par apzinātu slēpšanu, nevis nejauša pārmērīga savākšana:
Izpildlaika vide tiek novietota ārpus node_modules slēptā direktorijā, tāpēc tā pastāv ilgāk nekā pakotne, kas to piegādāja.
Aģents izslēdzas, kad tas konstatē kritiskās interferences (CI) vidi, ierobežojot iedarbību automatizētās analīzes smilškastēs.
Aģenta process tiek palaists atsevišķi un logs-paslēpts.Iekšā forge-jsxy versijās komentārs saistīja redzamā instalēšanas lauka izlaišanu ar to, ka šis lauks ir “redzams npm”.
Publisko pakotņu apraksti nav saistīti ar kodu — pinokio-redis tiek attēlots kā “Autodesk Forge” integrācija.
Aizstāvjiem, kas paļaujas uz vienu atkārtotu atklāšanas nepilnību, ir vērts atzīmēt automatizēta klasifikācija: šajā ģimenē tika apstiprināti vairāki varianti ML klasifikators novērtēja kā drošu pirms koda pārskatīšanas, lai labotu spriedums. Stabilie elementi, uz kuriem recenzents var balstīties, — instalēšanas laiks ķēde, slēptā izpildlaika vide, rīku ķēdes failu nosaukumi — ir tieši tie paši kas pārdzīvo pārdēvēšanu.
Mēs raksturojam iepriekš minēto kā novēroto uzvedību. Mēs to nepiedēvējam kampaņa jebkuram nosauktam dalībniekam, un mēs nesniedzam nekādas pretenzijas par operatora identitāte vai mērķi, kas pārsniedz to, ko demonstrē kods un infrastruktūra.
Ietekme, tendences un aizstāvju vadlīnijas
Kas ir pakļauts. Kolekcijas komplekts ir pilnībā paredzēts izstrādātājiem mašīnas: kriptovalūtas maki un atslēgu krātuves, pārlūkprogrammas maka paplašinājumi, čaulas vēsturi un mākoņa/pakalpojuma akreditācijas datus. Ikviens, kurš instalē skartā paka — tieši vai kā tranzitīva atkarība — laikā, kad logs, kurā tas bija tiešraidē, ir darbības jomā, un noturības dizains nozīmē, ka iedarbība nebeidzas, kad iepakojums tiek noņemts.
Kāpēc neatlaidība ir svarīga. Tā kā 1. posms kopē lietderīgo slodzi uz slēptā izpildlaika direktorijs un 2. posma reģistri automātiski startē, parasti labošanas instinkts (atinstalēt slikto atkarību, dzēst node_modules, atkārtoti instalēt) neizslēdz aģentu. Incidentu reaģēšanas komandai ir jāmeklē ārpus koka esošā izpildlaika un automātiskās palaišanas ieraksta, ne tikai pakotnes.
Tendence. Šī ģimene ilustrē modeli, kuru ir vērts novērot: stabila un nobriedusi lietderīgā slodze, ietīta vienreizlietojamu materiālu plūsmāpakotņu nosaukumi, kas migrē prom no jebkura nosaukuma, kas iepriekš tika noņemts atpazīstams, virzienā uz nosaukumiem, kas lasāmi kā parasta infrastruktūra. Uz nosaukumiem balstīts bloķēšanas saraksti un izdevēja reputācija ātri noveco pret to; uzvedība- un uz artefaktiem balstīti signāli to nedara.
Izstrādātājiem un patērētājiem
Instalēšanas laika skriptus uztveriet kā galveno riska virsmu. Ja iespējams, instalējiet ar atspējotiem skriptiem un pārskatiet visas atkarības, kas deklarē a pēcinstalēšanas. Transitīvas atkarības ar PIN un VET palīdzību; šī ļaunprogrammatūras klase tikpat viegli nonāk gan caur apakšatkarību, gan tieši.
Aizdomīgā resursdatorā meklējiet informāciju ārpus pakotnes: meklējiet slēptu izpildlaika direktoriju platformas konfigurācijas atrašanās vietā, negaidītu automātiskās palaišanas ierakstu, un izejošos savienojumus ar Discord webhook vai :9877 galapunktiem.
Pieņemsim, ka jebkura maka sākuma frāze, atslēgu krātuve vai akreditācijas dati, kas atrodas skartajā resursdatorā iedarbības loga laikā, ir apdraudēti, un veiciet rotāciju.
Reģistratūrām un aizstāvjiem
Brīdinājums par izturīgajiem artefaktiem (forge-jsxy-package.tgz, forge-jsx-explorer-* / chromiumExtensionDbHarvest / discordRelayUpload) failu nosaukumi), nevis pakotnes nosaukums, kas mainās.
Atzīmējiet strukturālo kombināciju, uz kuru saime balstās — pēcinstalēšanas, kas materializē skriptus slēptā konfigurācijas direktorijā, kā arī operētājsistēmā. automātiskās palaišanas reģistrācija — neatkarīgi no konkrētajām iesaistītajām virknēm.
Nosaukums uz iepakojuma ir mainījies vismaz četras reizes; kaste iekšpusē nav. Koda darbības balstīta noteikšana ir pārdzīvojusi visu laiku pārmarķēšana līdz šim.





