ReversingLabs atklāj, ka uzbrucēji ļaunprātīgi izmantoja Ethereum viedos līgumus, lai paslēptu npm ļaunprogrammatūru

Pēdējā atjaunošana: 09/05/2025
  • Ļaunprātīgas npm pakotnes colortoolsv2 un mimelib2 izņēma C2 URL no Ethereum viedā līguma, lai izvairītos no atklāšanas.
  • Ķēdes netiešā apstrāde ļāva operatoriem mainīt galapunktus, nepublicējot pakotnes atkārtoti; colortoolsv2 tika noņemts 7. jūlijā pirms pārejas uz mimelib2.
  • Koordinētā GitHub reklāmā tika izmantoti viltoti tirdzniecības robotu repo, uzpūstas zvaigznes un skriptēti grozījumi, lai maskētu ļaunprātīgās atkarības.
  • IoC ietver pakotņu versijas, SHA1 jaucējkodus un līgumu 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, kā arī norādījumus aizstāvjiem.

Ethereum viedie līgumi, ko izmanto, lai slēptu npm ļaunprogrammatūru

Draudu izpildītāji ir pievērsušies jaunam trikam: ļaunprātīgas infrastruktūras novirzīšanai caur Ethereum viedais līgums, lai slēptu komandu un kontroles (C2) rādītājus ko izmanto npm pakotnes. Saskaņā ar ReversingLabs datiem, divas pakotnes — colortoolsv2 un mimelib2 — klusi sazinājās ar blokķēdi, lai izgūtu otrās pakāpes vērtuma vietrāžus URL, apejot rutīnas pārbaudes, kas meklē cietkodā ierakstītus domēnus.

Tā vietā, lai izmantotu kļūdu pašā Ethereum tīklā, shēma izmanto tīklu kā publisks, noturīgs netiešais slānisPēc tam, kad 2. jūlijā npm tika bloķēts colortoolsv7, operatori ātri pārgāja uz mimelib2 ar gandrīz identisku loģiku, turpinot atsaukties uz to pašu ķēdē esošo līgumu nākamajam solim.

No npm instalēšanas līdz meklēšanai ķēdē: kā darbojās apvedceļš

Kā npm pakotnes sauca par Ethereum līgumu

colortoolsv2 iekšienē minimālais ielādētājs (index.js) darbojās kā dispečers, kas izsauca ārēju komandu un izņēma savu mērķi no viedā līguma lokāla skripta vai statiskas konfigurācijas vietā. Etherscan parāda līgumu ar 0x1f171a1b07c108eae05a5bccbe86922d66227e2b, kura lasīšanas funkcijas atgriež URL, kas izmantots, lai sasniegtu C2 pakalpojumu.

Šis ķēdes rādītājs sarežģīja bloķēšanu: aizstāvji nevarēja vienkārši paļauties uz to, ka pakotnē atradīs vai melnajā sarakstā iekļaus cietkodētu domēnu, jo aktīvs galapunkts, kas atradās aiz līguma, kuru kontrolēja operatoriRotējošiem galamērķiem bija nepieciešams tikai atjaunināt līgumu krātuvi, nevis atkārtoti publicēt npm artefaktu, un jebkura iegūtā blokķēdes datplūsma tika iekļauta kā likumīga.

Kad ielādētājs tika izpildīts instalēšanas vai izpildes laikā, tas izguva second-stage component (SHA1 021d0eef8f457eb2a9f9fb2260dd2e39ff009a21), kas apstrādāja turpmākās darbības. Atdarinot colortoolsv2 darbību, mimelib2 atkārtoti izmantoja vienu un to pašu līgumu tam pašam mērķim ar gandrīz identiskiem koda ceļiem.

ReversingLabs aprakstīja šo pieeju kā neparastu npm ekosistēmā: ļaunprātīgi URL tika mitināti, izmantojot viedā līguma stāvokli, nevis tradicionālajos tīmekļa pakalpojumos, kas bieži redzēti iepriekšējās piegādes ķēdes kampaņās (piemēram, mākoņkrātuve vai gists).

GitHub dūmi un spoguļi: viltoti tirdzniecības robotu repo kā aizsegs

GitHub repozitoriji, ko izmanto, lai maskētu ļaunprātīgas npm atkarības

Npm pakotnes neparādījās atsevišķi. Operatori izveidoja GitHub projektu tīklu, kas tika prezentēts kā kriptovalūtu tirdzniecības utilītprogrammas —krātuves, piemēram, solana-trading-bot-v2— un pēc tam savienoja tos ar ļaunprātīgajām atkarībām. Neformālam vērotājam šie repozitoriji izskatījās “dzīvi”, lepojoties ar tūkstošiem izmaiņu, vairākiem uzturētājiem, zvaigznēm un novērotājiem.

Rūpīgāk izpētot, atklājās, ka liela daļa darbību bija skriptētas un virspusējas, tostarp atkārtota licences failu maiņa un jaunizveidoti konti ar niecīgu saturu (daži tika izveidoti ap 10. jūliju ar minimāliem README failiem, piemēram, “Hello”). Lietotājvārdi, kas parādījās izmaiņu vēsturē, tostarp slunfuedrac, cnaovalles un pasttimerles, atkārtoti parādījās visos sagatavotajos projektos.

Commits precīzi parādīja, kur pakotnes bija ievietotas koda bāzē —colortoolsv2 un vēlākas mimelib2 versijas pievienošana kā atkarības bot.ts failā, un atbilstošie importi parādās src/index.ts failā. Izgatavotais sociālais pierādījums padarīja atkarības ievietošanu daudz mazāk pamanāmu virspusējas pārskatīšanas laikā.

Faktiski GitHub fasāde pastiprināja uzticības signālus, kamēr īstais lēmuma punkts par ļaunprogrammatūras nākamo soli atradās Ethereum platformāAtdalot sociālo inženieriju (GitHub) no kontroles (viedais līgums), operatori apgrūtināja kampaņas pamanīšanu un pārtraukšanu.

IOC un konkrēti soļi aizstāvjiem

IoC npm ļaunprogrammatūrai, izmantojot Ethereum līgumus

ReversingLabs publicēja detalizētu ar šo darbību saistīto artefaktu sarakstu, kā arī galveno ķēdes atsauci, kas vadīja otro posmu. Lai to izdarītu, var izmantot šādus vienumus: meklēt, bloķēt un apstiprināt saskares būvēšanas cauruļvados un izstrādātāju darbstacijās:

  • 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
  • Viedais līgums, ko izmanto C2 netiešajai saziņai: 0x1f171a1b07c108eae05a5bccbe86922d66227e2b

Papildu konteksts no noņemšanas fāzes: colortoolsv2 tika noņemts no npm 7. jūlijā, pēc tam operatori pārgāja uz mimelib2 ar tādu pašu ķēdes atsauci un gandrīz identisku ielādes darbību.

Inženiertehniskajām un drošības komandām ieteicamās darbības ir šādas: atzīmēt instalēšanas skriptu veiktās ķēdes meklēšanas; bloķēt vai brīdināt par child_process izpildi pakotnes dzīves cikla āķos; liegt tīkla izeju npm instalēšanas laikā CI; ieviest atļauto sarakstu reģistriem un uzturētājiem; bloķēt tranzitīvās versijas; un uzraudzīt pieprasījumus, kas saistīti ar iepriekš minēto līguma adresi.

Plašākā nozīmē uztveriet repozitorija popularitātes rādītājus kā nedrošības signālus. Uzticībai vajadzētu rasties no koda, artefaktiem un tīkla indikatoriem., nevis zvaigžņu skaits, izmaiņu apjoms vai daudzu “uzturētāju” parādīšanās. Joprojām ir nepieciešama neatkarīga verifikācija — statiskā analīze, izpilde smilškastē un SBOM vadītas izcelsmes pārbaudes.

Šajā kampaņā izceļas nevis atsevišķi Ethereum, npm vai GitHub trūkumi, bet gan veids, kā publisko infrastruktūru var ieaust slepenā piegādes ķēdē. C2 atklāšanas pārvietošana uz viedlīgumu un ticamības atmazgāšana, izmantojot GitHub, aktieri izstiepa tradicionālo detektēšanas praksi. Rūpīga atkarību higiēna un slāņveida kontrole ir pretsvars.

Ethereum viedie līgumi npm
saistīto rakstu:
Ļaunprātīgas npm pakotnes slēpa lietderīgās informācijas maršrutus Ethereum viedajos līgumos
Related posts: