18 jaar oude fout in de NGINX-herschrijfmodule maakt niet-geverifieerde RCE mogelijk

Cybersecurity-onderzoekers hebben meerdere beveiligingskwetsbaarheden onthuld die van invloed zijn op NGINX Plus en NGINX Open, waaronder een kritieke fout die 18 jaar lang onopgemerkt bleef.

Het beveiligingslek, ontdekt door depthfirst, is een heapbufferoverflowprobleem dat gevolgen heeft voor ngx_http_rewrite_module (CVE-2026-42945, CVSS v4-score: 9.2), waardoor een aanvaller code op afstand kan uitvoeren of een denial-of-service (DoS) kan veroorzaken met vervaardigde verzoeken. Het heeft de codenaam gekregen NGINX-kloof.

“NGINX Plus en NGINX Open Source hebben een kwetsbaarheid in de ngx_http_rewrite_module-module”, zei F5 in een advies dat woensdag werd uitgebracht. “Dit beveiligingslek bestaat wanneer de rewrite-instructie wordt gevolgd door een rewrite-, if- of set-instructie en een naamloze Perl-Compatible Regular Expression (PCRE)-opname (bijvoorbeeld $1, $2) met een vervangende tekenreeks die een vraagteken (?) bevat.”

“Een niet-geverifieerde aanvaller kan, samen met omstandigheden buiten zijn controle, misbruik maken van dit beveiligingslek door vervaardigde HTTP-verzoeken te verzenden. Dit kan een heapbufferoverloop veroorzaken in het NGINX-werkproces, wat leidt tot een herstart. Bovendien is code-uitvoering mogelijk voor systemen waarop Address Space Layout Randomization (ASLR) is uitgeschakeld.”

Het probleem is in de volgende versies aangepakt na verantwoorde openbaarmaking op 21 april 2026:

  • NGINX Plus R32 – R36 (oplossingen geïntroduceerd in R32 P6 en R36 P4)
  • NGINX Open Source 1.0.0 – 1.30.0 (oplossingen geïntroduceerd in 1.30.1 en 1.31.0)
  • NGINX Open Source 0.6.27 – 0.9.7 (geen oplossingen gepland)
  • NGINX-instantiebeheer 2.16.0 – 2.21.1
  • F5 WAF voor NGINX 5.9.0 – 5.12.1
  • NGINX App Bescherm WAF 4.9.0 – 4.16.0
  • NGINX-app Bescherm WAF 5.1.0 – 5.8.0
  • F5 DoS voor NGINX 4.8.0
  • NGINX App Protect DoS 4.3.0 – 4.7.0
  • NGINX Gateway Fabric 1.3.0 – 1.6.2
  • NGINX Gateway Fabric 2.0.0 – 2.5.1
  • NGINX Ingress-controller 3.5.0 – 3.7.2
  • NGINX Ingress-controller 4.0.0 – 4.0.1
  • NGINX Ingress-controller 5.0.0 – 5.4.1

In zijn eigen advies zei depthfirst dat de kwetsbaarheid een externe, niet-geverifieerde aanvaller in staat zou kunnen stellen de hoop van een NGINX-werkproces te corrumperen door een vervaardigde URI te verzenden. Wat de kwetsbaarheid ernstig maakt, is dat deze zonder authenticatie bereikbaar is, op betrouwbare wijze kan worden gebruikt om de heap-overflow te activeren en kan leiden tot uitvoering van externe code in het NGINX-werkproces.

“Een aanvaller die via HTTP een kwetsbare NGINX-server kan bereiken, kan een enkel verzoek verzenden dat de heap in het werkproces overschrijdt en externe code-uitvoering bewerkstelligt”, aldus depthfirst. “Er is geen authenticatiestap, geen voorafgaande toegangsvereiste en geen noodzaak voor een bestaande sessie.”

“De bytes die voorbij de toewijzing worden geschreven, zijn afgeleid van de URI van de aanvaller, dus de corruptie wordt gevormd door de aanvaller in plaats van willekeurig. Herhaalde verzoeken kunnen ook worden gebruikt om werknemers in een crashloop te houden en de beschikbaarheid van elke site die door de instantie wordt bediend, te verminderen.”

Ook gepatcht in NGINX Plus en NGINX Open Source zijn drie andere fouten:

  • CVE-2026-42946 (CVSS v4 score: 8.3) – Een kwetsbaarheid voor excessieve geheugentoewijzing in de ngx_http_scgi_module en ngx_http_uwsgi_module modules waardoor een externe, niet-geverifieerde aanvaller met adversary-in-the-middle (AitM)-mogelijkheden de reacties van een upstream-server kan controleren om het geheugen van het NGINX-werkproces te lezen of het opnieuw te starten wanneer scgi_pass of uwsgi_pass is geconfigureerd.
  • CVE-2026-40701 (CVSS v4-score: 6.3) – Een use-after-free kwetsbaarheid in de ngx_http_ssl_module-module waardoor een externe, niet-geverifieerde aanvaller beperkte controle kan hebben over het wijzigen van gegevens of het NGINX-werkproces opnieuw kan starten wanneer de ssl_verify_client-richtlijn is ingesteld op “aan” of “optioneel” en de ssl_ocsp-richtlijn is ingesteld op “aan”.
  • CVE-2026-42934 (CVSS v4-score: 6.3) – Een leeskwetsbaarheid buiten het bereik in de ngx_http_charset_module-module waardoor een externe, niet-geverifieerde aanvaller geheugeninhoud kan vrijgeven of het NGINX-werkproces opnieuw kan starten wanneer charset, source_charset en charset_map en proxy_pass met uitgeschakelde buffering (“off”) richtlijnen zijn geconfigureerd.

Gebruikers wordt geadviseerd de nieuwste versies toe te passen voor optimale bescherming. Als onmiddellijk patchen geen optie is voor CVE-2026-42945, wordt gebruikers geadviseerd om de herschrijfconfiguratie te wijzigen door naamloze captures te vervangen door benoemde captures in elke getroffen herschrijfinstructie.

Thijs Van der Does