- Du „npm“ paketai, „colortoolsv2“ ir „mimelib2“, nukreipė C2 per „Ethereum“ išmaniąją sutartį, kad būtų išvengta aptikimo.
- Netikri „GitHub“ prekybos robotų repo sandoriai padidino pasitikėjimą etapais atliktais pakeitimais ir paskyromis prieš pridedant kenkėjišką priklausomybę.
- Ta pati grandinės sutartis (0x1f171a1b07c108eae05a5bccbe86922d66227e2b) pateikė antrojo etapo URL.
- IoC apima konkrečias paketų versijas ir SHA1 maišos kodus; komandos turėtų stebėti netikėtus blokų grandinės iškvietimus diegimo scenarijuose.

„ReversingLabs“ pažymėjo du npm paketus kuris tyliai nukreipė diegimo logiką per „Ethereum“ išmaniąją sutartį, paversdamas viešą blokų grandinę slaptu katalogu, skirtu komandų ir valdymo (C2) infrastruktūrai. Paketai „colortoolsv2“ ir „mimelib2“ apsimetė paprastomis pagalbinėmis programomis, tuo pačiu leisdami gauti antrojo etapo naudingąją apkrovą.
Perduodami C2 adresą grandinėje esančiai sutarčiai, operatoriai savo srautą apėmė tuo, kas atrodo kaip įprasta blokų grandinės veikla – šis žingsnis... apsunkina statinį ir reputacija pagrįstą aptikimąSutartyje, kurios kodas yra 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, buvo pateiktos skaitymo funkcijos, grąžinančios URL adresą, su kuriuo vėliau susisiekdavo diegėjai.
Nuo npm įkroviklio iki grandinėje įjungto C2

„colortoolsv2“ viduje yra plonas index.js įkėlėjas iškvietė išorinę komandą, kurios vieta nebuvo užkoduota lokaliai. Vietoj to, ji pateikė užklausą „Ethereum“ išmaniajai sutarčiai dėl galinio taško, kuris nukreiptų pagrindinį kompiuterį į komandų ir valdymo funkciją.
Vieši tyrinėtojai, pavyzdžiui, „Etherscan“ rodo sutartį Atskleisdamos paprastas skaitymo funkcijas, kurios grąžina URL, efektyviai naudodamos grandinę kaip atsparų rodyklę užpuoliko infrastruktūrai. Kadangi paskutinis šuolis gaunamas iš blokų grandinės iškvietimo, gynėjai nemato statinio domeno, įterpto į npm paketą.
Po atradimo „colortoolsv2“ buvo užblokuotas npm liepos 7 d.Netrukus po to operatoriai paskelbė „mimelib2“, kuriame, remiantis analize, antrajam etapui įgyvendinti buvo panaudota beveik identiška logika ir ta pati išmanioji sutartis.
Paleidus, krautuvas paėmė antrojo etapo komponentas kurio maišos kodą paskelbė tyrėjai (SHA1: 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21). Šis netiesioginis metodas leido užpuolikams savo nuožiūra keisti paskirties vietas redaguojant grandinėje esančius duomenis, o ne perpakuojant kodą.
„GitHub“ patikimumo žaidimas, skirtas užmaskuoti kenkėjiškas priklausomybes

„ReversingLabs“ taip pat aptiko netikrų „GitHub“ projektų tinklą, kuris buvo pateiktas kaip kriptovaliutų prekybos robotai, su tūkstančiais pakeitimų, daugybe prižiūrėtojų, žvaigždžių ir stebėtojų. Tokios saugyklos kaip „solana-trading-bot-v2“ atrodė gyvybingos, bet didžiąją dalį veiklos sudarė automatizuotas triukšmas.
Daugelis pakeitimų sumaišė nereikšmingus failus (pavyzdžiui, pakartotinius LICENSE redagavimus), o jų sankaupos buvo tokios: panašių paskyrų, sukurtų maždaug liepos 10 d. beveik nebuvo jokio tikro turinio – kai kuriuose README failuose buvo parašyta tik „Sveiki“. Dažnai pasirodydavo vartotojo vardai, tokie kaip „slunfuedrac“, „cnaovalles“ ir „pasttimerles“, taip sustiprindami teisėtumo signalus.
Kodo skirtumai parodė, kad kenkėjiška priklausomybė buvo pridėta prie prekybos roboto kodo (pavyzdžiui, bot.ts ir importavimas į src/index.ts), pirmiausia per „colortoolsv2“, o vėliau per „mimelib2“. Šis ryšys tapo daug mažiau akivaizdus atsitiktiniam recenzentui dėl triukšmingos pakeitimų istorijos.
Sujungdami „npm“ ir „GitHub“, veikėjai neryškūs tradiciniai pasitikėjimo signalai, todėl paslėpta priklausomybė susiliejo su projektu, kuris atrodė aktyvus, gerai prižiūrimas ir bendruomenės patvirtintas.
IoC, apimtis ir į ką gynėjai turėtų atkreipti dėmesį

„ReversingLabs“ paskelbė šiuos dalykus kompromiso rodikliai (IoC) susijęs su šia kampanija:
- npm paketai: spalvų įrankiai v2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215), 1.0.1 (1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b), 1.0.2 (db86351f938a55756061e9b1f4469ff2699e9e27)
- npm paketas: mimelib2 1.0.0 (bda31e9022f5994385c26bd8a451acf0cd0b36da), 1.0.1 (c5488b605cf3e9e9ef35da407ea848cf0326fdea)
- Antrasis etapas: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
- Išmanioji sutartis: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Toks požiūris atkartoja ankstesnį piktnaudžiavimą patikimais prieglobos įrenginiais, tokiais kaip „Gists“ ar debesies saugykla, tačiau grandinės posūkis kenkia statiniams blokų sąrašams ir paprastus šaltinio patikrinimus. C2 vietą sutartyje galima pakeisti neliečiant paketo, o blokų grandinės srautas gali būti klaidingai nuskaitytas, kaip įprasta kriptovaliutų gretimose aplinkose.
Praktiniai žingsniai apima priklausomybių kilmės peržiūrą už žvaigždžių ribų ir pakeitimus, Netikėtų blokų grandinės RPC iškvietimų stebėjimas diegimo / kūrimo etapų metu tikrinant visus vykdymo metu išspręstus URL ir prisegant žinomas geras versijas su vientisumo patikrinimais. Saugumo komandos taip pat turėtų ieškoti saugyklų, kurių aktyvumas dirbtinai padidinamas trivialiais, automatizuotais pakeitimais.
Byla rodo, kaip „Ethereum“ išmaniąsias sutartis galima perdaryti kaip atsparios kenkėjiškų programų platinimo npm ekosistemoje nuorodos, o inscenizuota „GitHub“ veikla akivaizdžiai slepia kenkėjiškas priklausomybes; šių atvirojo kodo ir grandinės infrastruktūros dubliavimų žinojimas dabar yra būtinas kūrėjų ir įmonių apsaugai.