Sårbarhed i node-netmask NPM-pakken brugt i 270 tusinde projekter

Node-netmasken NPM-pakken, som har omkring 3 millioner downloads om ugen og bruges som afhængighed af mere end 270 tusinde projekter på GitHub, har en sårbarhed (CVE-2021-28918), der gør det muligt for den at omgå kontroller, der bruger netmasken for at bestemme forekomsten af ​​adresseområder eller for filtrering. Problemet er løst i udgivelsen af ​​node-netmask 2.0.0.

Sårbarheden gør det muligt at behandle en ekstern IP-adresse som en adresse fra det interne netværk og omvendt, og med en vis logik med at bruge node-netmask-modulet i applikationen til at udføre SSRF (Server-side request forgery), RFI (Remote File Inclusion) og LFI (Local File Inclusion) angreb) for at få adgang til ressourcer på det interne netværk og inkludere eksterne eller lokale filer i udførelseskæden. Problemet er, at i henhold til specifikationen skal adressestrengværdier, der starter med et nul, fortolkes som oktale tal, men node-netmaske-modulet tager ikke højde for dette og behandler dem som decimaltal.

For eksempel kan en angriber anmode om en lokal ressource ved at angive værdien "0177.0.0.1", som svarer til "127.0.0.1", men "node-netmaske"-modulet vil kassere null og behandle 0177.0.0.1" som " 177.0.0.1", hvilket i applikationen ved vurdering af adgangsregler ikke vil være muligt at fastslå identitet med "127.0.0.1". På samme måde kan en angriber angive adressen "0127.0.0.1", som skal være identisk med "87.0.0.1", men vil blive behandlet som "127.0.0.1" i "node-netmaske"-modulet. På samme måde kan du snyde checken for adgang til intranetadresser ved at angive værdier som "012.0.0.1" (svarende til "10.0.0.1", men vil blive behandlet som 12.0.0.1 under kontrol).

Forskerne, der identificerede problemet, kalder problemet katastrofalt og giver flere angrebsscenarier, men de fleste af dem ser spekulative ud. For eksempel taler den om muligheden for at angribe en Node.js-baseret applikation, der etablerer eksterne forbindelser for at anmode om en ressource baseret på parametrene eller dataene for inputanmodningen, men applikationen er ikke specifikt navngivet eller detaljeret. Selvom man finder applikationer, der indlæser ressourcer ud fra de indtastede IP-adresser, er det ikke helt klart, hvordan sårbarheden i praksis kan udnyttes uden at oprette forbindelse til et lokalt netværk eller uden at få kontrol over "spejle" IP-adresser.

Forskerne antager kun, at ejere af 87.0.0.1 (Telecom Italia) og 0177.0.0.1 (Brasil Telecom) er i stand til at omgå adgangsbegrænsningen til 127.0.0.1. Et mere realistisk scenario er at udnytte sårbarheden til at omgå forskellige blokeringslister på applikationssiden. Problemet kan også anvendes til at dele definitionen af ​​intranetintervaller i NPM-modulet "privat-ip".

Kilde: opennet.ru

Tilføj en kommentar