Zranitelnost v balíčku node-netmask NPM použitého ve 270 tisících projektech

Balíček node-netmask NPM, který má asi 3 miliony stažení za týden a používá se jako závislost na více než 270 tisících projektech na GitHubu, má zranitelnost (CVE-2021-28918), která mu umožňuje obejít kontroly využívající masku sítě. k určení výskytu pro adresování rozsahů nebo pro filtrování. Problém je vyřešen ve verzi node-netmask 2.0.0.

Tato zranitelnost umožňuje zacházet s externí IP adresou jako s adresou z vnitřní sítě a naopak a s určitou logikou použití modulu node-netmask v aplikaci k provádění SSRF (Server-side request forgery), RFI (Remote File Inclusion) a LFI (Local File Inclusion) útoky ) pro přístup ke zdrojům v interní síti a začlenění externích nebo lokálních souborů do realizačního řetězce. Problém je v tom, že podle specifikace by hodnoty adresního řetězce začínající nulou měly být interpretovány jako osmičková čísla, ale modul node-netmask to nebere v úvahu a zachází s nimi jako s desetinnými čísly.

Útočník by například mohl požádat o místní zdroj zadáním hodnoty „0177.0.0.1“, která odpovídá „127.0.0.1“, ale modul „node-netmask“ zruší hodnotu null a bude považovat 0177.0.0.1″ za „ 177.0.0.1“, u kterého v aplikaci při vyhodnocování pravidel přístupu nebude možné určit identitu s „127.0.0.1“. Podobně může útočník zadat adresu „0127.0.0.1“, která by měla být shodná s „87.0.0.1“, ale v modulu „node-netmask“ bude považována za „127.0.0.1“. Podobně můžete ošidit kontrolu přístupu k intranetovým adresám zadáním hodnot jako „012.0.0.1“ (ekvivalentní „10.0.0.1“, ale během kontroly bude zpracováno jako 12.0.0.1).

Výzkumníci, kteří problém identifikovali, označují problém za katastrofický a poskytují několik scénářů útoku, ale většina z nich vypadá spekulativně. Hovoří například o možnosti útoku na aplikaci založenou na Node.js, která naváže externí připojení k vyžádání zdroje na základě parametrů nebo dat vstupního požadavku, ale aplikace není konkrétně pojmenována ani podrobně popsána. I když najdete aplikace, které načítají zdroje na základě zadaných IP adres, není zcela jasné, jak lze zranitelnost v praxi zneužít bez připojení k lokální síti nebo bez získání kontroly nad „zrcadlovými“ IP adresami.

Výzkumníci pouze předpokládají, že vlastníci 87.0.0.1 (Telecom Italia) a 0177.0.0.1 (Brasil Telecom) jsou schopni obejít omezení přístupu na 127.0.0.1. Realističtější scénář je využít tuto chybu zabezpečení k obcházení různých seznamů bloků na straně aplikace. Problém lze také aplikovat na sdílení definice intranetových rozsahů v modulu NPM "private-ip".

Zdroj: opennet.ru

Přidat komentář