Dwadzieścia lat luk w Nginx: rift każe łatać już dziś!

Dwadzieścia lat luk w Nginx: rift każe łatać już dziś!

Maj 14, 2026 nginx security cve-2026-42945 nginx rift web server vulnerabilities infrastructure security buffer overflow rewrite module zero-day response production security

Dwadzieścia lat luk w Nginx: NGINX Rift zmusza do łatania już dziś

Stare kody to zawsze ryzyko. Ale co jeśli taka dziura czai się w najpopularniejszym serwerze WWW przez prawie dwie dekady?

F5 wypuściło poprawki dla czterech luk w Nginx. Najgroźniejsza z nich, CVE-2026-42945 zwana NGINX Rift, odkryta przez depthfirst, każe każdemu adminowi ruszyć z aktualizacjami.

Idealna burza: stary kod, świeże problemy

Co czyni tę lukę tak groźną? Rozbijmy to na części.

Sama luka: Przepełnienie bufora heap w module rewrite. Siedzi tam od wersji 0.6.27 z 2008 roku. To czasy bez Dockera, bez smartfonów w kieszeniach i gdy Apache jeszcze rządził.

Jak zaatakować: Wystarczy jeden spreparowany request HTTP. Bez haseł, bez phishingu. Prosty strzał i po sprawie.

Skutki: Bez ASLR to pełna egzekucja kodu zdalnego. Z ASLR – pewny DoS przez ciągłe restarty workerów.

Ocena CVSS: 9.2, czyli krytyczna. Blisko maksimum.

Dlaczego to takie ważne?

Jak to przetrwało tyle lat? Nginx w module rewrite używa PCRE do dopasowywania URL-i. Gdy reguły z unnamed captures ($1, $2) idą za kolejnym rewrite, if czy set, kod wyjdzie poza pamięć heap. Klasyczne przepełnienie, które powinno paść na reviewie.

To pokazuje: nawet topowe projekty open source mają swoje trupy w szafie. Nginx stoi na milionach serwerów. Stary błąd = wielki zasięg.

Kto musi działać natychmiast?

Użytkownicy NGINX Plus: Wersje R32–R36? Łataj do R32 P6 lub R36 P4.

Nginx Open Source: Od 1.0.0 do 1.30.0 – podatne. Przejdź na 1.30.1 lub 1.31.0.

Stare relikty: Wersje 0.6.27–0.9.7? Bez patchy. Czas na pełną migrację.

Nie możesz załatać od razu? Tymczasowy fix

W trakcie freeze'a lub z legacy? Zmień unnamed captures na named w rewrite.

Zamiast $1 używaj (?<nazwa>...) i $nazwa. To blokuje ścieżkę ataku, ale nie leczy rdzenia.

Przykład:

# Ryzykowne
rewrite ^/user/([0-9]+)$ /profile?id=$1 last;

# Tymczasowo bezpieczne
rewrite ^/user/(?<id>[0-9]+)$ /profile?id=$id last;

Plaster, nie lek. Łataj ASAP.

Pozostałe trzy CVE z paczki

Oprócz Rift F5 załatwiło:

  • CVE-2026-42946 (CVSS 8.3 Wysoka): Nadmierne alokacje pamięci w SCGI/uWSGI – DoS w proxy.
  • CVE-2026-40701 (CVSS 6.3 Średnia): Use-after-free w SSL przy ssl_verify_client i ssl_ocsp.
  • CVE-2026-42934 (CVSS 4.8 Średnia): Odczyt poza granicami w module charset.

Nie tak pilne, ale ogarnij przy okazji.

Lekcje dla bezpieczeństwa infrastruktury

Ta historia przypomina:

  1. Popularność nie chroni. Nginx wszędzie, a bug przeżył 18 lat.
  2. Starość to nie zaleta. Stary kod gromadzi błędy.
  3. Bezpieczeństwo zależy od najsłabszego ogniwa. Jeden niezałatawany Nginx psuje całość.
  4. Monitoruj. Nawet z ASLR DoS działa od razu.

Podsumowanie

Masz Nginx? Te patche to priorytet numer jeden. Starość luki, prostota ataku i wysoki CVSS mówią: działaj.

Testuj w stagingu, ale w produkcji nie czekaj. Ryzyko dziury bije ryzyko update'u stabilnego Nginx.

A przy okazji sprawdź konfiguracje rewrite i wersje na serwerach. Czas na porządki.

Bądź bezpieczny.

Read in other languages:

RU BG EL CS UZ TR SV FI RO PT NB NL HU IT FR ES DE DA ZH-HANS EN