Ranljivost v paketu NPM node-netmask, ki se uporablja v 270 tisoč projektih

Paket node-netmask NPM, ki ima približno 3 milijone prenosov na teden in se uporablja kot odvisnost pri več kot 270 tisoč projektih na GitHubu, ima ranljivost (CVE-2021-28918), ki mu omogoča, da zaobide preverjanja, ki uporabljajo omrežno masko. za določitev pojava za obseg naslovov ali za filtriranje. Težava je odpravljena v izdaji node-netmask 2.0.0.

Ranljivost omogoča obravnavanje zunanjega naslova IP kot naslova iz notranjega omrežja in obratno ter z določeno logiko uporabe modula vozlišča-omrežne maske v aplikaciji za izvajanje SSRF (Server-side request forgery), RFI (vključitev oddaljene datoteke) in napadi LFI (vključitev lokalne datoteke) za dostop do virov v notranjem omrežju in vključitev zunanjih ali lokalnih datotek v izvršilno verigo. Težava je v tem, da je treba v skladu s specifikacijo vrednosti naslovnega niza, ki se začnejo z ničlo, interpretirati kot osmiška števila, vendar modul vozlišča-omrežne maske tega ne upošteva in jih obravnava kot decimalna števila.

Napadalec lahko na primer zahteva lokalni vir tako, da navede vrednost "0177.0.0.1", ki ustreza "127.0.0.1", vendar bo modul "node-netmask" zavrgel ničelno vrednost in obravnaval 0177.0.0.1″ kot " 177.0.0.1", ki v aplikaciji pri ocenjevanju pravil dostopa ne bo mogoče ugotoviti istovetnosti z "127.0.0.1". Podobno lahko napadalec določi naslov »0127.0.0.1«, ki bi moral biti enak »87.0.0.1«, vendar bo v modulu »node-netmask« obravnavan kot »127.0.0.1«. Podobno lahko goljufate pri preverjanju dostopa do intranetnih naslovov tako, da navedete vrednosti, kot je »012.0.0.1« (enakovredno »10.0.0.1«, vendar bo med preverjanjem obdelano kot 12.0.0.1).

Raziskovalci, ki so prepoznali težavo, jo imenujejo katastrofalna in ponujajo več scenarijev napada, vendar je večina videti špekulativna. Na primer, govori o možnosti napada na aplikacijo, ki temelji na Node.js in ki vzpostavlja zunanje povezave za zahtevo po viru na podlagi parametrov ali podatkov vhodne zahteve, vendar aplikacija ni posebej imenovana ali podrobna. Tudi če najdete aplikacije, ki nalagajo vire na podlagi vnesenih naslovov IP, ni povsem jasno, kako je mogoče ranljivost izkoristiti v praksi brez povezave v lokalno omrežje ali brez pridobitve nadzora nad “zrcalnimi” naslovi IP.

Raziskovalci samo domnevajo, da lastniki 87.0.0.1 (Telecom Italia) in 0177.0.0.1 (Brasil Telecom) lahko zaobidejo omejitev dostopa do 127.0.0.1. Bolj realističen scenarij je izkoriščanje ranljivosti za obhod različnih seznamov blokiranih na strani aplikacije. Težavo je mogoče uporabiti tudi za skupno rabo definicije obsegov intraneta v modulu NPM "private-ip".

Vir: opennet.ru

Dodaj komentar