MALFEX npm paketi isporučivali Overlord RAT i kradljivce podataka

CloudSEK i Checkmarx identifikovali su dugotrajnu MALFEX kampanju kroz npm ekosistem: osam zlonamernih paketa preuzeto je ukupno 40.767 puta i korišćeno za isporuku Overlord RAT-a, kradljivca podataka movinlike i preuzimača na Windows sistemima. Najveći deo obima otpada na paket function-flag, sa 37.419 preuzimanja.
Aktivnost se pripisuje jednom akteru koji je od avgusta 2023. objavio 12 paketa, od kojih je osam označeno kao zlonamerno. Među identifikovanim nazivima su tlxbnhd, tldriver, mxdriver, img-to-native, native-runner, function-flag, function-color i cdn-img-fetch. Tri paketa su u trenutku objave nalaza i dalje bila aktivna: function-flag, function-color i cdn-img-fetch.
Više puteva do kompromitovanja Windows sistema
Paketi tlxbnhd, tldriver i mxdriver rade kao učitavači za Overlord RAT, alat otvorenog koda napisan u Go jeziku. Njihov zlonamerni kod pokreće se preko lifecycle hookova, a zatim preuzima i izvršava Windows izvršnu datoteku. Overlord za pronalaženje adrese komandno-kontrolne infrastrukture koristi Solana transakcije.
Druga grana kampanje povezuje pakete img-to-native i cdn-img-fetch. Ona preuzima i pokreće Go izvršnu datoteku, koja potom preuzima Node.js kradljivca movinlike. Taj malver cilja Discord, pregledače, Telegram i novčanike za kriptovalute, odnosno podatke koji su često dostupni na razvojnoj radnoj stanici.
Postinstall skripta kao tačka rizika
U paketu function-flag nalazi se postinstall hook koji pokreće JavaScript payload i preuzima dodatni sadržaj sa udaljenog servera. Istraživači su utvrdili da različite verzije paketa koriste različite lokacije za preuzimanje payload-a. Paket function-color nema sopstveni payload, ali navodi function-flag kao zavisnost.
Checkmarx navodi da verzija 1.7.3 paketa function-color kroz postinstall skriptu pokreće example.js. Poziv ASCII art funkcije sa fontom Bloody aktivira skrivenu rutinu koja sa hosta cdnzona.discloud.app preuzima node.exe, čuva ga kao %APPDATA%\node.exe i izvršava sa skrivenim prozorom.
Kontrola zavisnosti mora obuhvatiti instalacione skripte
Opisani slučaj pokazuje da naziv paketa i njegovo deklarisano ponašanje nisu dovoljni za procenu rizika. Postinstall i drugi lifecycle hookovi mogu da izvrše kod već tokom instalacije, dok posredne zavisnosti mogu da unesu isti rizik i kada primarni paket ne sadrži payload.
Za poslovna okruženja praktičan zaključak je da upravljanje npm zavisnostima treba da uključuje pregled instalacionih skripti, proveru transitive zavisnosti i ograničavanje izvršavanja koda u build okruženjima pre uvođenja paketa u produkcioni lanac isporuke.

