Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
Prijevodi ove stranice:

Malware u npm ekosustavu

Sažetak

Seminar se bavi analizom sigurnosnih prijetnji u npm ekosustavu. Npm, kao ključna platforma za upravljanje JavaScript paketima, predstavlja temeljni alat modernog razvoja softvera, ali istovremeno postaje i meta zlonamjernih napada. Seminar pruža pregled npm ekosustava, vrsta malwarea prisutnih u ekosustavu te analizira stvarne primjere napada koji su ugrozili korisnike i organizacije. Osim analize, obrađuju se metode i alati računalne forenzike korišteni u identificiranju prijetnji unutar paketa, dok se u završnom dijelu daju preporuke za bolju zaštitu i sigurnost.

Uvod

Jedno od najčešće korištenih okruženja za razvoj softvera je npm (Node Package Manager), koji omogućava programerima širom svijeta dijeljenje i preuzimanje softverskih paketa za različite namjene, no primarno pakete za JavaScript aplikacije. Međutim, zbog svoje široke upotrebe i otvorenog karaktera, npm ekosustav postao je privlačna meta za zlonamjerne radnje. Malware, odnosno zlonamjerni softver, unutar npm ekosustava predstavlja rastuću prijetnju koja ne pogađa samo pojedinačne korisnike, već može izazvati značajnu štetu organizacijama i njihovim sustavima.

Ovaj seminar će se fokusirati na analizu načina na koji malware ulazi u npm ekosustav, koje vrste napada su najčešće te kako računalna forenzika može pomoći u otkrivanju i sprječavanju ovakvih prijetnji. Cilj je povećati svijest o (ne)sigurnosti npm ekosustava te pružiti konkretne smjernice za njegovo sigurno korištenje.

Pregled npm ekosustava

Kao jedan od najvećih registara softverskih paketa na svijetu, npm omogućava programerima da preuzimaju, dijele i upravljaju paketima koji olakšavaju razvoj aplikacija. Osnovan 2010. godine, npm je brzo postao standard za upravljanje ovisnostima u JavaScriptu.

Ekosustav se temelji na tri ključna elementa:

  1. Registar - centralno spremište gdje su pohranjeni svi paketi
  2. CLI (Command Line Interface) - alat putem kojeg korisnici mogu preuzimati, instalirati i ažurirati pakete
  3. Paketni menadžer - upravlja lokalnim ovisnostima u projektu putem datoteke package.json, koja sadrži popis svih potrebnih paketa i njihovih verzija

Na primjer, instalacija popularnog paketa kao što je axios za razvoj web-aplikacija, izvodi se jednostavnom naredbom:

npm install axios

Ova naredba preuzima najnoviju verziju paketa iz npm registra i dodaje ga u datoteku package.json. Ako je projekt podijeljen s drugim programerima, dovoljno je pokrenuti:

npm install

Ova naredba će preuzeti sve pakete koji su navedeni u package.json datoteci kako bi reproducirala okruženje za razvoj među programerima u timu. To znači da ako jedan programer instalira paket, efektivno će ga unijeti u razvojno okruženje svih ostalih programera s kojima surađuje na projektu.

Prednost npm ekosustava leži u njegovoj velikoj bazi paketa i jednostavnosti korištenja. Programeri širom svijeta mogu dijeliti rješenja za uobičajene probleme, čime se značajno ubrzava razvoj. Međutim, ta otvorenost nosi i određene sigurnosne rizike. Budući da (gotovo) svatko može objaviti paket, napadači često koriste npm za distribuciju malwarea.

Vrste malwarea u npm ekosustavu

Malware u npm paketima može se manifestirati na različite načine i imati razne svrhe, od krađe osjetljivih podataka do preuzimanja potpune kontrole nad korisničkim sustavom. Ovdje su kratko opisana dva najčešća postupka koje napadači koriste da bi ubacili malware kroz npm ekosustav:

1. Supply chain napadi

Supply chain napadi postali su posebno opasni jer napadači ciljaju popularne pakete koje koristi veliki broj korisnika. Napadači kompromitiraju račun programera koji razvija popularni paket, te u njega objavljuju ažuriranu verziju paketa koja je sadržava malware. Kako je paket popularan, korisnici ga bez razmišljanja ažuriraju i postaju žrtve napada.

Primjer: Incident iz 2021. godine, gdje je zlonamjerni kod ubačen u popularni paket “ua-parser-js”. Paket služi za detekciju korisničkog preglednika, operacijskog sustava, tipa uređaja i drugih informacija. Popularni je paket samo u tjednu pisanja ovog seminara preuzet više od 11 milijuna puta.

Slika 1: Popularni paket ua-parser-js

                        Slika 1: Popularni paket ua-parser-js

2. Typo-squatting

Typo-squatting je tehnika koju napadači koriste kako bi iskoristili greške u pisanju imena paketa. Korisnici koji slučajno instaliraju paket sličnog imena umjesto pravog mogu nesvjesno preuzeti zlonamjerni softver. Napadači kreiraju pakete čija imena vrlo nalikuju popularnim paketima (npr. zamjenom jednog slova, broja ili dodavanjem prefiksa). Kada korisnici naprave grešku u pisanju imena paketa prilikom instalacije, umjesto pravog paketa preuzimaju zlonamjerni.

Primjer: Umjesto paketa “lodash”, korisnik može instalirati “lodahs”, koji sadrži zlonamjerni kod.

Jednom kad su napadači uspješni u svojoj namjeri da ubace zlonamjerni kod u projekt žrtve, najčešće koriste jedan od ova dva načina da iskoriste ranjivost:

1. Direktna uporaba zlonamjernog koda

Najjednostavniji oblik malwarea dolazi u obliku zlonamjernog koda unutar paketa. Primjerice, zlonamjerni kod može pratiti unos tipkovnice korisnika te iz toga izvući neke korisne informacije. Drugi primjer bi bilo izvršavanje udaljenog koda kojim napadač može kontrolirati sustav žrtve. Još jedan jednostavan primjer bi bila krađa podataka, poput plaćenih API ključeva ili korisničkih lozinki:

fs.writeFileSync('/tmp/credentials.txt', process.env.USER + ':' + process.env.PASSWORD);

Ovaj kod, koji se može nalaziti u zlonamjernom paketu, na računalu žrtve zapisuje korisničke podatke u datoteku credentials.txt, koji bi mogao biti dostupan napadaču.

2. Paketi sa stražnjim ulazima

Paketi sa stražnjim ulazima omogućuju napadačima neovlašten pristup korisničkim sustavima. Ovi paketi često izgledaju kao da su legitimni, ali sadrže kod koji napadaču otvara skrivene mogućnosti, poput pristupa podacima ili izvršavanja naredbi na sustavu korisnika. Razlika ovdje je da se zlonamjerni kod unutar paketa ne nanosi štetu žrtvi direktno, već omogućuje napadaču pristup sustavu žrtve koji će onda sam nanijeti štetu.

Kako to funkcionira: stražnji ulazi se obično implementiraju kao skriveni API pozivi, hardkodirane lozinke ili skripte koje omogućuju napadačima da preuzmu kontrolu nad sustavom žrtve.

Primjer: Već spomenuti paket “ua-parser-js” je bio kompromitiran s pomoću stražnjeg ulaza, putem kojeg su napadači ušli i instalirali malware za rudarenje kriptovaluta i krađu korisničkih podataka.

Forenzička analiza npm malwarea

Da bi se utvrdilo da je neki npm paket kompromitiran, provodi se forenzička analiza. Za početak treba preuzeti kompromitirani paket iz npm repozitorija na način koji je prikazan ranije u seminaru. Ovo je potrebno izvoditi u izoliranom okruženju (sandbox) kako bi spriječili da naše računalo postane predmet napada.

Kada imamo instaliran paket ispred sebe, možemo napraviti analizu statičkog koda. To znači da ćemo napraviti pregled izvornog koda paketa bez njegova izvršavanja. Obično ćemo samo gledati novi kod, odnosno najnovije promjene u paketu, te pokušati identificirati sumnjive funkcije. Uvijek se prvo gleda najčešće mjesto napada, a to je kod u package.json datoteci, u koju je moguće definirati preinstall/postinstall skripte koje omogućuju da napadač nanese štetu žrtvi odmah prilikom same instalacije paketa.

Slika 2: Primjer zlonamjernih preinstall/postinstall skripti

         Slika 2: Primjer zlonamjernih preinstall/postinstall skripti

Nakon analize statičkog koda, dobro je provesti dinamičku analizu. Ona uključuje izvršavanje koda kompromitiranog paketa u izoliranom okruženju. Tu se pokušava identificirati koju točno zlonamjernu radnju paket pokušava napraviti, radi li se tu o neovlaštenim mrežnim zahtjevima, o pokušajima pristupa osjetljivim informacijama, o postojanju stražnjeg ulaza ili nekim drugim zlonamjernim radnjama.

Za temeljitu analizu često se koriste popularni specijalizirani alati. YARA pravila mogu biti vrlo korisna kod identifikacije poznatih obrazaca malwarea u kodu. Burp Suite može biti vrlo koristan kako bi se pratili mrežni zahtjevi generirani od strane kompromitiranog paketa.

Mjere zaštite i preporuke za sigurnost

Sigurnost u npm ekosustavu izuzetno je važna za razvojne timove i krajnje korisnike. S obzirom na otvorenost ekosustava i veliki broj paketa, bitno je poduzeti mjere zaštite kako bi se smanjio rizik od malwarea.

Postoje sigurnosni alati koji omogućuju automatsko prepoznavanje poznatih ranjivosti i zlonamjernih obrazaca u npm paketima. Snyk i Dependabot su jedni od popularnijih alata koji pomažu u identifikaciji problema i nude preporuke za njihovo rješavanje. Ukratko, ti alati analiziraju sve pakete korištene u projektu i upozoravaju na ranjivosti, te preporučuju promjenu verzije paketa ili neku drugu mjeru opreza.

Još jedna mjera opreza je da se dobro provjeri vjerodostojnost paketa prije nego se odluči na njegovu instalaciju. To uključuje analizu povijesti autora i broj preuzimanja. Ako se žele poduzeti stroge mjere, dobro je napraviti pregled dokumentacije i izvornog koda, pogotovo za manje poznate pakete.

Jedna od bitnijih mjera opreza je zaključavanje verzija u package-lock.json datoteci. Naime, osim što se u toj datoteci specificiraju verzije korištenih paketa, moguće je postaviti opciju da se uvijek preuzima najnovija verzija paketa. To korisnici vrlo često i rade. To nije najsigurnije jer ako se u novoj verziji nekog paketa dogodio supply chain napad, svi koji imaju automatsko preuzimanje najnovije verzije paketa automatski će postati žrtve. Stoga je preporučeno zaključavati verzije te to popratiti sa sigurnosnim alatom koji će provjeravati ranjivosti verzija instaliranih paketa, poput ranije spomenutog Snyka ili Dependabota.

Zaključak

Sigurnost u softverskim ekosustavima poput npm-a ključan je izazov u modernom razvoju aplikacija. Npm ekosustav donosi brzo i efikasno dijeljenje koda na globalnoj razini. No, mana toga je što ujedno može biti i točka nesigurnosti, ako se ne koristi s oprezom. Istraživanje je pokazalo da zlonamjerni napadi u npm ekosustavu, poput supply chain napada i typo-squattinga, mogu imati ozbiljne posljedice i to na velik broj korisnika, no korištenje prikladnih alata i sigurnosnih praksi može značajno smanjiti rizike. Kroz edukaciju, implementaciju sigurnosnih alata i praćenje najboljih praksi moguće je unaprijediti sigurnost i povjerenje u ovaj važan ekosustav. Konačno, računalna forenzika ostaje neizostavan alat u borbi pri otkrivanju sigurnosnih prijetnji te je pogotovo primjenjiva u kontekstu malwarea u npm ekosustavu.

Video prezentacija

Literatura

racfor_wiki/seminari2024/malware_u_npm_ekosustavu.txt · Zadnja izmjena: 2025/01/26 19:46 od Babić Adrian
Dieses Dokuwiki verwendet ein von Anymorphic Webdesign erstelltes Thema.
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0