CRITICAL🇬🇧 English

CVE-2019-5477

Command injection w Nokogiri v1.10.3 przez metodę load_file

CVSS 9.8v3.1pub. 2019-08-16upd. 2024-11-21

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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.

Kogo dotyczy

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.

Uwagi

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 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Canonical Ubuntu

    OS
    Canonical
    16.0418.0419.0419.10
  • Debian

    OS
    Debian
    10.08.0
  • Nokogiri

    APP
    Nokogiri
    ≤ 1.10.3
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
Command Injection
CWE
Referencje

Powiązane podatności

CVE-2026-24061CRITICAL9.8⚠ KEVPL ✓ten sam produkt

GNU Inetutils telnetd: ominięcie uwierzytelnienia przez zmienną USER

CVE-2025-32463CRITICAL9.3⚠ KEVPL ✓ten sam produkt

Sudo: eskalacja uprawnień do root poprzez opcję --chroot (CVE-2025-32463)

CVE-2025-49113CRITICAL9.9⚠ KEVPL ✓ten sam produkt

RCE przez deserializację PHP w Roundcube Webmail (parametr _from)

CVE-2025-32433CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Erlang/OTP SSH — nieuwierzytelniony RCE (CVSS 10.0)

CVE-2025-24201CRITICAL10.0⚠ KEVPL ✓ten sam produkt

Apple WebKit: out-of-bounds write umożliwiający ucieczkę z sandbox przeglądarki