- Pachetele npm rău intenționate colortoolsv2 și mimelib2 au preluat adrese URL C2 dintr-un contract inteligent Ethereum pentru a evita detectarea.
- Indirectarea în lanț a permis operatorilor să rotească punctele finale fără a republica pachetele; colortoolsv2 a fost eliminat pe 7 iulie înainte de o trecere la mimelib2.
- O campanie coordonată pe GitHub a folosit repozitorii false de roboți de tranzacționare, stele umflate și commit-uri scriptate pentru a masca dependențele rău intenționate.
- IoC-urile includ versiuni de pachete, hash-uri SHA1 și contractul 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, plus îndrumări pentru apărători.
Actorii care atacă în mod amenințător au apelat la un truc inovator: rutarea infrastructurii malițioase printr-un contract inteligent Ethereum pentru a ascunde pointerii de comandă și control (C2) utilizați de pachetele npm. Potrivit ReversingLabs, două pachete - colortoolsv2 și mimelib2 - au accesat discret blockchain-ul pentru a prelua adrese URL pentru sarcini utile din etapa a doua, evitând verificările de rutină care caută domenii hardcoded.
În loc să exploateze o eroare din Ethereum, schema utilizează rețeaua ca un strat de indirectare public și rezistent . După ce colortoolsv2 a fost blocat pe npm pe 7 iulie, operatorii au trecut rapid la mimelib2 cu o logică aproape identică, continuând să facă referire la același contract on-chain pentru pasul următor.
De la instalarea npm la căutarea on-chain: cum a funcționat ocolirea

În interiorul colortoolsv2, un încărcător minimal (index.js) acționa ca un dispecer care invoca o comandă externă și își prelua ținta dintr-un contract inteligent în loc de un script local sau o configurație statică. Etherscan arată contractul la adresa 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, ale cărui funcții de citire returnau o adresă URL utilizată pentru a accesa serviciul C2.
Acest indicator on-chain a complicat blocarea: apărătorii nu se puteau baza pur și simplu pe găsirea sau includerea pe lista neagră a unui domeniu hardcoded în pachet, deoarece endpoint-ul activ se afla în spatele unui contract controlat de operatori . Rotirea destinațiilor necesita doar actualizarea spațiului de stocare al contractului, nu și republicarea artefactului npm, iar orice trafic blockchain rezultat era amestecat ca fiind legitim.
Odată executat în timpul instalării sau execuției, încărcătorul a preluat o componentă de a doua etapă (SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21) , care a gestionat activitatea ulterioară. Imitând comportamentul colortoolsv2, mimelib2 a reutilizat același contract în același scop cu căi de cod aproape identice.
ReversingLabs a descris abordarea ca fiind neobișnuită în ecosistemul npm: URL-urile rău intenționate au fost găzduite prin intermediul stării unui contract inteligent , nu pe serviciile web tradiționale adesea întâlnite în campaniile anterioare ale lanțului de aprovizionare (de exemplu, stocarea în cloud sau gist-uri).
Fum și oglinzi GitHub: repozitorii false de roboți de tranzacționare ca acoperire

Pachetele npm nu au apărut izolat. Operatorii au pus în funcțiune o rețea de proiecte GitHub prezentate ca utilități de tranzacționare cripto - depozite precum solana-trading-bot-v2 - și apoi le-au conectat la dependențele malițioase. Pentru un observator ocazional, aceste depozite păreau „vii”, lăudându-se cu mii de commit-uri, mai mulți administratori, vedete și observatori.
O analiză mai atentă a dezvăluit că o mare parte din activitate a fost scriptată și superficială, inclusiv pierderi repetitive de fișiere de licență și conturi nou create cu conținut redus (unele create în jurul datei de 10 iulie cu fișiere README de tipul „Hello”). Numele de utilizator care au apărut în istoricul commit-urilor - inclusiv slunfuedrac, cnaovalles și pasttimerles - au apărut în mod repetat în cadrul proiectelor în etape.
Validarile au arătat exact unde au fost introduse pachetele în baza de cod - adăugând colortoolsv2 și ulterior mimelib2 ca dependențe în bot.ts, iar importurile corespunzătoare au apărut în src/index.ts. Dovada socială fabricată a făcut inserarea dependențelor mult mai puțin evidentă în timpul unei revizuiri superficiale.
Practic, fațada GitHub a amplificat semnalele de încredere, în timp ce adevăratul punct de decizie pentru următoarea mișcare a malware-ului se afla pe Ethereum . Prin separarea ingineriei sociale (GitHub) de control (contract inteligent), operatorii au făcut campania mai greu de detectat și de întrerupt.
CIO-uri și măsuri concrete pentru apărători

ReversingLabs a publicat un inventar detaliat al artefactelor legate de această activitate, împreună cu referința cheie on-chain care a condus a doua etapă. Următoarele elemente pot fi utilizate pentru a căuta, bloca și valida expunerile în conductele de compilare și în stațiile de lucru ale dezvoltatorilor:
- 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
- Contract inteligent utilizat pentru indirecționarea C2: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b
Context suplimentar din faza de eliminare: colortoolsv2 a fost eliminat din npm pe 7 iulie , după care operatorii au trecut la mimelib2 cu aceeași referință on-chain și un comportament aproape identic al încărcătorului.
Acțiunile recomandate pentru echipele de inginerie și securitate includ: semnalizarea căutărilor on-chain efectuate de scripturile de instalare ; blocarea sau avertizarea la execuția child_process în hook-urile ciclului de viață al pachetului; refuzarea ieșirii din rețea în timpul instalării npm în CI; impunerea listelor de permisiuni pentru registre și mentenatori; blocarea versiunilor tranzitive; și monitorizarea solicitărilor legate de adresa contractului de mai sus.
Într-un sens mai larg, tratați indicatorii de popularitate ai depozitului ca semnale care nu țin de securitate. Încrederea ar trebui să provină din cod, artefacte și indicatori de rețea , nu din numărul de stele, volumul de commit-uri sau apariția multor „întreținători”. Verificarea independentă - analiza statică, execuția în sandbox și verificările de proveniență bazate pe SBOM - rămâne esențială.
Ceea ce iese în evidență în această campanie nu este o deficiență în Ethereum, npm sau GitHub individual, ci modul în care infrastructura publică poate fi țesută într-un lanț de livrare ascuns. Prin mutarea descoperirii C2 într-un contract inteligent și spălarea credibilității prin GitHub , actorii au depășit limita detecției tradiționale. Igiena atentă a dependențelor și controalele stratificate reprezintă contraponderea.
