Una vulnerabilitat que permetia publicar una actualització per a qualsevol paquet del repositori NPM

GitHub ha revelat dos incidents a la seva infraestructura de dipòsit de paquets NPM. El 2 de novembre, investigadors de seguretat de tercers (Kajetan Grzybowski i Maciej Piechota), com a part del programa Bug Bounty, van informar de la presència d'una vulnerabilitat al repositori NPM que us permet publicar una nova versió de qualsevol paquet amb el vostre compte, que no està autoritzat per realitzar aquestes actualitzacions.

La vulnerabilitat va ser causada per comprovacions incorrectes de permisos al codi dels microserveis que processen les sol·licituds a NPM. El servei d'autorització va realitzar comprovacions de permisos del paquet basant-se en les dades que es van passar a la sol·licitud, però un altre servei que va penjar l'actualització al repositori va determinar que el paquet es publicés en funció del contingut de metadades del paquet penjat. Així, un atacant podria sol·licitar la publicació d'una actualització del seu paquet, al qual té accés, però especificar en el mateix paquet informació sobre un altre paquet, que eventualment s'actualitzaria.

El problema es va solucionar 6 hores després de la notificació de la vulnerabilitat, però la vulnerabilitat va estar present a NPM més temps del que cobreixen els registres de telemetria. GitHub afirma que no hi ha hagut rastres d'atacs amb aquesta vulnerabilitat des del setembre de 2020, però no hi ha cap garantia que el problema no s'hagi explotat abans.

El segon incident va tenir lloc el 26 d'octubre. Durant el treball tècnic amb la base de dades del servei replicate.npmjs.com, es va revelar la presència de dades confidencials a la base de dades accessible a sol·licituds externes, revelant informació sobre els noms dels paquets interns que s'esmentaven al registre de canvis. La informació sobre aquests noms es pot utilitzar per dur a terme atacs de dependència en projectes interns (al febrer, un atac similar va permetre executar codi als servidors de PayPal, Microsoft, Apple, Netflix, Uber i 30 empreses més).

A més, a causa del nombre creixent de casos de segrest de dipòsits de grans projectes i de promoció de codi maliciós mitjançant comptes de desenvolupadors compromesos, GitHub ha decidit introduir l'autenticació obligatòria de dos factors. El canvi entrarà en vigor el primer trimestre del 2022 i s'aplicarà als mantenedors i administradors dels paquets inclosos a la llista més popular. A més, s'informa sobre la modernització de la infraestructura, en la qual s'introduirà el seguiment i anàlisi automatitzat de noves versions de paquets per a la detecció precoç de canvis maliciosos.

Recordem que, segons un estudi realitzat l'any 2020, només el 9.27% dels mantenedors de paquets utilitzen l'autenticació de dos factors per protegir l'accés, i en el 13.37% dels casos, en registrar nous comptes, els desenvolupadors van intentar reutilitzar contrasenyes compromeses que apareixien a fuites de contrasenyes conegudes. Durant una revisió de seguretat de contrasenyes, es va accedir al 12% dels comptes de NPM (13% dels paquets) a causa de l'ús de contrasenyes predictibles i trivials com ara "123456". Entre els més problemàtics hi havia 4 comptes d'usuari dels 20 paquets més populars, 13 comptes amb paquets descarregats més de 50 milions de vegades al mes, 40 amb més de 10 milions de descàrregues al mes i 282 amb més d'1 milió de descàrregues al mes. Tenint en compte la càrrega de mòduls al llarg d'una cadena de dependències, el compromís de comptes no fiables podria afectar fins al 52% de tots els mòduls de NPM.

Font: opennet.ru

Afegeix comentari