Aktualizace nginx 1.31.0 s odstraněním RCE zranitelnosti, která je zneužívána přes HTTP požadavek

Byla vydána hlavní verze nginx 1.31.0, v rámci které pokračuje rozvoj nových možností, a také byla vydána paralelně podporovaná stabilní verze nginx 1.30.1, do které jsou zapracovávány pouze změny související s odstraněním závažných chyb a zranitelností. V aktualizacích bylo odstraněno 6 zranitelností, z nichž ta nejnebezpečnější umožňuje vzdálené provádění kódu prostřednictvím zaslání speciálně formulovaného HTTP požadavku. Opravy pro angie a freenginx nebyly v době psaní novinky zveřejněny.

Zranitelnost (CVE-2026-42945), které byla přidělena kritická úroveň nebezpečí, je způsobena přetečením bufferu v modulu ngx_http_rewrite_module, který může být zneužit k provádění kódu s oprávněním pracovního procesu nginx prostřednictvím zaslání HTTP požadavku se speciálně formulovaným URI. Problém se projevuje v konfiguracích s direktivou „rewrite“, kde se v regulárních výrazech používají zástupné proměnné (například $1 a $2), pokud ve výměnním řetězci vystupuje znak „?“ Příklad zranitelné konstrukce: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;

Výrazy s pojmenovanými zástupnými proměnnými nejsou zranitelné. Například zranitelnost se netýká konstrukcí: rewrite ^\/users\/(?[0-9]+)\/profile\/(?

.*)$ \/profile.php?id=$user_id&tab=$section last;

Zranitelnost je přítomna od verze 0.6.27, vydané v březnu 2008. Příčinou vzniku zranitelnosti bylo to, že buffer byl alokován s předpokladem, že do něj budou zapisována neescapovaná data, ale ve skutečnosti byla kopírována data po provedení escape speciálních znaků, jejichž velikost byla větší, protože každý znak „+“, „%“ a „&“ byl kódován nikoli jedním, ale třemi bajty. Takové nesoulady vznikaly kvůli tomu, že při přítomnosti znaku „?“ v pravidle rewrite byl nastaven příznak „e->is_args“, při kterém bylo aktivováno escapování, ale alokace bufferu se uskutečnila při resetovaném příznaku, kdy escapování nebylo aplikováno.

Další zranitelnosti:

  • CVE-2026-42926 — možnost vkládání dat útočníka do proxy požadavku při použití v nastavení direktivy „proxy_set_body“ a při přístupu k backendu prostřednictvím HTTP/2 (proxy_http_version=2).
  • CVE-2026-40701 — přístup k paměti po jejím uvolnění (use-after-free) v modulu ngx_http_ssl_module, ke kterému dochází při zpracování odpovědí od DNS serveru v konfiguracích s direktivou „ssl_ocsp“.
  • CVE-2026-42946 — čtení z oblasti mimo buffer v modulech ngx_http_uwsgi_module a ngx_http_scgi_module, ke kterému dochází při zpracování úmyslně upravené odpovědi. Tento problém může vést k úniku obsahu paměti pracovníka nebo k jeho havárii.
  • CVE-2026-42934 — čtení z oblasti mimo buffer v pracovníku, ke kterému dochází při zpracování odpovědí s dekódováním z kódování UTF-8 při použití direktivy „charset_map“. Tento problém může vést k úniku obsahu paměti pracovního procesu nebo k jeho havárii.
  • CVE-2026-40460 — zranitelnost v implementaci protokolu HTTP/3, která umožňuje spoofing IP adres pro obcházení autorizace nebo omezení.

Zlepšení přidaná v vydání nginx 1.31.0:

  • Byl zahrnut modul ngx_http_tunnel_module, který realizuje možnost práce jako proxy („forward proxy“), přesměrovávající požadavky na jiný server, když zákazník používá metodu HTTP/1.1 CONNECT. Možnost nastavení autentizace pro přístup k proxy pomocí direktiv „auth_basic“, „satisfy“ a „auth_delay“.
  • Do bloku „upstream“ byla přidána direktiva „least_time“, která zahrnuje metodu vyvažování zátěže s předáním požadavku serveru s nejmenším průměrným časem odezvy a nejmenším počtem aktivních spojení.
  • Do modulu „stream_proxy“ byla přidána direktiva „proxy_ssl_alpn“ pro určení seznamu protokolů povolených v rozšíření ALPN při připojení k proxy serveru. Například: „proxy_ssl_alpn h2 http/1.1“.
  • Bylo zajištěno odmítnutí požadavků podle protokolů HTTP/2 a HTTP/3, které zahrnují hlavičky „Connection“, „Proxy-Connection“, „Keep-Alive“, „Transfer-Encoding“, „Upgrade“.
  • V modulu ngx_http_dav_module bylo zajištěno odmítnutí požadavků COPY a MOVE s opakujícími se zdrojovými a cílovými zdroji nebo vnořenými kolekcemi.
  • Úroveň logování chyb SSL „invalid alert“, „record layer failure“ a „SSL alert number N“ byla snížena z „crit“ na „info“.
  • Do skriptu configure byl přidán parametr „—without-http_upstream_sticky_module“ pro deaktivaci kompilace modulu http_upstream_sticky_module (parametr „—without-http_upstream_sticky“ byl označen jako zastaralý).

Doplnění: K dispozici je exploit pro RCE zranitelnost v ngx_http_rewrite_module.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster