Un atac a NPM que permet determinar la presència de paquets en repositoris privats

S'ha identificat una fallada a NPM que permet detectar l'existència de paquets en repositoris tancats. El problema és causat per diferents temps de resposta quan es sol·licita un paquet existent i inexistent a un tercer que no té accés al repositori. Si no hi ha accés per a cap paquet en repositoris privats, el servidor registry.npmjs.org retorna un error amb el codi "404", però si existeix un paquet amb el nom sol·licitat, l'error s'emet amb un retard notable. Un atacant pot utilitzar aquesta funció per determinar la presència d'un paquet cercant noms de paquets mitjançant diccionaris.

La determinació dels noms de paquets als dipòsits privats pot ser necessari per dur a terme un atac de barreja de dependències que manipuli la intersecció de noms de dependències als dipòsits públics i interns. Sabent quins paquets NPM interns estan presents als dipòsits corporatius, un atacant pot col·locar paquets amb els mateixos noms i números de versió més recents al dipòsit públic de NPM. Si durant el muntatge les biblioteques internes no estan enllaçades explícitament al seu dipòsit a la configuració, el gestor de paquets npm considerarà que el dipòsit públic és una prioritat més alta i descarregarà el paquet preparat per l'atacant.

GitHub va rebre una notificació del problema al març, però es va negar a afegir protecció contra l'atac, invocant limitacions arquitectòniques. Es recomana a les empreses que utilitzen dipòsits privats que comprovin periòdicament l'aparició de noms superposats al dipòsit públic o que creïn talons en nom seu amb noms que repeteixin els noms dels paquets als dipòsits privats, de manera que els atacants no puguin col·locar els seus paquets amb noms superposats.

Font: opennet.ru

Afegeix comentari