Objavljen je izdanak glavne grane nginx 1.31.0, u okviru kojeg se nastavlja razvoj novih mogućnosti, kao i izdavanje paralelno podržavane stabilne grane nginx 1.30.1, kojoj se dodaju samo izmjene vezane uz ispravke ozbiljnih grešaka i ranjivosti. U ažuriranjima je ispravljeno 6 ranjivosti, od kojih je najopasnija ona koja omogućuje daljinsko izvršenje koda putem slanja posebno formirane HTTP-zahtjeva. Do trenutka pisanja ovog članka ispravci za angie i freenginx nisu objavljeni.
Ranjivost (CVE-2026-42945), kojoj je dodijeljen kritični nivo opasnosti, uzrokovana je prekomjernim punjenjem bafera u modu ngx_http_rewrite_module, koje se može iskoristiti za izvršenje koda s pravima radnog procesa nginx putem slanja HTTP-zahtjeva s posebno oblikovanim URI-jem. Problem se manifestira u konfiguracijama s direktivom „rewrite“, gdje se u regularnim izrazima koriste zamjenske varijable uz pomoć neimenovanih varijabli (npr., $1 i $2), pod uvjetom da u zamjenskoj stringu postoji simbol „?“. Primjer ranjive konstrukcije: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
Izrazi s imenovanim zamjenama nisu podložni ranjivosti. Na primjer, ranjivost ne utječe na konstrukcije: rewrite ^\/users\/(?[0-9]+)\/profile\/(?
Ranjivost postoji od verzije 0.6.27, objavljene u ožujku 2008. godine. Uzrok pojave ranjivosti bio je taj što je bafer bio alociran s pretpostavkom da će biti zapisana neescape-ovana podatak, dok su se zapravo kopirali podaci nakon izvršenja escapiranja posebnih simbola, čija je veličina bila veća jer se svaki simbol „+“, „%“ i „&“ kodirao ne jednim, već tri bajta. Takva neslaganja nastajala su jer je u prisutnosti simbola „?“ u pravilu rewrite postavljen flag „e->is_args“, koji uključuje escapiranje, ali se alokacija bafera obavljala s resetiranim flagom, u kojem escapiranje nije bilo primijenjeno.
Ostale ranjivosti:
- CVE-2026-42926 — mogućnost zamjene podataka napadača u proksiranom zahtjevu pri upotrebi u postavkama direktive „proxy_set_body“ i pozivom na backend kroz HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — pristup memoriji nakon oslobađanja (use-after-free) u modulu ngx_http_ssl_module, što se javlja prilikom obrade odgovora od DNS poslužitelja u konfiguracijama s direktivom «ssl_ocsp».
- CVE-2026-42946 — čitanje izvan granica bafera u modulima ngx_http_uwsgi_module i ngx_http_scgi_module, što se pojavljuje prilikom obrade posebno oblikovanog odgovora. Problem može dovesti do curenja sadržaja memorije radnog procesa ili njegovog naglog završetka.
- CVE-2026-42934 — čitanje izvan granica bafera u radnom procesu, što se javlja prilikom obrade odgovora s dekodiranjem iz UTF-8 kodiranja pri korištenju direktive «charset_map». Problem može dovesti do curenja sadržaja memorije radnog procesa ili njegovog naglog završetka.
- CVE-2026-40460 — ranjivost u implementaciji HTTP/3 protokola koja omogućava spoofing IP adrese za zaobilaženje ovlaštenja ili ograničenja.
Poboljšanja dodana u izdanju nginx 1.31.0:
- Uključen je modul ngx_http_tunnel_module, koji implementira mogućnost rada kao proxy («forward proxy»), preusmjeravajući zahtjeve na drugi poslužitelj kada klijent koristi metodu HTTP/1.1 CONNECT. Moguće je postaviti autentifikaciju pristupa proxyju korištenjem direktiva «auth_basic», «satisfy» i «auth_delay».
- U blok «upstream» dodana je direktiva «least_time», koja uključuje metodu uravnoteženja opterećenja koja šalje zahtjev poslužitelju s najmanjim prosječnim vremenom odgovora i najmanjim brojem aktivnih konekcija.
- U modul «stream_proxy» dodana je direktiva «proxy_ssl_alpn» za definiranje popisa protokola dopuštenih u ALPN ekstenziji prilikom povezivanja s proxy poslužiteljem. Na primjer: «proxy_ssl_alpn h2 http/1.1».
- Osigurano je odbijanje zahtjeva putem HTTP/2 i HTTP/3 protokola, koji uključuju zaglavlja «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade».
- U modulu ngx_http_dav_module osigurano je odbijanje zahtjeva COPY i MOVE sa ponovljenim izvorom i ciljnim resursom ili ugniježdenim kolekcijama.
- Nivo evidentiranja grešaka SSL «invalid alert», «record layer failure» i «SSL alert number N» smanjen je s «crit» na «info».
- U konfiguracijski skript dodan je parametar «—without-http_upstream_sticky_module» za isključivanje kompilacije modula http_upstream_sticky_module (parametar «—without-http_upstream_sticky» označen je kao zastario).
Dopuna: Dostupan je exploit za RCE ranjivost u ngx_http_rewrite_module.
Izvor: opennet.ru
