Kwetsbaarheid in het node-netmask NPM-pakket dat in 270 projecten wordt gebruikt

Het node-netmask NPM-pakket, dat ongeveer 3 miljoen downloads per week heeft en wordt gebruikt als afhankelijkheid van meer dan 270 projecten op GitHub, heeft een kwetsbaarheid (CVE-2021-28918) waardoor het controles kan omzeilen die het netmasker gebruiken om het voorkomen te bepalen voor adresbereiken of voor filtering. Het probleem is opgelost in de release van node-netmask 2.0.0.

De kwetsbaarheid maakt het mogelijk om een ​​extern IP-adres te behandelen als een adres van het interne netwerk en omgekeerd, en met een bepaalde logica van het gebruik van de node-netmask-module in de applicatie om SSRF (Server-side request forgery), RFI uit te voeren (Remote File Inclusion) en LFI-aanvallen (Local File Inclusion) om toegang te krijgen tot bronnen op het interne netwerk en externe of lokale bestanden op te nemen in de uitvoeringsketen. Het probleem is dat volgens de specificatie adresreekswaarden die beginnen met een nul moeten worden geïnterpreteerd als octale getallen, maar de node-netmask-module houdt hier geen rekening mee en behandelt ze als decimale getallen.

Een aanvaller kan bijvoorbeeld een lokale bron opvragen door de waarde "0177.0.0.1" op te geven, wat overeenkomt met "127.0.0.1", maar de module "node-netmask" zal de nul negeren en 0177.0.0.1 behandelen als " 177.0.0.1", wat in de applicatie bij het evalueren van toegangsregels niet mogelijk zal zijn om de identiteit vast te stellen met “127.0.0.1”. Op dezelfde manier kan een aanvaller het adres “0127.0.0.1” opgeven, dat identiek moet zijn aan “87.0.0.1”, maar dat in de module “node-netmask” zal worden behandeld als “127.0.0.1”. Op dezelfde manier kunt u de controle op toegang tot intranetadressen bedriegen door waarden als “012.0.0.1” op te geven (equivalent aan “10.0.0.1”, maar wordt tijdens de controle verwerkt als 12.0.0.1).

De onderzoekers die het probleem hebben geïdentificeerd, noemen het probleem catastrofaal en geven verschillende aanvalsscenario's, maar de meeste zien er speculatief uit. Er wordt bijvoorbeeld gesproken over de mogelijkheid om een ​​op Node.js gebaseerde applicatie aan te vallen die externe verbindingen tot stand brengt om een ​​bron aan te vragen op basis van de parameters of gegevens van het invoerverzoek, maar de applicatie heeft geen specifieke naam of details. Zelfs als je applicaties aantreft die bronnen laden op basis van de ingevoerde IP-adressen, is het niet helemaal duidelijk hoe de kwetsbaarheid in de praktijk kan worden uitgebuit zonder verbinding te maken met een lokaal netwerk of zonder controle te krijgen over ‘spiegel’-IP-adressen.

De onderzoekers gaan er alleen van uit dat eigenaren van 87.0.0.1 (Telecom Italia) en 0177.0.0.1 (Brasil Telecom) de toegangsbeperking tot 127.0.0.1 kunnen omzeilen. Een realistischer scenario is het misbruiken van de kwetsbaarheid om verschillende blokkeerlijsten aan de applicatiezijde te omzeilen. Het probleem kan ook worden toegepast op het delen van de definitie van intranetbereiken in de NPM-module "private-ip".

Bron: opennet.ru

Voeg een reactie