270 tuhandes projektis kasutatud sõlme-võrgumaski NPM-paketi haavatavus

Sõlme-võrgumaski NPM-paketil, mida laaditakse nädalas alla umbes 3 miljonit ja mida kasutatakse GitHubi enam kui 270 tuhande projekti sõltuvusena, on haavatavus (CVE-2021-28918), mis võimaldab võrgumaski kasutavatest kontrollidest mööda minna. aadressivahemike esinemise määramiseks või filtreerimiseks. Probleem on lahendatud sõlme võrgumaski versiooni 2.0.0 väljalaskega.

Haavatavus võimaldab käsitleda välist IP-aadressi aadressina sisevõrgust ja vastupidi ning teatud loogikaga, kasutades rakenduses sõlme-võrgumaski moodulit SSRF-i (Server-side request forgery), RFI-de läbiviimiseks. (Remote File Inclusion) ja LFI (Local File Inclusion) rünnakud ), et pääseda juurde sisevõrgu ressurssidele ja kaasata täitmisahelasse väliseid või kohalikke faile. Probleem on selles, et spetsifikatsiooni kohaselt tuleks nulliga algavaid aadressi stringi väärtusi tõlgendada kaheksandarvudena, kuid node-netmask moodul ei võta seda arvesse ja käsitleb neid kümnendarvudena.

Näiteks võib ründaja taotleda kohalikku ressurssi, määrates väärtuse "0177.0.0.1", mis vastab väärtusele "127.0.0.1", kuid moodul "node-netmask" loobub nullist ja käsitleb 0177.0.0.1 kui " 177.0.0.1", mida rakenduses juurdepääsureeglite hindamisel ei ole võimalik tuvastada identiteediga "127.0.0.1". Samamoodi võib ründaja määrata aadressi „0127.0.0.1”, mis peaks olema identne aadressiga „87.0.0.1”, kuid seda käsitletakse moodulis „node-netmask” kui „127.0.0.1”. Samamoodi saate petta sisevõrgu aadressidele juurdepääsu kontrolli, määrates väärtused, nagu "012.0.0.1" (vastab "10.0.0.1", kuid kontrollimisel töödeldakse seda kui 12.0.0.1).

Probleemi tuvastanud teadlased nimetavad probleemi katastroofiliseks ja pakuvad mitmeid rünnakustsenaariume, kuid enamik neist näib olevat spekulatiivne. Räägitakse näiteks võimalusest rünnata Node.js-põhist rakendust, mis loob välisühendused ressursi taotlemiseks sisendpäringu parameetrite või andmete alusel, kuid rakendust pole konkreetselt nimetatud ega üksikasjalikult kirjeldatud. Isegi kui leiate rakendusi, mis laadivad ressursse sisestatud IP-aadresside põhjal, pole täiesti selge, kuidas haavatavust saab praktikas ära kasutada ilma kohalikku võrku ühendamata või "peegel" IP-aadresside üle kontrolli saamata.

Teadlased eeldavad ainult, et 87.0.0.1 (Telecom Italia) ja 0177.0.0.1 (Brasil Telecom) omanikud suudavad juurdepääsupiirangust 127.0.0.1-le mööda minna. Realistlikum stsenaarium on haavatavuse ärakasutamine erinevatest rakendusepoolsetest blokeeringute loenditest möödahiilimiseks. Probleemi saab rakendada ka sisevõrgu vahemike määratluse jagamisel NPM-moodulis "privaatne IP".

Allikas: opennet.ru

Lisa kommentaar