Vulnerabilitat en el paquet NPM node-netmask utilitzat en 270 mil projectes

El paquet node-netmask NPM, que té uns 3 milions de descàrregues per setmana i s'utilitza com a dependència de més de 270 mil projectes a GitHub, té una vulnerabilitat (CVE-2021-28918) que li permet evitar les comprovacions que utilitzen la màscara de xarxa. per determinar l'ocurrència per adreçar intervals o per filtrar. El problema s'ha solucionat a la versió de node-netmask 2.0.0.

La vulnerabilitat permet tractar una adreça IP externa com una adreça de la xarxa interna i viceversa, i amb una certa lògica d'utilitzar el mòdul node-netmask a l'aplicació per dur a terme SSRF (Server-side request forgery), RFI. (Inclusió de fitxers remots) i atacs LFI (inclusió de fitxers locals) per accedir als recursos de la xarxa interna i incloure fitxers externs o locals a la cadena d'execució. El problema és que, d'acord amb l'especificació, els valors de la cadena d'adreces que comencen amb un zero s'han d'interpretar com a nombres octals, però el mòdul de màscara de xarxa de nodes no ho té en compte i els tracta com a nombres decimals.

Per exemple, un atacant podria sol·licitar un recurs local especificant el valor "0177.0.0.1", que correspon a "127.0.0.1", però el mòdul "node-netmask" descartarà el null i tractarà 0177.0.0.1" com a " 177.0.0.1", que en l'aplicació a l'hora d'avaluar les regles d'accés, no es podrà determinar la identitat amb "127.0.0.1". De la mateixa manera, un atacant pot especificar l'adreça "0127.0.0.1", que hauria de ser idèntica a "87.0.0.1", però es tractarà com "127.0.0.1" al mòdul "node-netmask". De la mateixa manera, podeu enganyar la comprovació d'accés a adreces d'intranet especificant valors com "012.0.0.1" (equivalent a "10.0.0.1", però es processarà com a 12.0.0.1 durant la comprovació).

Els investigadors que van identificar el problema anomenen el problema catastròfic i proporcionen diversos escenaris d'atac, però la majoria semblen especulatius. Per exemple, parla de la possibilitat d'atacar una aplicació basada en Node.js que estableix connexions externes per sol·licitar un recurs en funció dels paràmetres o dades de la sol·licitud d'entrada, però l'aplicació no està específicament anomenada ni detallada. Fins i tot si trobeu aplicacions que carreguen recursos en funció de les adreces IP introduïdes, no està del tot clar com es pot explotar la vulnerabilitat a la pràctica sense connectar-vos a una xarxa local o sense tenir el control de les adreces IP "mirall".

Els investigadors només assumeixen que els propietaris de 87.0.0.1 (Telecom Italia) i 0177.0.0.1 (Brasil Telecom) poden saltar la restricció d'accés a 127.0.0.1. Un escenari més realista és explotar la vulnerabilitat per evitar diverses llistes de bloqueig de l'aplicació. El problema també es pot aplicar per compartir la definició d'intervals d'intranet al mòdul NPM "private-ip".

Font: opennet.ru

Afegeix comentari