Zlonamerni npm paket premestio izvršavanje malvera u rad biblioteke

Zlonamerni npm paket indexed-btree, koji je oponašao legitimni sorted-btree, sakrio je loader u metodi BTree.prototype.set() umesto u preinstall ili postinstall skriptama. Paket je na npm objavljen 18. juna 2026. preko naloga charlessadler25, za kratko vreme prikupio milione preuzimanja, a operater je, prema nalazima Checkmarx-a, mogao da stekne oko 109 ETH, odnosno 230.933,57 evra.
Paket i povezani GitHub repozitorijum više nisu dostupni. Ipak, slučaj je važan jer pokazuje kako se izvršavanje zlonamernog koda premešta iz instalacionog procesa u naizgled uobičajenu funkcionalnost same biblioteke.
Loader aktiviran tokom rada aplikacije
Uobičajeni napadi na softverski lanac snabdevanja često koriste lifecycle skripte kako bi se kod automatski izvršio pri instalaciji zavisnosti. npm 12 je uveo izmenu koja sprečava automatsko pokretanje skripti kao što su preinstall i postinstall, čime je ograničen jedan čest put zloupotrebe.
U ovom slučaju loader je skriven u metodi BTree.prototype.set(). Ona pokreće datoteku sharedLoad.min.js, u kojoj se nalazi obfuskovana prva faza malvera. Takav raspored aktivira zlonamerni tok tek kada aplikacija upotrebi pogođenu funkciju, a ne pri samoj instalaciji paketa.
Malver prikuplja podatke o hostu i šalje ih na unapred definisan Slack kanal i Telegram bot. Zatim tehnikom EtherHiding preuzima šifrovane delove naredne faze sa pametnog ugovora na testnoj mreži Sepolia, spaja ih u drugi payload i na kraju uklanja artefakte i okidač iz koda paketa.
Šta slučaj menja u proveri zavisnosti
Checkmarx povezuje indexed-btree sa nizom uklonjenih npm paketa, među kojima su ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map, sliding-score-window i mutex-forge. Zajednički obrazac nije samo naziv biblioteke, već skrivanje izvršavanja u kodu koji izgleda kao deo njenog redovnog rada.
Širi kontekst potvrđuje i PolinRider kampanja, u kojoj je zlonamerni sadržaj uklonjen iz dev-main verzije paketa visanduma/nova-two-factor na Packagist platformi. Socket navodi da kompromitovanje repozitorijuma može koristiti rutinske radnje, poput kloniranja projekta ili njegovog otvaranja u razvojnom okruženju, kao okidač infekcionog lanca.
U takvom obrascu zloupotrebu poverenja u poznate alate osvetljava zloupotrebu poverenja u poznate alate i normalne razvojne tokove, dok ovaj slučaj pokazuje da pregled instalacionih skripti sam po sebi ne pokriva rizik.
Praktičan zaključak za timove
Timovi ne bi trebalo da se oslanjaju samo na blokiranje lifecycle skripti i proveru paketa pre instalacije. Potrebni su slojeviti postupci koji prate ponašanje zavisnosti tokom izvršavanja, uključujući neočekivano prikupljanje podataka, mrežne veze i učitavanje dodatnih faza koda. Takva kontrola bolje odgovara situaciji u kojoj napadači menjaju put izvršavanja, a ne odustaju od napada na lanac snabdevanja.

