OpenSSF (Open Source Security Foundation), kojeg je osnovala Linux Foundation, a čiji je cilj poboljšanje sigurnosti softvera otvorenog koda, predstavio je otvoreni projekt Package Analysis koji razvija sustav za analizu prisutnosti zlonamjernog koda u paketima. Kôd projekta napisan je u Go i distribuiran pod licencom Apache 2.0. Preliminarno skeniranje repozitorija NPM i PyPI pomoću predloženih alata omogućilo nam je identificiranje više od 200 prethodno neotkrivenih zlonamjernih paketa.
Većina identificiranih problematičnih paketa manipulira križanjem imena s internim nejavnim ovisnostima projekata (dependency confusion attack) ili koristi metode typosquattinga (dodjeljivanje imena sličnih nazivima popularnih biblioteka), a također poziva skripte koje pristupaju vanjskim hostovima tijekom postupak instalacije. Prema programerima Package Analysis, većinu identificiranih problematičnih paketa najvjerojatnije su kreirali sigurnosni istraživači koji sudjeluju u programima za dodjelu grešaka, budući da su poslani podaci ograničeni na korisničko ime i ime sustava, a radnje se izvode eksplicitno, bez pokušaja sakriti svoje ponašanje.
Paketi sa zlonamjernom aktivnošću uključuju:
- PyPI paket discordcmd, koji bilježi slanje netipičnih zahtjeva na raw.githubusercontent.com, Discord API i ipinfo.io. Navedeni paket preuzeo je backdoor kod s GitHuba i instalirao ga u direktorij Discord Windows klijenta, nakon čega je pokrenuo proces traženja Discord tokena u datotečnom sustavu i slanja istih na vanjski Discord server koji kontroliraju napadači.
- Colorss NPM paket također je pokušao poslati tokene s Discord računa na vanjski poslužitelj.
- NPM paket @roku-web-core/ajax - tijekom procesa instalacije poslao je podatke o sustavu i pokrenuo rukovatelj (reverse shell) koji je prihvaćao vanjske veze i pokretao naredbe.
- PyPI paket secrevthree - pokrenuo je obrnutu ljusku prilikom uvoza određenog modula.
- NPM paket random-vouchercode-generator - nakon uvoza biblioteke poslao je zahtjev vanjskom poslužitelju koji je vratio naredbu i vrijeme u kojem se treba pokrenuti.
Rad analize paketa svodi se na analizu paketa koda u izvornom kodu za uspostavljanje mrežnih veza, pristup datotekama i izvođenje naredbi. Dodatno, nadziru se promjene u stanju paketa kako bi se utvrdilo dodavanje zlonamjernih umetaka u jedno od izdanja inicijalno bezopasnog softvera. Za praćenje izgleda novih paketa u repozitoriju i izmjene prethodno objavljenih paketa koristi se Package Feeds toolkit koji objedinjuje rad s repozitorijima NPM, PyPI, Go, RubyGems, Packagist, NuGet i Crate.
Analiza paketa uključuje tri osnovne komponente koje se mogu koristiti zajedno i odvojeno:
- Planer za pokretanje rada analize paketa na temelju podataka iz feedova paketa.
- Analizator koji izravno ispituje paket i procjenjuje njegovo ponašanje koristeći statičku analizu i tehnike dinamičkog praćenja. Test se provodi u izoliranom okruženju.
- Učitavač koji postavlja rezultate testa u BigQuery pohranu.
Izvor: opennet.ru