NPM-pakettis node-netmask, millel on nÀdalas umbes 3 miljonit allalaadimist ja mida kasutatakse enam kui 270 000 projekti sÔltuvusena GitHubis, leiti haavatavus (CVE-2021-28918), mis vÔimaldab mööda minna kontrollidest, kus vÔrgumaskit kasutatakse aadresside vahemike mÀÀramiseks vÔi filtreerimiseks. Probleem on lahendatud node-netmask versioonis 2.0.0.
Haavatavus vĂ”imaldab vĂ€lise IP-aadressi töötlemist sisemise vĂ”rgu aadressina ja vastupidi. Teatud kasutusloogika korral node-netmask mooduliga rakenduses saab teostada SSRF (Server-side request forgery), RFI (Remote File Inclusion) ja LFI (Local File Inclusion) rĂŒnnakuid, mis suunavad ressursse sisemisse vĂ”rgusse ning kaasavad vĂ€liste vĂ”i kohalike failide tĂ€itmise ahelasse. Probleem tuleneb sellest, et vastavalt spetsifikatsioonile peavad nulliga algavad stringilised aadressivÀÀrtused olema tĂ”lgendatud kui oktaalarvud, kuid moodul ânode-netmaskâ ei arvestanud seda eripĂ€ra ning töötleb neid kĂŒmnendarvudena.
NĂ€iteks vĂ”ib rĂŒndaja taotleda kohaliku ressursi, mÀÀrates vÀÀrtuse â0177.0.0.1â, mis vastab â127.0.0.1â, kuid moodul ânode-netmaskâ ignoreerib nulli ja töötleb 0177.0.0.1 kui â177.0.0.1â, mis rakenduses juurdepÀÀsureeglite hindamisel ei luba mÀÀrata ĂŒhtsust â127.0.0.1â -ga. Samamoodi vĂ”ib rĂŒndaja nĂ€idata aadressi â0127.0.0.1â, mis peaks olema identne â87.0.0.1â -ga, kuid moodul ânode-netmaskâ töötleb seda kui â127.0.0.1â. Samasugune vale on vĂ”imalik ka intraneti aadresside kontrollimisel, esitades vÀÀrtusi nagu â012.0.0.1â (ekvivalent â10.0.0.1â, kuid kontrollimisel töödeldakse seda kui 12.0.0.1).
Probleemi tuvastanud teadlased nimetavad seda katastroofiliseks ja toovad vĂ€lja mitmeid rĂŒnnaku stsenaariume, kuid enamik neist tundub olema teoreetilised. NĂ€iteks rÀÀgitakse vĂ”imalusest rĂŒnnata Node.js rakendust, mis loob vĂ€liseid ĂŒhendusi, et kĂŒsida ressursse sĂ”ltuvalt parameetritest vĂ”i sisendandmetest, kuid konkreetset rakendust ei nimetata ega detailiseerita. Isegi kui leida rakendusi, mis laadivad ressursse sisestatud andmete pĂ”hjal. IP-aadresse, ei ole pĂ€ris selge, kuidas saaks haavatavust praktikas rakendada, ilma et oleks ĂŒhendatud kohaliku vĂ”rku vĂ”i ilma, et oleks kontroll «peegeldavate» IP-aadresside ĂŒle.
Uuringud viitavad, et omanikud 87.0.0.1 (Telecom Italia) ja 0177.0.0.1 (Brasil Telecom) vĂ”ivad olla vĂ”imelised ĂŒletama juurdepÀÀsu piiri 127.0.0.1. TĂ”elisem stsenaarium on kasutamine haavatavuse puhul, et ĂŒletada erinevaid blokeerimisnimesid, mis on rakenduse poolel rakendatud. Probleem vĂ”ib samuti olla seotud sisemise IP-aadresside mÀÀratlemise vahetamisega NPM-moodulis âprivate-ipâ.
Allikas: opennet.ru
