Nginx pÔhivaru versiooni 1.31.0 vÀljaanne on vormistatud, mille raames jÀtkuvad uusi vÔimalusi arendamine, samuti paralleelselt toetatava stabiilse versiooni 1.30.1 vÀljaanne, kuhu tehakse ainult tÔsiste vigade ja haavatavuste kÔrvaldamiseks vajalikke muudatusi. Uuendustes on kÔrvaldatud 6 haavatavust, millest kÔige ohtlikum vÔimaldab kaugelt koodi tÀitmist spetsiaalselt vormistatud HTTP-pÀringu saatmise kaudu. Angie ja freenginx jaoks ei ole uudise kirjutamise hetkel parandusi avaldatud.
Haavatavus (CVE-2026-42945), millele on antud kriitiline oht, on pĂ”hjustatud puhver ĂŒlevoolust ngx_http_rewrite_module moodulis, mida saab Ă€ra kasutada koodi tĂ€itmiseks nginx tööprotsessi Ă”igustes, saates HTTP-pĂ€ringu koos spetsiaalselt vormistatud URI-ga. Probleem ilmneb konfiguratsioonides, kus on kasutatud "rewrite" direktiivi, kus regulaaravaldises kasutatakse asendusi nimetud muutujate kaudu (nĂ€iteks $1 ja $2), tingimusel, et asendamiseks mĂ”eldud stringis on mĂ€rk "?". NĂ€ide haavatavast konstruktsioonist: rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;
Nimeliste asendustega konstruktsioonid ei ole haavatavad. NÀiteks haavatavus ei mÔjuta konstruktsioone: rewrite ^/users/(?<user_id>[0-9]+)/profile/(?<section>.*)$ /profile.php?id=$user_id&tab=$section last;
Haavatavus on olemas alates versioonist 0.6.27, mis avaldati mĂ€rtsis 2008. Haavatavuse pĂ”hjuseks on see, et puhver eraldati oletatavalt selleks, et sinna kirjutatakse mitte-escapitud andmed, kuid tegelikult kopeeriti andmed, mille formaat koosnes erisĂŒmbolite escaping'ust, mille suurus oli suurem, kuna iga mĂ€rk â+â, â%â ja â&â kodeeriti mitte ĂŒhe, vaid kolme baitiga. Selline diskrepants tekkis, kuna rewrite reegli puhul, kus on mĂ€rk â?â, seati lipp âe->is_argsâ, mille korral kĂ€ivitati escaping, kuid puhvri eraldamine tehtiäžșäș lippu, mille korral escaping'ut ei rakendatud.
Teised haavatavused:
- CVE-2026-42926 â rĂŒndaja andmete asendamise vĂ”imalus edastatud pĂ€ringus, kui kasutatakse direktiivi "proxy_set_body" seadeid ja pöördutakse vĂ”rgu kaudu bĂ€kendi poole HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 â juurdepÀÀs mĂ€lule selle vabastamise jĂ€rel (use-after-free) ngx_http_ssl_module moodulis, mis tekib DNS-serverilt saadud vastuste töötlemisel konfigureerimistes, kus on kasutatud direktiivi «ssl_ocsp».
- CVE-2026-42946 â mĂ€lualast lugemine ĂŒle piiri ngx_http_uwsgi_module ja ngx_http_scgi_module moodulites, mis tekib spetsiaalselt vormistatud vastuse töötlemisel. Probleem vĂ”ib pĂ”hjustada tööprotsessi mĂ€lusisalduse leket vĂ”i selle kokkukuulumise.
- CVE-2026-42934 â lugemine mĂ€lust ĂŒle piiri tööprotsessis, mis tekib vastuste töötlemisel UTF-8 kodeeringust dekodeerimisel, kui kasutada direktiivi «charset_map». Probleem vĂ”ib viia tööprotsessi mĂ€lusisalduse leketeni vĂ”i selle kokkukuulumiseni.
- CVE-2026-40460 â haavatavus HTTP/3 protokolli rakenduses, mis vĂ”imaldab petmist. IP-aadressid autoriseerimise vĂ”i piirangute ĂŒletamiseks.
Parandused, mis on lisatud nginx 1.31.0 vÀljaandesse:
- Sisse on viidud ngx_http_tunnel_module moodul, mis vĂ”imaldab töötada edastusproksi (forward proxy) reĆŸiimis, suunates kliendi pĂ€ringud teisele serverile, kasutades HTTP/1.1 CONNECT meetodit. Proksi kasutamise autentimise seadistamine on vĂ”imalik, kasutades direktiive «auth_basic», «satisfy» ja «auth_delay».
- Blookerisse «upstream» on lisatud direktiiv «least_time», mis hĂ”lmab laadimisjuhtimise meetodit, mis edastab pĂ€ringu serveri madalaima keskmise vastusaja ja kĂ”ige madalama aktiivsete ĂŒhenduste arvuga.
- «stream_proxy» moodulisse on lisatud direktiiv «proxy_ssl_alpn», et mÀÀrata lubatud protokollide loetelu ALPN laienduses proksitavasse serverisse ĂŒhenduse loomisel. NĂ€iteks: «proxy_ssl_alpn h2 http/1.1».
- On tagatud pĂ€ringute tagasilĂŒkkamine HTTP/2 ja HTTP/3 protokollide puhul, sealhulgas pĂ€istega «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade».
- ngx_http_dav_module moodulis on tagatud COPY ja MOVE pĂ€ringute tagasilĂŒkkamine, mis sisaldavad korduvaid alg- ja sihtressursse vĂ”i pesa kogusid.
- Veateate logimise tase SSL «invalid alert», «record layer failure» ja «SSL alert number N» on alandatud «crit» tasemelt «info» tasemele.
- configure skripti on lisatud parameeter «âwithout-http_upstream_sticky_module», et keelata http_upstream_sticky_module mooduli koostamine (parameeter «âwithout-http_upstream_sticky» on kuulutatud vananenuks).
Lisa: RCE-haavatavuse exploiti on saadaval ngx_http_rewrite_module'is.
Allikas: opennet.ru
