Update nginx 1.31.0 met oplossing voor RCE-kwetsbaarheid, die via HTTP-verzoek kan worden misbruikt

De release van de hoofdversie nginx 1.31.0 is vastgesteld, waarbij de ontwikkeling van nieuwe mogelijkheden voortduurt, evenals de release van de parallel ondersteunde stabiele versie nginx 1.30.1, waarin alleen wijzigingen worden aangebracht die verband houden met het verhelpen van ernstige fouten en kwetsbaarheden. In de updates zijn 6 kwetsbaarheden verholpen, waarvan de meest ernstige de mogelijkheid tot externe code-uitvoering toestaat via het verzenden van een speciaal opgemaakte HTTP-verzoek. Voor angie en freenginx zijn op het moment van schrijven van het nieuws nog geen patches gepubliceerd.

De kwetsbaarheid (CVE-2026-42945), die is geclassificeerd als kritiek, wordt veroorzaakt door een buffer-overflow in de ngx_http_rewrite_module, die kan worden misbruikt voor code-uitvoering met de rechten van het nginx-proces door een HTTP-verzoek met een speciaal opgemaakt URI te verzenden. Het probleem doet zich voor in configuraties met de "rewrite" richtlijn, waarbij in reguliere expressies wildcard placeholders worden gebruikt met niet-genaamde variabelen (bijvoorbeeld $1 en $2), mits de vervangende string een "?" bevat. Voorbeeld van een kwetsbare constructie: rewrite ^\/users\/([0-9]+)\/profile\/(.*)$ \/profile.php?id=$1&tab=$2 last;

Expressies met benoembare placeholders zijn niet kwetsbaar. Bijvoorbeeld, de kwetsbaarheid heeft geen invloed op constructies zoals: rewrite ^\/users\/(?[0-9]+)\/profile\/(?

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

De kwetsbaarheid is aanwezig sinds versie 0.6.27, die in maart 2008 is uitgebracht. De oorzaak van de kwetsbaarheid is dat de buffer was gereserveerd met de aanname dat er onverwerkte gegevens in zouden worden geschreven, terwijl er daadwerkelijk gegevens werden gekopieerd na het uitvoeren van de escaping van speciale karakters, waarvan de grootte groter was, omdat elk teken " +", "%" en "&" niet met één, maar met drie bytes werd gecodeerd. Deze discrepantie ontstond doordat bij het gebruik van het karakter "?" in de rewrite-regel de vlag "e->is_args" werd ingesteld, waardoor escaping werd ingeschakeld, maar de buffer werd toegewezen met de vlag gereset, waarbij escaping niet werd toegepast.

Andere kwetsbaarheden:

  • CVE-2026-42926 — de mogelijkheid om de gegevens van een aanvaller in de proxied aanvraag in te voegen bij het gebruik van de richtlijn "proxy_set_body" en het aanspreken van de backend via HTTP\/2 (proxy_http_version=2).
  • CVE-2026-40701 — toegang tot geheugen na vrijgave (use-after-free) in de ngx_http_ssl_module, dat optreedt bij het verwerken van antwoorden van de DNS-server in configuraties met de directive «ssl_ocsp».
  • CVE-2026-42946 — lezen van buiten het buffergebied in de ngx_http_uwsgi_module en ngx_http_scgi_module, dat optreedt bij het verwerken van speciaal opgemaakte antwoorden. Het probleem kan leiden tot een lek van inhoud uit het geheugen van het werkproces of een crash.
  • CVE-2026-42934 — lezen van buiten het buffergebied in het werkproces, dat optreedt bij het verwerken van antwoorden met decodering uit UTF-8 bij gebruik van de directive «charset_map». Het probleem kan leiden tot een lek van inhoud uit het geheugen van het werkproces of een crash.
  • CVE-2026-40460 — kwetsbaarheid in de implementatie van het HTTP/3-protocol, die spoofing mogelijk maakt IP-adressen om autorisatie of beperkingen te omzeilen.

Verbeteringen toegevoegd in versie nginx 1.31.0:

  • De ngx_http_tunnel_module is opgenomen, die de mogelijkheid biedt om als een proxy («forward proxy») te werken, verzoeken doorstuurend naar een andere server bij een klantverzoek met behulp van de HTTP/1.1 CONNECT-methode. Authenticatie van proxy-aanroepen kan worden ingesteld met behulp van de directives «auth_basic», «satisfy» en «auth_delay».
  • De directive «least_time» is toegevoegd aan het «upstream»-blok, die een methode voor belastingbalancering omvat waarbij het verzoek server met de laagste gemiddelde responsetijd en het laagste aantal actieve verbindingen wordt doorgegeven.
  • De directive «proxy_ssl_alpn» is toegevoegd aan de «stream_proxy»-module om de lijst van protocollen op te geven die zijn toegestaan in de ALPN-uitbreiding bij het verbinden met de geproxyde server. Bijvoorbeeld: «proxy_ssl_alpn h2 http/1.1».
  • Verzoeken via de protocollen HTTP/2 en HTTP/3 waarmee de headers «Connection», «Proxy-Connection», «Keep-Alive», «Transfer-Encoding», «Upgrade» zijn inbegrepen, zijn afgewezen.
  • In de ngx_http_dav_module zijn verzoeken COPY en MOVE met herhalende bron- en doelbronnen of geneste collecties afgewezen.
  • Het niveau van foutlogboekregistratie SSL «invalid alert», «record layer failure» en «SSL alert number N» is verlaagd van «crit» naar «info».
  • De parameter «—without-http_upstream_sticky_module» is toegevoegd aan het configure-script om de bouw van de http_upstream_sticky_module uit te schakelen (de parameter «—without-http_upstream_sticky» is verouderd verklaard).

Aanvulling: Een exploit is beschikbaar voor de RCE-kwetsbaarheid in de ngx_http_rewrite_module.

Bron: opennet.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster