A fost lansată versiunea principală a nginx 1.31.0, în cadrul căreia continuă dezvoltarea de noi funcționalități, precum și lansarea versiunii stabile 1.30.1, care primește doar actualizări pentru corectarea erorilor grave și vulnerabilităților. În actualizări au fost remediate 6 vulnerabilități, dintre care cea mai periculoasă permite execuția de cod de la distanță prin trimiterea unei cereri HTTP formulată special. Pentru angie și freenginx, la momentul redactării acestei știri, corecțiile nu au fost publicate.
Vulnerabilitatea (CVE-2026-42945), care a primit un nivel critic de gravitate, este cauzată de un overflow de buffer în modulul ngx_http_rewrite_module, care poate fi exploatat pentru a executa cod cu permisiunile procesului de lucru nginx prin trimiterea unei cereri HTTP cu un URI formulat special. Problema apare în configurații cu directivele „rewrite”, în care în expresiile regulate sunt utilizate substituții prin variabile fără nume (de exemplu, $1 și $2), cu condiția să existe un caracter „?” în șirul de înlocuire. Un exemplu de construcție vulnerabilă: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;
Expresiile cu substituții denumite nu sunt vulnerabile. De exemplu, vulnerabilitatea nu afectează construcțiile: rewrite ^\/users\/(?[0-9]+)\/profile\/(?
Vulnerabilitatea este prezentă începând cu versiunea 0.6.27, lansată în martie 2008. Cauza apariției vulnerabilității a fost că bufferul era alocat pe baza presupunerii că în el vor fi scrise date neescapate, dar de fapt erau copiate datele după ce au fost efectuate escapări pentru caracterele speciale, dimensiunea cărora era mai mare, deoarece fiecare caracter „+”, „%” și „&” era codificat cu trei octeți, nu cu unul. Această neconcordanță a apărut deoarece, în prezența caracterului „?” în regula rewrite, era setat flagul „e->is_args”, care activa escaparea, dar alocarea bufferului se făcea cu flagul resetează, în care escaparea nu era aplicată.
Alte vulnerabilități:
- CVE-2026-42926 — posibilitatea de substituție a datelor atacatorului în cererea proxy atunci când se utilizează directiva „proxy_set_body” și se accesează backend-ul prin HTTP/2 (proxy_http_version=2).
- CVE-2026-40701 — acces la memorie după eliberare (use-after-free) în modulul ngx_http_ssl_module, care apare în timpul procesării răspunsurilor de la serverul DNS în configurații cu directiva „ssl_ocsp”.
- CVE-2026-42946 — citirea dintr-o zonă din afara buffer-ului în modulele ngx_http_uwsgi_module și ngx_http_scgi_module, care apare în timpul procesării unui răspuns format special. Problema poate duce la o scurgere de conținut din memoria procesului de lucru sau la oprirea necontrolată a acestuia.
- CVE-2026-42934 — citirea dintr-o zonă din afara buffer-ului în procesul de lucru, care apare în timpul procesării răspunsurilor cu decodificare din codificarea UTF-8 folosind directiva „charset_map”. Problema poate duce la o scurgere de conținut din memoria procesului de lucru sau la oprirea necontrolată a acestuia.
- CVE-2026-40460 — vulnerabilitate în implementarea protocolului HTTP/3, care permite spoofing-ul adrese IP pentru a ocoli autorizarea sau restricțiile.
Îmbunătățirile adăugate în versiunea nginx 1.31.0:
- A fost inclus modulul ngx_http_tunnel_module, care permite funcționarea ca un proxy („forward proxy”), redirecționând cererile către un alt server atunci când clientul folosește metoda HTTP/1.1 CONNECT. Este posibilă configurarea autentificării cererii către proxy, folosind directivele „auth_basic”, „satisfy” și „auth_delay”.
- În blocul „upstream” a fost adăugată directiva „least_time”, care activează metoda de echilibrare a încărcării, transmitând cererea server cu cel mai mic timp mediu de răspuns și cel mai mic număr de conexiuni active.
- În modulul „stream_proxy” a fost adăugată directiva „proxy_ssl_alpn” pentru a stabili lista de protocoale acceptate în extensia ALPN la conectarea la serverul proxy. De exemplu: „proxy_ssl_alpn h2 http/1.1”.
- S-a asigurat respingerea cererilor prin protocoalele HTTP/2 și HTTP/3, care includ anteturile „Connection”, „Proxy-Connection”, „Keep-Alive”, „Transfer-Encoding”, „Upgrade”.
- În modulul ngx_http_dav_module s-a asigurat respingerea cererilor COPY și MOVE cu surse și destinații repetate sau colecții încorporate.
- Nivelul de logare pentru erorile SSL „invalid alert”, „record layer failure” și „SSL alert number N” a fost redus de la „crit” la „info.”
- În scriptul configure a fost adăugat parametrul „—without-http_upstream_sticky_module” pentru a dezactiva compilarea modulului http_upstream_sticky_module (parametrul „—without-http_upstream_sticky” a fost declarat învechit).
Suplimentare: Este disponibil un exploit pentru vulnerabilitatea RCE în ngx_http_rewrite_module.
Sursa: opennet.ro
