Kwetsberens yn it knooppunt-netmasker NPM-pakket brûkt yn 270 tûzen projekten

It knooppunt-netmasker NPM-pakket, dat sawat 3 miljoen downloads per wike hat en wurdt brûkt as ôfhinklikens fan mear dan 270 tûzen projekten op GitHub, hat in kwetsberens (CVE-2021-28918) wêrtroch it kontrôles kin omgean dy't it netmasker brûke om it foarkommen fan adresbereiken te bepalen of foar filterjen. It probleem is fêst yn 'e frijlitting fan node-netmask 2.0.0.

De kwetsberens makket it mooglik om in ekstern IP-adres te behanneljen as in adres fan it ynterne netwurk en oarsom, en mei in bepaalde logika fan it brûken fan de node-netmaskermodule yn 'e applikaasje om SSRF (Server-side request forgery), RFI út te fieren (Remote File Inclusion) en LFI (Local File Inclusion) oanfallen) om tagong te krijen ta boarnen op it ynterne netwurk en eksterne as lokale bestannen yn 'e útfieringsketen op te nimmen. It probleem is dat neffens de spesifikaasje adresstringwearden dy't begjinne mei in nul moatte wurde ynterpretearre as oktale nûmers, mar de node-netmaskermodule hâldt dêr gjin rekken mei en behannelet se as desimale getallen.

Bygelyks, in oanfaller kin in lokale boarne oanfreegje troch de wearde "0177.0.0.1" op te jaan, dy't oerienkomt mei "127.0.0.1", mar de module "node-netmasker" sil de nul ferwiderje, en 0177.0.0.1" behannelje as " 177.0.0.1", dy't yn 'e applikaasje by it evaluearjen fan tagongsregels, it net mooglik wêze sil om identiteit te bepalen mei "127.0.0.1". Likegoed kin in oanfaller it adres "0127.0.0.1" oantsjutte, dat identyk wêze moat oan "87.0.0.1", mar sil wurde behannele as "127.0.0.1" yn 'e module "node-netmasker". Op deselde manier kinne jo de kontrôle foar tagong ta intranetadressen cheat troch wearden op te jaan lykas "012.0.0.1" (lykweardich oan "10.0.0.1", mar sille wurde ferwurke as 12.0.0.1 tidens kontrôle).

De ûndersikers dy't it probleem identifisearre neame it probleem katastrofysk en leverje ferskate oanfalssenario's, mar de measten fan harren sjogge spekulatyf. Bygelyks, it praat oer de mooglikheid fan oanfallen fan in Node.js-basearre applikaasje dy't eksterne ferbiningen fêstiget om in boarne te freegjen basearre op de parameters of gegevens fan 'e ynfierfersyk, mar de applikaasje is net spesifyk neamd of detaillearre. Sels as jo applikaasjes fine dy't boarnen laden op basis fan 'e ynfierde IP-adressen, is it net folslein dúdlik hoe't de kwetsberens yn' e praktyk kin wurde eksploitearre sûnder ferbining te meitsjen mei in lokaal netwurk of sûnder kontrôle oer "spegel" IP-adressen te krijen.

De ûndersikers geane allinich derfan út dat eigners fan 87.0.0.1 (Telecom Italia) en 0177.0.0.1 (Brasil Telecom) de tagongsbeheining nei 127.0.0.1 kinne omgean. In mear realistysk senario is om de kwetsberens te eksploitearjen om ferskate blokkenlisten oan 'e applikaasjekant te omgean. It probleem kin ek tapast wurde foar it dielen fan de definysje fan intranetberiken yn 'e NPM-module "privee-ip".

Boarne: opennet.ru

Add a comment