Luka w pakiecie NPM pac-resolver z 3 milionami pobrań tygodniowo

Pakiet pac-resolver NPM, który ma ponad 3 miliony pobrań tygodniowo, ma lukę (CVE-2021-23406), która umożliwia wykonanie jego kodu JavaScript w kontekście aplikacji podczas wysyłania żądań HTTP z projektów Node.js, które obsługuje funkcję automatycznej konfiguracji serwera proxy.

Pakiet pac-resolver analizuje pliki PAC zawierające skrypt automatycznej konfiguracji serwera proxy. Plik PAC zawiera zwykły kod JavaScript z funkcją FindProxyForURL, która definiuje logikę wyboru serwera proxy w zależności od hosta i żądanego adresu URL. Istota podatności polega na tym, że do wykonania tego kodu JavaScript w pac-resolver wykorzystano API VM udostępnione w Node.js, które pozwala na wykonanie kodu JavaScript w innym kontekście silnika V8.

Podany interfejs API jest wyraźnie oznaczony w dokumentacji jako nieprzeznaczony do uruchamiania niezaufanego kodu, ponieważ nie zapewnia całkowitej izolacji uruchamianego kodu i umożliwia dostęp do oryginalnego kontekstu. Problem rozwiązano w wersji pac-resolver 5.0.0, w której przeniesiono tak, aby korzystała z biblioteki vm2, która zapewnia wyższy poziom izolacji odpowiedni do uruchamiania niezaufanego kodu.

Luka w pakiecie NPM pac-resolver z 3 milionami pobrań tygodniowo

Korzystając z podatnej na ataki wersji pac-resolver, osoba atakująca poprzez przesłanie specjalnie zaprojektowanego pliku PAC może uzyskać wykonanie swojego kodu JavaScript w kontekście kodu projektu wykorzystującego Node.js, jeśli projekt ten korzysta z bibliotek mających zależności z pac-resolverem. Najpopularniejszą z problematycznych bibliotek jest Proxy-Agent, wymieniona jako zależna od 360 projektów, w tym urllib, aws-cdk, mailgun.js i firebase-tools, z łączną liczbą ponad trzech milionów pobrań tygodniowo.

Jeśli aplikacja zależna od narzędzia pac-resolver ładuje plik PAC dostarczony przez system obsługujący protokół automatycznej konfiguracji proxy WPAD, wówczas osoby atakujące z dostępem do sieci lokalnej mogą wykorzystać dystrybucję ustawień proxy za pośrednictwem DHCP, aby wstawić złośliwe pliki PAC.

Źródło: opennet.ru

Dodaj komentarz