Compania GitHub a dezvăluit informații despre două incidente în infrastructura depozitului de pachete NPM. Pe 2 noiembrie, cercetători de securitate externi (Kajetan Grzybowski și Maciej Piechota) au raportat în cadrul programului Bug Bounty că în depozitul NPM exista o vulnerabilitate care permitea publicarea unei versiuni noi a oricărui pachet, folosind un cont care nu era autorizat pentru a efectua astfel de actualizări.
Vulnerabilitatea a fost cauzată de o verificare incorectă a autorizării în codul microservicelor care gestionau cererile către NPM. Serviciul de autorizare efectua verificări de acces la pachete bazate pe datele transmise în cerere, dar un alt serviciu, care încărca actualizările în depozit, determina pachetul de publicat bazându-se pe conținutul metadatelor din pachetul încărcat. Astfel, un atacator putea solicita publicarea unei actualizări pentru pachetul său la care avea acces, dar putea specifica în pachetul respectiv informațiile despre un alt pachet care ar fi fost, în final, actualizat.
Problema a fost rezolvată la 6 ore după apariția informațiilor despre vulnerabilitate, dar aceasta a fost prezentă în NPM mai mult timp decât acoperă jurnalele cu telemetrie. GitHub afirmă că nu au fost înregistrate dovezi ale atacurilor folosind această vulnerabilitate din septembrie 2020, dar nu există garanții că problema nu a fost exploatată anterior.
Al doilea incident a avut loc pe 26 octombrie. În cadrul unor lucrări tehnice la baza de date a serviciului replicate.npmjs.com, a fost identificată prezența unor date confidențiale accesibile solicitărilor externe, care dezvăluiau informații despre numele pachetelor interne menționate în jurnalul de modificări. Informațiile despre astfel de nume pot fi utilizate pentru a desfășura atacuri asupra dependențelor în proiectele interne (în februarie, un atac similar a permis executarea de cod pe servere PayPal, Microsoft, Apple, Netflix, Uber și încă 30 de companii).
În plus, având în vedere creșterea frecvenței cazurilor de capturare a repositoarelor proiectelor mari și promovarea codului malițios prin compromiterea conturilor dezvoltatorilor, compania GitHub a decis să introducă autentificarea cu doi factori ca fiind obligatorie. Modificarea va intra în vigoare în primul trimestru al anului 2022 și va fi aplicată persoanelor care întrețin și administrează pachetele incluse în lista celor mai populare. De asemenea, se raportează o modernizare a infrastructurii, în care va fi implementat un sistem automatizat de monitorizare și analiză a noilor versiuni de pachete pentru identificarea timpurie a modificărilor malițioase.
Să ne amintim că, conform unui studiu realizat în 2020, doar 9,27% dintre mentorii de pachete folosesc autentificarea cu doi factori pentru a proteja accesul, iar în 13,37% dintre cazuri, la înregistrarea de noi conturi, dezvoltatorii au încercat să reutilizeze parole compromise prezente în cunoscutele scurgeri de parole. În timpul verificării fiabilității parolelor utilizate, s-a reușit accesarea a 12% din conturile NPM (13% din pachete) din cauza utilizării unor parole predictibile și triviale, cum ar fi „123456”. Printre conturile problematice s-au aflat 4 conturi de utilizatori din Top 20 cele mai populare pachete, 13 conturi ale căror pachete au fost descărcate de peste 50 de milioane de ori pe lună, 40 de conturi cu mai mult de 10 milioane de descărcări pe lună și 282 cu peste 1 milion de descărcări pe lună. Având în vedere descărcarea modulelor prin intermediul lanțului de dependențe, compromiterea conturilor nesigure ar fi putut afecta până la 52% din toate modulele NPM.
Sursa: opennet.ro
