Ranjivost u paketu node-netmask NPM korištenom u 270 hiljada projekata

Node-netmask NPM paket, koji ima oko 3 miliona preuzimanja tjedno i koristi se kao ovisnost o više od 270 hiljada projekata na GitHubu, ima ranjivost (CVE-2021-28918) koja mu omogućava da zaobiđe provjere koje koriste mrežnu masku za određivanje pojavljivanja za adresiranje raspona ili za filtriranje. Problem je riješen u izdanju node-netmask 2.0.0.

Ranjivost omogućava tretiranje vanjske IP adrese kao adrese iz interne mreže i obrnuto, te uz određenu logiku korištenja modula node-netmask u aplikaciji za izvođenje SSRF-a (Falsifikovanje zahtjeva na strani servera), RFI (Remote File Inclusion) i LFI (Local File Inclusion) napadi) za pristup resursima na internoj mreži i uključivanje eksternih ili lokalnih datoteka u lanac izvršavanja. Problem je u tome što bi prema specifikaciji vrijednosti adresnog niza koje počinju nulom trebale biti interpretirane kao oktalni brojevi, ali modul node-netmask to ne uzima u obzir i tretira ih kao decimalne brojeve.

Na primjer, napadač može zatražiti lokalni resurs specificiranjem vrijednosti "0177.0.0.1", što odgovara "127.0.0.1", ali modul "node-netmask" će odbaciti null i tretirati 0177.0.0.1" kao " 177.0.0.1", što u aplikaciji prilikom procene pravila pristupa neće biti moguće utvrditi identitet sa "127.0.0.1". Slično tome, napadač može specificirati adresu “0127.0.0.1”, koja bi trebala biti identična “87.0.0.1”, ali će se tretirati kao “127.0.0.1” u modulu “node-netmask”. Slično tome, možete prevariti provjeru za pristup intranet adresama tako što ćete navesti vrijednosti poput “012.0.0.1” (ekvivalentno “10.0.0.1”, ali će se obrađivati ​​kao 12.0.0.1 tokom provjere).

Istraživači koji su identificirali problem nazivaju ga katastrofalnim i navode nekoliko scenarija napada, ali većina njih djeluje spekulativno. Na primjer, spominju mogućnost napada na aplikaciju zasnovanu na Node.js-u koja uspostavlja vanjske veze kako bi zatražila resurs na osnovu parametara ili ulaznih podataka zahtjeva, ali ne imenuju konkretnu aplikaciju niti daju bilo kakve detalje. Čak i ako pronađu aplikacije koje preuzimaju resurse na osnovu ulaznih podataka... IP adrese, nije sasvim jasno kako se ranjivost može iskoristiti u praksi bez povezivanja na lokalnu mrežu ili bez sticanja kontrole nad "zrcalnim" IP adresama.

Istraživači samo pretpostavljaju da vlasnici 87.0.0.1 (Telecom Italia) i 0177.0.0.1 (Brasil Telecom) mogu zaobići ograničenje pristupa na 127.0.0.1. Realniji scenario je da se ranjivost iskoristi za zaobilaženje raznih blok lista na strani aplikacije. Problem se također može primijeniti na dijeljenje definicije intranet raspona u NPM modulu "private-ip".

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster