Sårbarhet i nod-nätmask NPM-paketet som används i 270 tusen projekt

Node-netmask NPM-paketet, som har cirka 3 miljoner nedladdningar per vecka och används som ett beroende av mer än 270 tusen projekt på GitHub, har en sårbarhet (CVE-2021-28918) som gör att det kan kringgå kontroller som använder nätmasken för att fastställa förekomsten av adressintervall eller för filtrering. Problemet är åtgärdat i versionen av node-netmask 2.0.0.

Sårbarheten gör det möjligt att behandla en extern IP-adress som en adress från det interna nätverket och vice versa, och med en viss logik att använda nod-nätmaskmodulen i applikationen för att utföra SSRF (Server-side request forgery), RFI (Remote File Inclusion) och LFI (Local File Inclusion) attacker ) för att komma åt resurser på det interna nätverket och inkludera externa eller lokala filer i exekveringskedjan. Problemet är att enligt specifikationen ska adresssträngvärden som börjar med en nolla tolkas som oktala tal, men nod-nätmaskmodulen tar inte hänsyn till detta och behandlar dem som decimaltal.

Till exempel kan en angripare begära en lokal resurs genom att ange värdet "0177.0.0.1", vilket motsvarar "127.0.0.1", men modulen "nod-nätmask" kommer att kassera noll, och behandla 0177.0.0.1" som " 177.0.0.1", vilket i applikationen vid utvärdering av åtkomstregler inte kommer att vara möjligt att fastställa identitet med "127.0.0.1". På liknande sätt kan en angripare ange adressen "0127.0.0.1", som ska vara identisk med "87.0.0.1", men kommer att behandlas som "127.0.0.1" i modulen "nod-nätmask". På samma sätt kan du lura kontrollen för åtkomst till intranätadresser genom att ange värden som "012.0.0.1" (motsvarande "10.0.0.1", men kommer att behandlas som 12.0.0.1 under kontroll).

Forskarna som identifierade problemet kallar problemet katastrofalt och ger flera attackscenarier, men de flesta av dem ser spekulativa ut. Till exempel talar den om möjligheten att attackera en Node.js-baserad applikation som upprättar externa anslutningar för att begära en resurs baserat på parametrarna eller data för ingångsbegäran, men applikationen är inte specifikt namngiven eller detaljerad. Även om man hittar applikationer som laddar resurser utifrån de angivna IP-adresserna är det inte helt klart hur sårbarheten i praktiken kan utnyttjas utan att ansluta till ett lokalt nätverk eller utan att få kontroll över ”spegla” IP-adresser.

Forskarna antar bara att ägare till 87.0.0.1 (Telecom Italia) och 0177.0.0.1 (Brasil Telecom) kan kringgå åtkomstbegränsningen till 127.0.0.1. Ett mer realistiskt scenario är att utnyttja sårbarheten för att kringgå olika blocklistor på applikationssidan. Problemet kan också tillämpas på att dela definitionen av intranätintervall i NPM-modulen "privat-ip".

Källa: opennet.ru

Lägg en kommentar