Vulnerabilitate în pachetul NPM node-netmask, utilizat în 270 de mii de proiecte

În pachetul NPM node-netmask, care are aproximativ 3 milioane de descărcări pe săptămână și este utilizat ca dependență în peste 270 de mii de proiecte pe GitHub, a fost descoperită o vulnerabilitate (CVE-2021-28918) care permite ocolirea verificărilor în care masca de rețea este utilizată pentru a determina incidența în intervale de adrese sau pentru filtrare. Problema a fost remediată în versiunea node-netmask 2.0.0.

Vulnerabilitatea permite tratarea unei adrese IP externe ca adresă dintr-o rețea internă și invers, iar cu o anumită logică de utilizare a modulului node-netmask în aplicație, poate provoca atacuri SSRF (Server-side request forgery), RFI (Remote File Inclusion) și LFI (Local File Inclusion) pentru a accesa resurse din rețeaua internă și a include în lanțul de execuție fișiere externe sau locale. Problema este că, conform specificației, valorile de tip string ale adreselor care încep cu zero trebuie interpretate ca numere octale, dar modulul „node-netmask” nu ține cont de această particularitate și le procesează ca numere zecimale.

De exemplu, un atacator poate solicita o resursă locală specificând valoarea „0177.0.0.1”, care corespunde „127.0.0.1”, dar modulul „node-netmask” va ignora zero-ul și va procesa „0177.0.0.1” ca „177.0.0.1”, ceea ce în aplicație, la evaluarea regulilor de acces, nu va permite identificarea identității cu „127.0.0.1”. În mod similar, atacatorul poate specifica adresa „0127.0.0.1”, care ar trebui să fie identică cu „87.0.0.1”, dar în modulul „node-netmask” va fi procesată ca „127.0.0.1”. De asemenea, se poate păcăli verificarea adreselor intranet, specificând valori precum „012.0.0.1” (echivalent cu „10.0.0.1”, dar în timpul verificării va fi procesată ca „12.0.0.1”).

Cercetătorii care au identificat problema o numesc catastrofală și oferă câteva scenarii de atac, dar majoritatea dintre ele par ipotetice. De exemplu, se menționează posibilitatea de a ataca o aplicație bazată pe Node.js, care stabilește conexiuni externe pentru a solicita resurse pe baza parametrilor sau datelor din cererea de intrare, dar aplicația specifică nu este menționată și nu este detaliată. Chiar dacă s-ar găsi aplicații care efectuează descărcări de resurse pe baza datelor introduse adreselor IP, nu este foarte clar cum poate fi aplicată vulnerabilitatea în practică, fără a fi conectat la o rețea locală sau fără a obține controlul asupra adreselor IP „mirror”.

Cercetătorii presupun doar că proprietarii 87.0.0.1 (Telecom Italia) și 0177.0.0.1 (Brasil Telecom) au capacitatea de a ocoli restricțiile de acces la 127.0.0.1. Un scenariu mai realist este utilizarea vulnerabilității pentru a ocoli diversele liste de blocare implementate pe partea aplicației. Problema poate fi, de asemenea, aplicată pentru a modifica definițiile intervalelor intra-rețea în modulul NPM „private-ip”.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster