Zraniteľnosť v NPM balíčku node-netmask, ktorý sa používa v 270 tisíc projektoch

V NPM balíčku node-netmask, ktorý má približne 3 milióny stiahnutí týždenne a slúži ako závislosť pre viac ako 270 tisíc projektov na GitHub, bola zistená zraniteľnosť (CVE-2021-28918), ktorá umožňuje obísť kontroly, v ktorých sa sieťová maska používa na určenie príslušnosti do rozsahov adries alebo na filtrovanie. Problém bol vyriešený vo verzii node-netmask 2.0.0.

Zraniteľnosť umožňuje spracovanie vonkajšej IP adresy ako adresy z vnútornej siete a naopak, a pri určitej logike používania modulu node-netmask v aplikácii vykonať útoky SSRF (Server-side request forgery), RFI (Remote File Inclusion) a LFI (Local File Inclusion) na prístup k zdrojom vo vnútornej sieti a začlenenie do vykonávacieho reťazca externých alebo lokálnych súborov. Problém spočíva v tom, že podľa špecifikácie by sa prístupové hodnoty adries začínajúce nulou mali interpretovať ako osmičkové čísla, ale modul „node-netmask“ túto vlastnosť nezohľadňuje a spracováva ich ako desiatkové čísla.

Napríklad, útočník môže požadovať lokálny zdroj uvedením hodnoty „0177.0.0.1“, ktorá zodpovedá „127.0.0.1“, ale modul „node-netmask“ vyhodí nulu a spracuje 0177.0.0.1 ako „177.0.0.1“, čo v aplikácii pri vyhodnocovaní pravidiel prístupu neumožní určiť rovnosť s „127.0.0.1“. Podobne môže útočník uviesť adresu „0127.0.0.1“, ktorá by mala byť rovná „87.0.0.1“, ale v module „node-netmask“ bude spracovaná ako „127.0.0.1“. Rovnako je možné oklamať kontrolu prístupu k intranetu, ak sa uvedú hodnoty ako „012.0.0.1“ (ekvivalent „10.0.0.1“, ale pri kontrole bude spracovaná ako 12.0.0.1).

Výskumníci, ktorí problém identifikovali, označili problém za katastrofický a uviedli niekoľko scenárov útokov, ale väčšina z nich sa zdá byť hypotetická. Napríklad, hovorí sa o možnosti útoku na aplikáciu postavenú na Node.js, ktorá nadväzuje vonkajšie spojenia za účelom požiadania o zdroj na základe parametrov alebo údajov z požiadavky, ale konkrétna aplikácia nie je pomenovaná a nie je podrobne rozoberaná. Aj keby sa našli aplikácie, ktoré vykonávajú sťahovanie zdrojov na základe zadaných IP adresy, nie je úplne jasné, ako je možné zraniteľnosť prakticky využiť bez pripojenia k lokálnej sieti alebo bez získania kontroly nad „zrkadlovými“ IP adresami.

Vedci len predpokladajú, že vlastníci 87.0.0.1 (Telecom Italia) a 0177.0.0.1 (Brasil Telecom) majú možnosť obísť obmedzenie prístupu k 127.0.0.1. Realistickejším scenárom je využitie zraniteľnosti na obídenie rôznych blokovacích zoznamov implementovaných na strane aplikácie. Problém sa tiež môže využiť na výmenu definície intranetových rozsahov v NPM module „private-ip“.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster