O vulnerabilitate care a permis lansarea unei actualizări pentru orice pachet din depozitul NPM

GitHub a dezvăluit două incidente în infrastructura sa de depozitare a pachetelor NPM. Pe 2 noiembrie, cercetători de securitate terți (Kajetan Grzybowski și Maciej Piechota), ca parte a programului Bug Bounty, au raportat prezența unei vulnerabilități în depozitul NPM care vă permite să publicați o nouă versiune a oricărui pachet folosind contul dvs., care nu este autorizat să efectueze astfel de actualizări.

Vulnerabilitatea a fost cauzată de verificări incorecte ale permisiunilor din codul microserviciilor care procesează cererile către NPM. Serviciul de autorizare a efectuat verificări ale permisiunii pachetului pe baza datelor transmise în cerere, dar un alt serviciu care a încărcat actualizarea în depozit a determinat ca pachetul să fie publicat pe baza conținutului de metadate al pachetului încărcat. Astfel, un atacator ar putea solicita publicarea unei actualizări pentru pachetul său, la care are acces, dar să specifice în pachetul propriu-zis informații despre un alt pachet, care ar urma să fie eventual actualizat.

Problema a fost remediată la 6 ore după raportarea vulnerabilității, dar vulnerabilitatea a fost prezentă în NPM mai mult decât acoperă jurnalele de telemetrie. GitHub susține că nu au existat urme de atacuri care au folosit această vulnerabilitate din septembrie 2020, dar nu există nicio garanție că problema nu a fost exploatată înainte.

Al doilea incident a avut loc pe 26 octombrie. În timpul lucrului tehnic cu baza de date a serviciului replicate.npmjs.com, a fost dezvăluită prezența datelor confidențiale în baza de date accesibilă solicitărilor externe, dezvăluind informații despre numele pachetelor interne care au fost menționate în jurnalul de modificări. Informațiile despre astfel de nume pot fi folosite pentru a efectua atacuri de dependență asupra proiectelor interne (în februarie, un atac similar a permis executarea codului pe serverele PayPal, Microsoft, Apple, Netflix, Uber și alte 30 de companii).

În plus, din cauza numărului tot mai mare de cazuri de deturnare a depozitelor de proiecte mari și de promovare a codului rău intenționat prin compromiterea conturilor de dezvoltator, GitHub a decis să introducă autentificarea obligatorie cu doi factori. Schimbarea va intra în vigoare în primul trimestru al anului 2022 și se va aplica întreținătorilor și administratorilor pachetelor incluse în cea mai populară listă. În plus, se raportează despre modernizarea infrastructurii, în care va fi introdusă monitorizarea și analiza automată a noilor versiuni de pachete pentru detectarea timpurie a modificărilor rău intenționate.

Să ne amintim că, conform unui studiu realizat în 2020, doar 9.27% dintre întreținătorii de pachete folosesc autentificarea cu doi factori pentru a proteja accesul, iar în 13.37% din cazuri, la înregistrarea unor conturi noi, dezvoltatorii au încercat să refolosească parolele compromise apărute în scurgeri de parole cunoscute. În timpul unei analize de securitate a parolei, 12% dintre conturile NPM (13% din pachete) au fost accesate datorită utilizării unor parole previzibile și banale, cum ar fi „123456”. Printre cele problematice s-au numărat 4 conturi de utilizator din Top 20 cele mai populare pachete, 13 conturi cu pachete descărcate de peste 50 de milioane de ori pe lună, 40 cu peste 10 milioane de descărcări pe lună și 282 cu mai mult de 1 milion de descărcări pe lună. Ținând cont de încărcarea modulelor de-a lungul unui lanț de dependențe, compromisul conturilor nede încredere ar putea afecta până la 52% din toate modulele din NPM.

Sursa: opennet.ru

Adauga un comentariu