Podatność typu command injection w bibliotece Nokogiri w wersji 1.10.3 i wcześniejszych umożliwia zdalnemu atakującemu wykonanie dowolnych poleceń systemowych w podprocesie. Zagrożenie jest poważne ze względu na brak wymagań uwierzytelnienia i możliwość pełnego przejęcia kontroli nad procesem.
▸ Pokaż oryginał (EN)
A command injection vulnerability in Nokogiri v1.10.3 and earlier allows commands to be executed in a subprocess via Ruby's `Kernel.open` method. Processes are vulnerable only if the undocumented method `Nokogiri::CSS::Tokenizer#load_file` is being called with unsafe user input as the filename. This vulnerability appears in code generated by the Rexical gem versions v1.0.6 and earlier. Rexical is used by Nokogiri to generate lexical scanner code for parsing CSS queries. The underlying vulnerability was addressed in Rexical v1.0.7 and Nokogiri upgraded to this version of Rexical in Nokogiri v1.10.4.
Podatność wynika z kodu wygenerowanego przez bibliotekę Rexical w wersji 1.0.6 i wcześniejszych, której Nokogiri używa do generowania kodu skanera leksykalnego do parsowania zapytań CSS. Niezdokumentowana metoda `Nokogiri::CSS::Tokenizer#load_file`, gdy zostanie wywołana z niezaufanymi danymi użytkownika jako nazwą pliku, przekazuje tę wartość do metody `Kernel.open` w języku Ruby. Metoda `Kernel.open` ma szczególne zachowanie — jeśli przekazany ciąg znaków zaczyna się od znaku `|`, interpretuje go jako polecenie systemowe i uruchamia je w podprocesie, co prowadzi do wykonania command injection. Podatność została naprawiona w Rexical v1.0.7, a Nokogiri zaktualizował zależność do tej wersji w wydaniu v1.10.4.
Atakujący może wykonać dowolne polecenia systemowe z uprawnieniami procesu obsługującego aplikację, co potencjalnie prowadzi do naruszenia poufności, integralności danych oraz dostępności systemu (pełne RCE). Warunkiem koniecznym jest wywołanie metody `load_file` z niezaufanymi danymi wejściowymi dostarczonymi przez użytkownika.
Należy zaktualizować Nokogiri do wersji 1.10.4 lub nowszej, która zawiera Rexical v1.0.7 z poprawką usuwającą podatność. W przypadku niemożności natychmiastowej aktualizacji należy upewnić się, że metoda `Nokogiri::CSS::Tokenizer#load_file` nie jest wywoływana z danymi pochodzącymi od użytkownika.
Nokogiri w wersji 1.10.3 i wcześniejszych; podatność dotyczy wyłącznie aplikacji, które wywołują metodę `Nokogiri::CSS::Tokenizer#load_file` z danymi kontrolowanymi przez użytkownika. Wymienione są również systemy Canonical Ubuntu Linux korzystające z podatnych wersji pakietu.
Podatność została zgłoszona przez społeczność za pośrednictwem platformy HackerOne (raport #650835). Podatny kod nie był częścią publicznego API Nokogiri — metoda `load_file` jest niezdokumentowana, co ogranicza realną powierzchnię ataku do aplikacji jawnie korzystających z tej metody.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HCanonical Ubuntu
OSCanonical16.0418.0419.0419.10Debian
OSDebian10.08.0Nokogiri
APPNokogiri≤ 1.10.3
Powiązane podatności
GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER
Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)
RCE przez deserializację PHP w Roundcube Webmail (parametr _from)
Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)
Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki