Een kwetsbaarheid in de veelgebruikte npm-package netmask raakt duizenden applicaties en repositories. Een beveiligingsupdate is inmiddels beschikbaar gemaakt. Netmask wordt gebruikt voor het verwerken of vergelijken van IPv4-adressen en Classless Inter-Domain Routing (CIDR)-blocks. Softwareplatform GitHub telt 279.000 respositories die er gebruik van maken.
Door het niet goed valideren van "octal strings" kan een ongeauthenticieerde remote aanvaller verschillende soorten aanvallen uitvoeren op packages en projecten die er gebruik van maken, zoals server-side request forgery (SSRF), remote file inclusion (RFI) en local file inclusion (LFI), aldus onderzoekers Victor Viale, Sick Codes, Kelly Kaoudis, John Jackson en Nick Sahler.
Ip-adressen kunnen in verschillende formaten worden weergegeven, bijvoorbeeld in een decimaal of octaal formaat. Meestal wordt het decimale formaat gebruikt. De kwetsbaarheid, CVE-2021-28918, doet zich voor bij decimale ip-adressen waar een 0 voor wordt geplaatst. Zo wordt ip-adres 127.0.0.1 normaal gebruikt voor localhost. Wanneer echter 0127.0.0.1 wordt gebruikt dan wordt dit vertaald naar 87.0.0.1.
Volgens de IETF-specificatie kunnen delen van een IPv4-adres als een octaal worden beschouwd als het adres met een 0 begint. Netmask negeert dit en gaat van het decimale formaat uit. Wanneer een applicatie wil controleren of een ip-adres binnen een bepaalde reeks hoort, gaat het fout met octale weergaven van IPv4-adressen.
"Een remote ongeauthenticeerde aanvaller kan lokale resources opvragen door middel van invoerdata 0177.0.0.1 (127.0.0.1), dat netmask als publiek ip-adres 177.0.0.1 beschouwt", aldus de onderzoekers. Die stellen dat een remote geauthenticeerde of ongeauthenticeerde aanvaller 0127.0.0.01 (87.0.0.1) als localhost kan opgeven, terwijl het eigenlijk een publiek ip-adres is waardoor LFI/RFI mogelijk wordt.
Tevens zou het mogelijk zijn om applicaties te omzeilen die netmask gebruiken om ip-adressen te filteren om te voorkomen dat die toegang tot een intranet, vpn of containers krijgen. Zo wordt 012.0.0.1 (10.0.0.1) door Netmask gezien als 12.0.0.1, wat weer een publiek ip-adres is. De kwetsbaarheid is aanwezig in netmask versie 1.1.0 en eerder en verholpen in versie 2.0.0.
Deze posting is gelocked. Reageren is niet meer mogelijk.