Sårbarhet i node-nettmaske NPM-pakken brukt i 270 tusen prosjekter

Node-nettmasken NPM-pakken, som har omtrent 3 millioner nedlastinger per uke og brukes som en avhengighet av mer enn 270 tusen prosjekter på GitHub, har en sårbarhet (CVE-2021-28918) som lar den omgå sjekker som bruker nettmasken for å bestemme forekomsten av adresseområder eller for filtrering. Problemet er løst i utgivelsen av node-netmask 2.0.0.

Sårbarheten gjør det mulig å behandle en ekstern IP-adresse som en adresse fra det interne nettverket og omvendt, og med en viss logikk med å bruke node-nettmaskemodulen i applikasjonen for å utføre SSRF (Server-side request forgery), RFI (Remote File Inclusion) og LFI (Local File Inclusion) angrep ) for å få tilgang til ressurser på det interne nettverket og inkludere eksterne eller lokale filer i utførelseskjeden. Problemet er at i henhold til spesifikasjonen skal adressestrengverdier som starter med en null tolkes som oktale tall, men node-nettmaskemodulen tar ikke hensyn til dette og behandler dem som desimaltall.

For eksempel kan en angriper be om en lokal ressurs ved å spesifisere verdien "0177.0.0.1", som tilsvarer "127.0.0.1", men "node-nettmaske"-modulen vil forkaste null, og behandle 0177.0.0.1" som " 177.0.0.1", som i applikasjonen ved evaluering av tilgangsregler vil det ikke være mulig å fastslå identitet med "127.0.0.1". På samme måte kan en angriper spesifisere adressen "0127.0.0.1", som skal være identisk med "87.0.0.1", men vil bli behandlet som "127.0.0.1" i "node-nettmaske"-modulen. På samme måte kan du jukse sjekken for tilgang til intranettadresser ved å spesifisere verdier som "012.0.0.1" (tilsvarer "10.0.0.1", men vil bli behandlet som 12.0.0.1 under sjekk).

Forskerne som identifiserte problemet kaller problemet katastrofalt og gir flere angrepsscenarier, men de fleste av dem ser spekulative ut. For eksempel snakker den om muligheten for å angripe en Node.js-basert applikasjon som etablerer eksterne tilkoblinger for å be om en ressurs basert på parameterne eller dataene til inndataforespørselen, men applikasjonen er ikke spesifikt navngitt eller detaljert. Selv om du finner applikasjoner som laster inn ressurser basert på de angitte IP-adressene, er det ikke helt klart hvordan sårbarheten i praksis kan utnyttes uten å koble til et lokalt nettverk eller uten å få kontroll over «speilvendte» IP-adresser.

Forskerne antar bare at eiere av 87.0.0.1 (Telecom Italia) og 0177.0.0.1 (Brasil Telecom) er i stand til å omgå tilgangsbegrensningen til 127.0.0.1. Et mer realistisk scenario er å utnytte sårbarheten til å omgå ulike blokkeringslister på applikasjonssiden. Problemet kan også brukes til å dele definisjonen av intranettområder i NPM-modulen "privat-ip".

Kilde: opennet.ru

Legg til en kommentar