- Kenkėjiški npm paketai „colortoolsv2“ ir „mimelib2“ nuskaitė C2 URL adresus iš „Ethereum“ išmaniosios sutarties, kad išvengtų aptikimo.
- Netiesioginė grandinės intarpų peradresacija leido operatoriams kaitalioti galinius taškus neperpublikuojant paketų; „colortoolsv2“ buvo pašalinta liepos 7 d., prieš perėjimą prie „mimelib2“.
- Koordinuotame „GitHub“ spaudimo projekte buvo panaudoti netikri prekybos robotų repo įrašai, išpūstos žvaigždės ir scenarijaus pagrindu sukurti pakeitimai, siekiant užmaskuoti kenkėjiškas priklausomybes.
- IoC dokumentuose pateikiamos paketų versijos, SHA1 maišos ir sutartis 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, taip pat pateikiamos gairės gynėjams.

Grėsmių veikėjai griebėsi naujo triuko: nukreipti kenkėjišką infrastruktūrą per „Ethereum“ išmanioji sutartis, skirta paslėpti komandų ir valdymo (C2) rodykles Naudojami npm paketų. Pasak „ReversingLabs“, du paketai – „colortoolsv2“ ir „mimelib2“ – tyliai susisiekė su blokų grandine, kad gautų antrojo etapo naudingųjų apkrovų URL, apeidami įprastus patikrinimus, kurie ieško užkoduotų domenų.
Užuot išnaudojusi paties „Ethereum“ klaidą, schema naudoja tinklą kaip viešas, atsparus netiesioginis sluoksnisPo to, kai liepos 2 d. „npm“ buvo užblokuotas „colortoolsv7“, operatoriai greitai perėjo prie „mimelib2“ su beveik identiška logika, toliau remdamiesi ta pačia grandinės sutartimi kitame žingsnyje.
Nuo npm diegimo iki paieškos grandinėje: kaip veikė apėjimas

„colortoolsv2“ viduje minimalus įkroviklis (index.js) veikė kaip dispečeris, kuris iškvietė išorinę komandą ir nuskaitė savo tikslą iš išmaniosios sutarties vietoj vietinio scenarijaus arba statinės konfigūracijos. „Etherscan“ rodo sutartį ties 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, kurios skaitymo funkcijos grąžino URL, naudotą norint pasiekti C2 paslaugą.
Šis grandinėje esantis rodyklė apsunkino blokavimą: gynėjai negalėjo tiesiog pasikliauti tuo, kad pakete ras arba įtrauks į juodąjį sąrašą kietuoju kodu užkoduotą domeną, nes aktyvus galinis taškas, veikiantis už operatorių kontroliuojamos sutartiesBesikeičiančioms paskirties vietoms reikėjo tik atnaujinti sutarčių saugyklą, o ne iš naujo publikuoti npm artefaktą, o bet koks gautas blokų grandinės srautas buvo įtrauktas kaip teisėtas.
Kai diegimo arba vykdymo metu bus paleistas, krautuvas gaus second-stage component (SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21), kuris tvarkė tolesnę veiklą. Pamėgdžiodamas „colortoolsv2“ elgesį, „mimelib2“ pakartotinai panaudojo tą pačią sutartį tam pačiam tikslui su beveik identiškais kodo keliais.
„ReversingLabs“ apibūdino šį požiūrį kaip neįprastą npm ekosistemoje: kenkėjiški URL adresai buvo talpinami per išmaniosios sutarties būseną, o ne tradicinėse žiniatinklio paslaugose, dažnai matytose ankstesnėse tiekimo grandinės kampanijose (pvz., debesies saugykloje ar „gist“ paslaugose).
„GitHub“ dūmai ir veidrodžiai: netikri prekybos robotų repo sandoriai kaip priedanga

„npm“ paketai nepasirodė atskirai. Operatoriai sukūrė „GitHub“ projektų tinklą, pristatytą kaip kriptovaliutų prekybos programas.saugyklos, tokios kaip „solana-trading-bot-v2“– ir tada prijungė juos prie kenkėjiškų priklausomybių. Atsitiktiniam stebėtojui šios saugyklos atrodė „gyvos“, turėdamos tūkstančius pakeitimų, daugybę prižiūrėtojų, žvaigždžių ir stebėtojų.
Atidžiau panagrinėjus paaiškėjo, kad didelė dalis veiklos buvo suplanuota ir paviršutiniška, įskaitant pasikartojantį licencijų bylų praradimą ir naujai sukurtos paskyros su menku turiniu (kai kurie sukurti apie liepos 10 d., o README failai buvo vos „Hello“). Vartotojų vardai, kurie buvo rodomi pakeitimų istorijose, įskaitant „slunfuedrac“, „cnaovalles“ ir „pasttimerles“, ne kartą pasirodė visuose parengtuose projektuose.
Komitetai tiksliai parodė, kur paketai buvo sujungti į kodo bazę.pridedant „colortoolsv2“ ir vėlesnes „mimelib2“ kaip priklausomybes bot.ts faile ir atitinkamus importavimus src/index.ts faile. Sukurtas socialinis įrodymas paviršutiniškai peržiūrint priklausomybės įterpimą padarė daug mažiau pastebimą.
Iš esmės „GitHub“ fasadas sustiprino pasitikėjimo signalus, o tikrasis kenkėjiškos programos tolesnio žingsnio sprendimo taškas gyveno Ethereum platformojeAtskyrę socialinę inžineriją („GitHub“) nuo kontrolės (išmaniosios sutartys), operatoriai apsunkino kampanijos pastebėjimą ir sutrikdymą.
IOC ir konkretūs žingsniai gynėjams

„ReversingLabs“ paskelbė išsamų su šia veikla susijusių artefaktų sąrašą kartu su pagrindine grandinės nuoroda, kuri lėmė antrąjį etapą. Šie elementai gali būti naudojami ieškoti, blokuoti ir patvirtinti užsikrėtimus kūrimo vamzdynuose ir kūrėjų darbo vietose:
- npm packages: colortoolsv2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215), 1.0.1 (1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b), 1.0.2 (db86351f938a55756061e9b1f4469ff2699e9e27)
- npm packages: mimelib2 1.0.0 (bda31e9022f5994385c26bd8a451acf0cd0b36da), 1.0.1 (c5488b605cf3e9e9ef35da407ea848cf0326fdea)
- Second stage: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
- Išmanioji sutartis, naudojama C2 netiesioginiam perdavimui: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Papildomas kontekstas iš pašalinimo etapo: „colortoolsv2“ buvo pašalintas iš „npm“ liepos 7 d., po kurio operatoriai perėjo prie „mimelib2“ su ta pačia grandinės nuoroda ir beveik identišku įkrovos veikimu.
Rekomenduojami veiksmai inžinerijos ir saugumo komandoms: žymėti diegimo scenarijų atliekamas paieškas grandinėje; blokuoti arba įspėti apie „child_process“ vykdymą paketo gyvavimo ciklo užklausose; neleisti tinklo išėjimo npm diegimo metu CI; vykdyti registrų ir prižiūrėtojų leidžiamųjų sąrašų vykdymą; užrakinti tranzityvias versijas; ir stebėti užklausas, susietas su aukščiau pateiktu sutarties adresu.
Plačiau žiūrint, saugyklų populiarumo metriką traktuokite kaip ne saugumo signalus. Pasitikėjimas turėtų kilti iš kodo, artefaktų ir tinklo indikatorių, o ne žvaigždžių skaičius, pakeitimų apimtis ar daugelio „prižiūrėtojų“ atsiradimas. Nepriklausomas patikrinimas – statinė analizė, vykdymas smėlio dėžėje ir SBOM pagrįsti kilmės patikrinimai – išlieka labai svarbūs.
Šioje kampanijoje išsiskiria ne atskirų „Ethereum“, „npm“ ar „GitHub“ trūkumų, o tai, kaip viešoji infrastruktūra gali būti įpinta į slaptą pristatymo grandinę. C2 atradimų perkėlimas į išmaniąją sutartį ir patikimumo plovimas per „GitHub“, aktoriai ištempė tradicinį aptikimą iš formos. Atsvaras yra kruopšti priklausomybių higiena ir daugiasluoksnė kontrolė.