Dvacet let děr v Nginx: Proč chyba NGINX Rift žádá okamžitou záplatu
Osmnáct let stará chyba v Nginx: Proč NGINX Rift znamená okamžité záplaty
Všichni víme, že starý kód nosí rizika. Ale co když ta chyba čeká v jednom z nejoblíbenějších webových serverů na internetu už osmnáct let?
F5 právě vydalo záplaty pro čtyři zranitelnosti v Nginx. Nejvážnější z nich, CVE-2026-42945 s přezdívkou NGINX Rift, objevená firmou depthfirst, nutí všechny týmy spustit aktualizace hned teď.
Jak vznikl tenhle problém
Podívejme se, co dělá tuhle chybu tak nebezpečnou:
Jádro problému: Heap buffer overflow v modulu rewrite. Schovává se tam od verze 0.6.27 z roku 2008. Tehdy ještě nebyly kontejnery, smartphony byly vzácnost a Nginx teprve stoupal.
Jak útočník zaútočí: Stačí jeden vymyšlený HTTP požadavek. Žádné hesla, žádné triky. Jen tenhle požadavek a server je v maléru.
Dopad: Bez ASLR to znamená spuštění kódu na dálku. S ASLR? Spolehlivý DoS – workeři padají a restartují v nekonečném kruhu.
Hodnocení CVSS: 9.2, tedy kritické. Jen o fous krok od maximálního deseti.
Proč tohle přežilo tak dlouho
Jak je možné, že chyba zůstala nepovšimnuta dvacet let? Odpověď ukazuje slabinu i oblíbených projektů.
Rewrite modul v Nginx používá PCRE pro shody v URL. Pokud pravidla mají anonymní zachycení ($1, $2) a pak následuje další rewrite, if nebo set, kód přepíše heap paměť. Klasický buffer overflow, který měl projít revizí, ale neprošel.
Nginx běží na milionech serverů. Dlouhá životnost znamená obrovský dosah útoku. I top open-source projekty nejsou neomylné.
Koho se to týká
Uživatelé NGINX Plus: Verze R32 až R36 potřebují záplaty R32 P6 nebo R36 P4.
Open Source: Postižené jsou 1.0.0 až 1.30.0. Přejděte na 1.30.1 nebo 1.31.0 okamžitě.
Staré verze: Od 0.6.27 do 0.9.7 (dlouho EOL) záplat nejsou. Musíte plně upgradovat.
Dočasný workaround, pokud nemůžete hned
V change-freeze? Nahraďte anonymní zachycení pojmenovanými v rewrite pravidlech. Místo $1 použijte (?<id>...) a $id. To blokuje ten nebezpečný kódový cestu.
Příklad:
# Rizikové
rewrite ^/uzivatel/([0-9]+)$ /profil?id=$1 last;
# Bezpečnější (dočasně)
rewrite ^/uzivatel/(?<id>[0-9]+)$ /profil?id=$id last;
Tohle je jen náplast. Záplatu dejte co nejdřív.
Další tři CVEs v balíčku
Kromě NGINX Rift přišly záplaty i na tyto:
- CVE-2026-42946 (CVSS 8.3 High): Nadměrná alokace paměti v SCGI a uWSGI – DoS v proxy setupu.
- CVE-2026-40701 (CVSS 6.3 Medium): Use-after-free v SSL modulu při ssl_verify_client a ssl_ocsp.
- CVE-2026-42934 (CVSS 4.8 Medium): Čtení mimo hranice v charset modulu.
Žádná není tak akutní, ale řešte je brzy.
Lekce pro bezpečnost infrastruktury
Tenhle případ nám ukazuje tvrdé realitu:
- Popularita nechrání. Nginx je všude, přesto chyba přežila.
- Stáří není výhoda. Starý kód sbírá problémy.
- Patche jsou klíč. Jedna nezaktualizovaná instance ohrozí vše.
- Monitorujte. I s ASLR útočník snadno zasekne službu.
Shrnutí
Pokud máte Nginx, berte tyto záplaty jako nouzovku. Jednoduchý útok a obrovská vážnost NGINX Rift to dělají prioritou.
Aktualizujte tento týden. Testujte v stagingu, ale v produkci neotálejte. Riziko staré verze je horší než update stabilního systému.
A teď prohlédněte configy, rewrite pravidla a verze. Čas na audit. Buďte v bezpečí.