Ranljivost, ki je omogočila izdajo posodobitve za kateri koli paket v repozitoriju NPM

GitHub je razkril dva incidenta v svoji infrastrukturi skladišča paketov NPM. 2. novembra sta varnostna raziskovalca tretjih oseb (Kajetan Grzybowski in Maciej Piechota) v okviru programa Bug Bounty poročala o prisotnosti ranljivosti v skladišču NPM, ki vam omogoča objavo nove različice katerega koli paketa z uporabo vašega računa, ki ni pooblaščen za izvajanje takih posodobitev.

Ranljivost je nastala zaradi nepravilnih preverjanj dovoljenj v kodi mikrostoritev, ki obdelujejo zahteve do NPM. Storitev avtorizacije je izvedla preverjanje dovoljenj paketa na podlagi podatkov, posredovanih v zahtevi, vendar je druga storitev, ki je naložila posodobitev v repozitorij, določila paket za objavo na podlagi vsebine metapodatkov naloženega paketa. Tako bi lahko napadalec zahteval objavo posodobitve za svoj paket, do katerega ima dostop, vendar bi v samem paketu navedel podatke o drugem paketu, ki bi bil na koncu posodobljen.

Težava je bila odpravljena 6 ur po prijavi ranljivosti, vendar je bila ranljivost v NPM prisotna dlje, kot je zajeto v dnevnikih telemetrije. GitHub trdi, da od septembra 2020 ni bilo sledi napadov, ki bi uporabljali to ranljivost, vendar ni nobenega zagotovila, da težava ni bila izkoriščena že prej.

Drugi incident se je zgodil 26. oktobra. Med tehničnim delom z bazo podatkov storitve replicate.npmjs.com je bila razkrita prisotnost zaupnih podatkov v bazi podatkov, dostopni zunanjim zahtevam, ki razkrivajo informacije o imenih notranjih paketov, ki so bili omenjeni v dnevniku sprememb. Podatke o takih imenih je mogoče uporabiti za izvajanje napadov odvisnosti na interne projekte (februarja je podoben napad omogočil izvajanje kode na strežnikih PayPal, Microsoft, Apple, Netflix, Uber in 30 drugih podjetij).

Poleg tega se je GitHub zaradi naraščajočega števila primerov ugrabljenih skladišč velikih projektov in oglaševanja zlonamerne kode prek ogrožanja računov razvijalcev odločil uvesti obvezno dvofaktorsko avtentikacijo. Sprememba bo začela veljati v prvem četrtletju leta 2022 in bo veljala za vzdrževalce in skrbnike paketov, ki so vključeni na seznam najbolj priljubljenih. Dodatno poročajo o posodobitvi infrastrukture, v kateri bo uveden avtomatiziran nadzor in analiza novih različic paketov za zgodnje odkrivanje zlonamernih sprememb.

Spomnimo se, da glede na študijo, izvedeno leta 2020, le 9.27 % vzdrževalcev paketov uporablja dvofaktorsko avtentikacijo za zaščito dostopa, v 13.37 % primerov pa so razvijalci pri registraciji novih računov poskušali ponovno uporabiti ogrožena gesla, ki so se pojavila v znano uhajanje gesel. Med varnostnim preverjanjem gesla je bilo dostopa do 12 % računov NPM (13 % paketov) zaradi uporabe predvidljivih in trivialnih gesel, kot je »123456«. Med problematičnimi so bili 4 uporabniški računi iz Top 20 najbolj priljubljenih paketov, 13 računov s paketi, ki so bili preneseni več kot 50 milijonov krat na mesec, 40 z več kot 10 milijoni prenosov na mesec in 282 z več kot 1 milijonom prenosov na mesec. Ob upoštevanju nalaganja modulov vzdolž verige odvisnosti bi lahko ogrožanje nezaupnih računov vplivalo na do 52 % vseh modulov v NPM.

Vir: opennet.ru

Dodaj komentar