Sårbarhed i NPM-pakken node-netmask, der anvendes i 270.000 projekter

I NPM-pakken node-netmask, som har omkring 3 millioner downloads om ugen og bruges som en afhængighed af mere end 270.000 projekter på GitHub, er der blevet fundet en sårbarhed (CVE-2021-28918), der muliggør omgåelse af kontroller, hvor netværksmasken bruges til at bestemme indtrædelse i adresser eller til filtrering. Problemet er blevet løst i udgivelsen node-netmask 2.0.0.

Sårbarheden muliggør behandling af en ekstern IP-adresse som en adresse fra det interne netværk og omvendt, og ved en bestemt logik i brugen af modulet node-netmask i applikationen kan man 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 ligger i, at ifølge specifikationen skal strengværdier for adresser, der starter med nul, fortolkes som oktale tal, men modulet 'node-netmask' tager ikke højde for denne detalje og behandler dem som decimale tal.

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 modulet 'node-netmask' vil ignorere nullen og behandle '0177.0.0.1' som '177.0.0.1', hvilket i applikationen under vurdering af adgangsregler ikke vil give mulighed for at bestemme identiteten med '127.0.0.1'. Tilsvarende kan angriberen angive adressen '0127.0.0.1', som burde være identisk med '87.0.0.1', men i modulet 'node-netmask' vil blive behandlet som '127.0.0.1'. På samme måde kan man narre kontrollen af intranet-adresser ved at angive værdier som '012.0.0.1' (ækvivalent med '10.0.0.1', men under kontrol vil blive behandlet som '12.0.0.1').

Forskere, der har identificeret problemet, kalder det katastrofalt og præsenterer flere angrebsscenarier, men de fleste ser ud til at være teoretiske. For eksempel nævnes muligheden for at angribe en Node.js-applikation, der opsætter eksterne forbindelser for at anmode om ressourcer baseret på parametre eller data fra indgangsanmodningen, men den specifikke applikation nævnes ikke og uddybes ikke. Selv hvis der findes applikationer, der indlæser ressourcer baseret på indtastede data, IP-adresserer det ikke helt klart, hvordan sårbarheden kan anvendes i praksis uden at være tilsluttet det lokale netværk eller uden at få kontrol over 'spejlende' IP-adresser.

Forskere antager kun, at ejerne af 87.0.0.1 (Telecom Italia) og 0177.0.0.1 (Brasil Telecom) har mulighed for at omgå adgangen til 127.0.0.1. Et mere realistisk scenarie er, at man udnytter sårbarheden til at omgå forskellige blokeringer, der er implementeret på applikationssiden. Problemet kan også anvendes til at ændre definitionen af intranet-rækkevidder i NPM-modulet "private-ip".

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster