Chyba zabezpečení v balíčku pac-resolver NPM s 3 miliony stažení za týden

Balíček pac-resolver NPM, který má více než 3 miliony stažení za týden, má zranitelnost (CVE-2021-23406), která umožňuje spouštění jeho kódu JavaScript v kontextu aplikace při odesílání požadavků HTTP z projektů Node.js, které podporuje funkci automatické konfigurace proxy serveru.

Balíček pac-resolver analyzuje soubory PAC, které obsahují skript automatické konfigurace proxy. Soubor PAC obsahuje běžný kód JavaScript s funkcí FindProxyForURL, která definuje logiku pro výběr proxy v závislosti na hostiteli a požadované adrese URL. Podstatou této chyby zabezpečení je, že ke spuštění tohoto kódu JavaScript v pac-resolveru bylo použito rozhraní VM API poskytnuté v Node.js, které umožňuje spouštět kód JavaScript v jiném kontextu enginu V8.

Zadané API je v dokumentaci výslovně označeno jako neurčené pro spouštění nedůvěryhodného kódu, protože neposkytuje úplnou izolaci spouštěného kódu a umožňuje přístup k původnímu kontextu. Problém byl vyřešen v pac-resolveru 5.0.0, který byl přesunut tak, aby používal knihovnu vm2, která poskytuje vyšší úroveň izolace vhodnou pro spouštění nedůvěryhodného kódu.

Chyba zabezpečení v balíčku pac-resolver NPM s 3 miliony stažení za týden

Při použití zranitelné verze pac-resolveru může útočník prostřednictvím přenosu speciálně navrženého souboru PAC dosáhnout spuštění svého kódu JavaScript v kontextu kódu projektu využívajícího Node.js, pokud tento projekt používá knihovny, které závisí na pac-resolveru. Nejoblíbenější z problematických knihoven je Proxy-Agent, která je uvedena jako závislá na 360 projektech, včetně urllib, aws-cdk, mailgun.js a firebase-tools, celkem více než tři miliony stažení za týden.

Pokud aplikace, která je závislá na pac-resolveru, stáhne soubor PAC poskytovaný systémem, který podporuje protokol automatické konfigurace proxy WPAD, mohou útočníci s přístupem k místní síti použít distribuci nastavení proxy přes DHCP k vložení škodlivých souborů PAC.

Zdroj: opennet.ru

Přidat komentář