- Du „npm“ paketai, „colortoolsv2“ ir „mimelib2“, kreipėsi į „Ethereum“ išmaniąsias sutartis, kad gautų C2 URL antrojo etapo kenkėjiškoms programoms.
- Užpuolikai vykdė inscenizuotą kampaniją, naudodami netikrus „GitHub“ prekybos robotų saugyklas, kad priviliotų kūrėjus.
- Ši technika susilieja su teisėtu blokų grandinės srautu, todėl apsunkinamas aptikimas ir pašalinimas.
- „ReversingLabs“ bendrino IoC, įskaitant paketų maišos kodus ir sutarties adresą, naudojamą URL adresams pateikti.
Tyrėjai išsamiai aprašė tiekimo grandinės schemą npm registre, kurioje konsultavosi dvi „JavaScript“ bibliotekos. „Ethereum“ išmaniosios sutartys kad būtų galima aptikti tolesnių kenkėjiškų programų atsisiuntimo vietas. Ši taktika, pastebėta 2025 m. liepos mėn. ir dabar pašalinta iš npm, rodo, kaip viešosios blokų grandinės gali būti netinkamai naudojamos kaip netiesioginio ryšio sluoksnis, siekiant išlaikyti vadovavimo ir kontrolės (C2) infrastruktūra už akių.
Užuot įterpęs fiksuotus URL, kenkėjiškas kodas juos vykdymo metu ištraukė iš „Ethereum“ sutarties, todėl veikla atrodė kaip įprastos užklausos grandinėje. Šis pokytis buvo nukreiptas į decentralizuota „adresų knyga“ Naudingosios apkrovos pristatymo analizė iliustruoja, kaip grėsmių kūrėjai prisitaiko, kad išvengtų įprasto nuskaitymo ir supaprastintų blokavimo sąrašų.
Kas buvo įkelta į npm
„ReversingLabs“ teigimu, paketai, pavadinti spalvų įrankiai v2 bei mimelib2 buvo paskelbti 2025 m. liepos mėn. ir vėliau pašalinti. Kiekvienas iš jų veikė kaip mažas įkėlėjas: kai tik paketas buvo įdiegta arba importuota, jis vykdė kodą, kuris susisiekė su „Ethereum“ sutartimi, nuskaitė reikšmę ir tada iš grąžinto URL nuskaitė kito etapo komponentą.
Nors npm bibliotekos giliai neužgožė savo įkrovos elgsenos, patikimumas buvo sukurtas kitur: susieti „GitHub“ projektai perėmė pažįstamus pavadinimų ir veiklos modelius, kad atrodytų teisėti, todėl kūrėjams buvo lengviau priimti priklausomybę iš pirmo žvilgsnio.
Kaip veikė išmaniųjų sutarčių sukimosi mechanizmas
Naudingosios apkrovos vietos nebuvo užkoduotos. Vietoj to, krautuvas pateikė užklausą dėl sutarties adresu 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, naudojant skaitymo funkcijas, kurios grąžino eilutę, interpretuotą kaip URL antrojo etapo URL. Talpindami rodyklę grandinėje, užpuolikai įgijo atsparumą: tai yra viešas, užklausiamas ir atnaujinamas neskleidžiant naujų „npm“ leidimų ir nepalaikant vieno pašalinimui linkusio serverio.
Kadangi blokų grandinės užklausos primena gerybinius kriptovaliutų įrankius ir analizę, šios užklausos gali būti integruotos į įprastus kūrėjų darbo eigą. Šis metodas atkartoja ankstesnes idėjas, tokias kaip „EtherHiding“, tačiau čia jis buvo tiesiogiai integruotas į npm paketo vykdymas, paversdami įprastą diegimą etapais vykdomo pristatymo keliu.
Platesnis „GitHub“ siekis skatinti sėklų diegimą
„npm“ paketai buvo susieti „GitHub“ saugyklų tinkle, kuris buvo pozicionuojamas kaip kriptovaliutų prekybos priemonės. Pavyzdžiai: solana-trading-bot-v2, ethereum-mev-bot-v2, arbitražo robotasir hiperlikvidumo prekybos robotasŠių saugyklų veikla – žvaigždės, atšakos, stebėtojai ir dažni pakeitimai – buvo sukurta siekiant parodyti teisėtumą ir pagreitį.
„ReversingLabs“ susieja šį stiprinimą su platinimo kaip paslaugos klasteriu, vadinamu Žvaigždžių stebėtojų vaiduoklių tinklas, kur koordinuotos paskyros išpučia populiarumo signalus ir į projektus įterpia kenkėjiškas priklausomybes. Vėliau buvo pašalinta su viena pagrindine saugykla susijusi „GitHub“ paskyra, tačiau pakeitimų istorija parodė, kaip kenkėjiškas importas buvo įterpti į kodą laikui bėgant.
Laiko juosta ir paketų rotacija
„Colortoolsv2“ pasirodė pirmas ir buvo užblokuotas maždaug npm metu Liepa 7, 2025Netrukus po to aktoriai buvo pakeisti beveik identišku aktoriumi, vardu mimelib2, išsaugant tą pačią išmaniosios sutarties paiešką antrojo etapo URL. Šis greitas keitimas pabrėžia pažįstamą tiekimo grandinės incidentų modelį: kai tik vienas artefaktas pažymimas, panašus į paketą greitai atlieka savo vaidmenį.
Kompromiso rodikliai (IoC)
„ReversingLabs“ pranešė apie šiuos rodiklius, kurie atitinka kampaniją. Organizacijos gali juos naudoti siekdamos skatinti aptikimas ir medžioklė pastangos:
- npm paketai ir versijos:
- colortoolsv2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215)
- colortoolsv2 1.0.1 (SHA1 1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b)
- colortoolsv2 1.0.2 (SHA1 db86351f938a55756061e9b1f4469ff2699e9e27)
- mimelib2 1.0.0 (SHA1 bda31e9022f5994385c26bd8a451acf0cd0b36da)
- mimelib2 1.0.1 (SHA1 c5488b605cf3e9e9ef35da407ea848cf0326fdea)
- Antrojo etapo failas: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
- Ethereum contract: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Kodėl šis metodas apsunkina gynybą
Perkeliant sprendimą „kur eiti toliau“ į kitą įmonę sumani sutartis, užpuolikai atsieja kenkėjiškos programos logiką nuo vieno galinio taško. Jei URL užblokuojamas, sutarties vertė gali būti atnaujinta, o tas pats npm paketas išspręs naują vietą be pakeitimų. Šis dinamiškumas kenkia statiniai indikatoriai ir pakelia kartelę pargriovimams.
Be to, daugelis kūrėjų aplinkų jau sąveikauja su „web3“ galiniais taškais, todėl EVM iškvietimai gali nebūti savaime įtartini. Riba tarp teisėto blokų grandinės srauto ir... kenkėjiškas signalizavimas neryškumas, iššūkis tiek tinklo stebėjimo, tiek galinių taškų aptikimo strategijoms.
Praktiniai žingsniai NPM ir Web3 kūrėjams
Prieš įtraukdamos priklausomybę, komandos turėtų derinti kodo, priežiūros ir tinklo analizę. Be atsisiuntimų skaičiaus ir žvaigždučių skaičiaus, išnagrinėkite prižiūrėtojo istorija, saugyklos amžius, pakeitimų kokybė, išleidimo dažnumas ir tai, ar paketas netikėtai susisiekia su grandinėje esančiomis sutartimis ar nepažįstamais serveriais.
- Patikrinkite montavimo ir po montavimo kabliukus, taip pat įėjimo taškus, ar nėra tinklo skambučiai arba vaiko proceso vykdymas.
- Blokuokite arba įspėkite apie netikėtas EVM RPC užklausas iš CI/CD arba kūrimo srautų; nustatykite, prie ko turėtų prisijungti jūsų įrankiai, ir neigti likusius.
- Prisekite versijas, naudokite užrakinimo failus ir dubliuokite patikrintus paketus vidiniame registre, kad sumažintumėte riziką paketų mainai.
- Priimti artefaktų patvirtinimus ir parašo tikrinimą (pvz., SLSA kilmę), kad būtų užtikrintas priklausomybių vientisumas patvirtinta kūrimo metu.
- Nuolat nuskaitykite priklausomybės grafikus, ar nėra naujai atskleistų IoC ir anomalių prižiūrėtojo pakeitimai.
Saugyklų, kurias paveikė kampanija, atveju peržiūrėkite naujausius pakeitimus, susijusius su „colortoolsv2“ arba „mimelib2“ įdiegimu, pažeistų kompiliacijų metu naudotais „roll“ raktais ir žetonais, ir apsvarstykite galimybę iš naujo atkurti sistemas, kurios vykdė paveiktus paketus, kad pašalintumėte bet kokius... antrojo etapo artefaktai.
Epizode pabrėžiama, kaip kartu su „Ethereum“ galima panaudoti pažįstamą platformą – „npm“, kad būtų užmaskuotas pėdsakas tarp priklausomybės ir jos naudingosios apkrovos serverio. Kai grandinėje esantys duomenys veikia kaip atsparus rodyklė, gynėjai yra priversti koreliuoti. paketo elgsena, „GitHub“ signalai ir blokų grandinės skaitymai kad būtų galima pastebėti tai, ko nepastebi paprasti statiniai patikrinimai.