- Dva npm paketa, 'colortoolsv2' i 'mimelib2', usmjeravali su C2 putem Ethereum pametnog ugovora kako bi izbjegli otkrivanje.
- Lažni GitHub trgovački botovi su napuhali povjerenje pomoću pripremljenih commitova i računa prije dodavanja zlonamjerne zavisnosti.
- Isti on-chain ugovor (0x1f171a1b07c108eae05a5bccbe86922d66227e2b) je dao URL-ove druge faze.
- IoC-ovi uključuju specifične verzije paketa i SHA1 hash-ove; timovi bi trebali pratiti neočekivane blockchain pozive u instalacijskim skriptama.

ReversingLabs je prijavio dva npm paketa koji su tiho usmjeravali logiku instalacije kroz Ethereum pametni ugovor, pretvarajući javni blockchain u tajni direktorij za komandno-kontrolnu (C2) infrastrukturu. Paketi, 'colortoolsv2' i 'mimelib2', predstavljali su se kao jednostavni uslužni programi, a istovremeno su omogućavali preuzimanje drugog nivoa korisnog tereta.
Outsourcingom C2 adrese na ugovor na lancu, operateri su svoj promet obavili onim što izgleda kao obična blockchain aktivnost, potez koji komplicira statičku i reputacijsku detekciju . Ugovor na adresi 0x1f171a1b07c108eae05a5bccbe86922d66227e2b otkrio je funkcije čitanja koje su vraćale URL koji bi instalateri kasnije kontaktirali.
Od npm loadera do on-chain C2-a

Unutar 'colortoolsv2', tanki index.js loader je pozivao vanjsku naredbu čija lokacija nije bila lokalno kodirana. Umjesto toga, upitao je Ethereum pametni ugovor za krajnju tačku koja bi usmjerila host prema komandno-kontrolnom sistemu.
Javni istraživači poput Etherscana prikazuju ugovor koji otkriva jednostavne funkcije čitanja koje vraćaju URL, efektivno koristeći lanac kao otporni pokazivač na napadačku infrastrukturu. Budući da je posljednji skok izveden iz blockchain poziva, branitelji ne vide statičku domenu ugrađenu u npm paket.
Nakon otkrića, 'colortoolsv2' je blokiran na npm-u 7. jula . Ubrzo nakon toga, operateri su objavili 'mimelib2', koji je, prema analizi, ponovo koristio gotovo identičnu logiku i isti pametni ugovor za isporuku druge faze.
Nakon izvršenja, program za učitavanje podataka (loader) je dohvatio komponentu druge faze čiji je heš objavljen od strane istraživača (SHA1: 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21). Ova indirekcije je omogućila napadačima da rotiraju odredišta po volji uređivanjem podataka na lancu umjesto prepakivanja koda.
Igra s kredibilitetom GitHuba za maskiranje zlonamjernih ovisnosti

ReversingLabs je također pratio mrežu lažnih GitHub projekata koji su se predstavljali kao botovi za trgovanje kriptovalutama , sa hiljadama commitova, višestrukim održavateljima, zvijezdama i posmatračima. Repozitoriji poput 'solana-trading-bot-v2' izgledali su živahno, ali veliki dio aktivnosti bio je automatizirani nered.
Mnogi commit-ovi su izbacivali trivijalne datoteke (na primjer, ponovljene LICENCE izmjene), dok su klasteri sličnih računa kreirani oko 10. jula sadržavali gotovo nikakav pravi sadržaj - neke README datoteke su imale samo tekst 'Zdravo'. Korisnička imena, uključujući 'slunfuedrac', 'cnaovalles' i 'pasttimerles', pojavljivala su se često, pojačavajući signale legitimnosti.
Razlike u kodu pokazale su da se zlonamjerna zavisnost dodaje kodu bota za trgovanje (na primjer, u bot.ts i uvozima u src/index.ts ), prvo putem 'colortoolsv2', a kasnije putem 'mimelib2'. Ta povezanost postala je mnogo manje očigledna povremenom recenzentu usred bučne historije commit-ova.
Zajedničkim korištenjem npm-a i GitHuba, akteri su zamaglili tradicionalne signale povjerenja , čineći da se skrivena zavisnost stopi u projekat koji je djelovao aktivno, dobro održavano i podržano od strane zajednice.
IoC-ovi, opseg i na šta bi branioci trebali obratiti pažnju

ReversingLabs je objavio sljedeće indikatore kompromitacije (IoC) povezane s ovom kampanjom:
- npm paketi: alati za boje v2 1.0.0 (SHA1 678c20775ff86b014ae8d9869ce5c41ee06b6215), 1.0.1 (1bb7b23f45ed80bce33a6b6e6bc4f99750d5a34b), 1.0.2 (db86351f938a55756061e9b1f4469ff2699e9e27)
- npm paket: mimelib2 1.0.0 (bda31e9022f5994385c26bd8a451acf0cd0b36da), 1.0.1 (c5488b605cf3e9e9ef35da407ea848cf0326fdea)
- Druga faza: SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21
- Pametan ugovor: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Ovaj pristup podsjeća na raniju zloupotrebu pouzdanog hostinga poput Gist-a ili pohrane u oblaku, ali obrt na lancu potkopava statičke liste blokova i jednostavne provjere izvora. Lokacija C2 može se promijeniti u ugovoru bez dodirivanja paketa, a blockchain promet može se pogrešno protumačiti kao rutinski u okruženjima susjednim kriptovalutama.
Praktični koraci uključuju pregled porijekla zavisnosti izvan zvjezdica i commitova, praćenje neočekivanih RPC poziva blockchaina tokom faza instalacije/izgradnje, validaciju svih URL-ova riješenih tokom izvođenja i označavanje poznatih ispravnih verzija provjerama integriteta. Sigurnosni timovi bi također trebali tražiti repozitorije čija je aktivnost vještački napuhana trivijalnim, automatiziranim commitovima.
Slučaj pokazuje kako se pametni ugovori Ethereuma mogu prenamijeniti kao otporni pokazivači za distribuciju zlonamjernog softvera u npm ekosistemu, dok postepeno aktivirana GitHub aktivnost skriva zlonamjerne zavisnosti na vidiku; svijest o ovim preklapanjima između infrastrukture otvorenog koda i on-chain infrastrukture sada je ključna za odbranu programera i preduzeća.