Udgivelsen af hovedversionen nginx 1.31.0 er blevet formet, hvilket fortsætter udviklingen af nye funktioner, samt udgivelsen af den parallelt understøttede stabile version nginx 1.30.1, hvor der kun foretages ændringer relateret til rettelse af alvorlige fejl og sårbarheder. Opdateringerne rettede seks sårbarheder, hvoraf den mest alvorlige muliggør fjernudførelsen af kode ved at sende en specielt udformet HTTP-anmodning. Rettelserne til angie og freenginx var ikke offentliggjort på tidspunktet for nyhedens skriving.
Sårbarheden (CVE-2026-42945), der er blevet tildelt en kritisk faregrad, skyldes en buffer-overløb i modulet ngx_http_rewrite_module, som kan udnyttes til at udføre kode med rettighederne til nginx-processen ved at sende en HTTP-anmodning med en specielt udformet URI. Problemet opstår i konfigurationer med direktivet "rewrite", hvor der bruges wildcard-substitutioner i regulære udtryk ved hjælp af navngivne variable (f.eks. $1 og $2), forudsat at der i den erstatningsstreng er et tegn "?". Eksempel på en sårbar konstruktion: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
Udsagn med navngivne substitutioner er ikke sårbare. For eksempel berører sårbarheden ikke konstruktionsskabeloner som: rewrite ^\/users\/(?[0-9]+)\/profile\/(?
Sårbarheden er til stede fra version 0.6.27, der blev udgivet i marts 2008. Årsagen til sårbarheden var, at bufferen blev allokeret med den antagelse, at ubeskyttede data ville blive skrevet til det, men dataene, der faktisk blev kopieret, blev behandlet efter escape af specialtegn og oversteg i størrelse, da hvert tegn "+", "%" og "&" blev kodet ikke med ét, men med tre bytes. Sådan en afstemningsfejl opstod fordi, når regelen rewrite indeholdt tegnet "?", blev flaget "e->is_args" aktiveret, hvilket medførte escalering, men bufferen blev allokeret ved et nulstillet flag, hvor escalering ikke blev anvendt.
Andre sårbarheder:
- CVE-2026-42926 - muligheden for at indsætte angriberens data i den proxied anmodning ved brug af direktivet "proxy_set_body" og anmodning til backend via HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — adgang til hukommelse efter frigivelse (use-after-free) i modulet ngx_http_ssl_module, som opstår ved behandling af svar fra DNS-serveren i konfigurationer med direktivet «ssl_ocsp».
- CVE-2026-42946 — læsning uden for bufferområdet i modulerne ngx_http_uwsgi_module og ngx_http_scgi_module, som opstår ved behandling af specielt formaterede svar. Problemet kan føre til lækage af indhold fra arbejdsgangens hukommelse eller til et nedbrud.
- CVE-2026-42934 — læsning uden for bufferområdet i arbejdsgangen, som opstår ved behandling af svar med dekodning fra UTF-8-kodning ved anvendelse af direktivet «charset_map». Problemet kan føre til lækage af indhold fra arbejdsgangens hukommelse eller til et nedbrud.
- CVE-2026-40460 — sårbarhed i implementeringen af protokol HTTP/3, der muliggør spoofing IP-adresser til at omgå godkendelse eller restriktioner.
Forbedringer, der er tilføjet i nginx-version 1.31.0:
- Der er tilføjet modulet ngx_http_tunnel_module, der muliggør drift som en proxy («forward proxy»), som videresender forespørgsler til en anden server, når en klient henvender sig via HTTP/1.1 CONNECT-metoden. Der er mulighed for at konfigurere godkendelse til proxyen ved hjælp af direktiverne «auth_basic», «satisfy» og «auth_delay».
- Der er tilføjet direktivet «least_time» i blokken «upstream», som inkluderer en metode til belastningsbalancering, der sender forespørgslen server med det laveste gennemsnitlige svartid og det laveste antal aktive forbindelser.
- Der er tilføjet direktivet «proxy_ssl_alpn» til modulet «stream_proxy» for at angive listen over protokoller, der er tilladt i ALPN-udvidelsen ved forbindelse til den proxierede server. For eksempel: «proxy_ssl_alpn h2 http/1.1».
- Der er sikret afvisning af forespørgsler via protokollerne HTTP/2 og HTTP/3, der inkluderer overskrifterne «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade».
- Der er sikret afvisning af COPY- og MOVE-forespørgsler i modulet ngx_http_dav_module, når der er gentagne kilde- og målressourcer eller indlejrede samlinger.
- Fejlloggniveauet SSL «invalid alert», «record layer failure» og «SSL alert number N» er sænket fra «crit» til «info».
- Parameteren «—without-http_upstream_sticky_module» er tilføjet til konfigurationsscriptet for at deaktivere opbygningen af http_upstream_sticky_module (parameteren «—without-http_upstream_sticky» er blevet forældet).
Tillæg: Der er tilgængelig en exploit til RCE-sårbarheden i ngx_http_rewrite_module.
Kilde: opennet.ru
