Kritieke NGINX-kwetsbaarheid kan werknemers laten crashen en uitvoering van externe code mogelijk maken

F5 heeft oplossingen geleverd voor een kritieke nginx-fout waardoor een externe, niet-geverifieerde aanvaller een heap-bufferoverflow in het werkproces kan activeren met vervaardigde HTTP-verzoeken. CVE-2026-42533 werd op 15 juli gepatcht in nginx 1.30.4 (stabiel) en 1.31.3 (hoofdlijn), en in NGINX Plus 37.0.3.1; iedereen met een eerdere build zou moeten upgraden.

Als u dit activeert, kan de werker crashen of opnieuw opstarten, waardoor een Denial of Service ontstaat; waar ASLR is uitgeschakeld of kan worden omzeild, zegt F5 dat het ook uitvoering van externe code mogelijk maakt.

De overflow bevindt zich in de scriptengine van nginx, de code die op verzoek strings uit richtlijnen samenstelt. Het komt alleen naar voren onder een specifieke configuratie: een op regex gebaseerde map waarvan de uitvoervariabele wordt verwezen in een tekenreeksexpressie na een opname van een eerdere regex-match.

Onder dat patroon valt de evaluatie in twee fasen van de motor uit elkaar. De eerste doorgang meet hoeveel bytes het resultaat nodig heeft en wijst een passende buffer toe; de tweede doorgang schrijft de bytes naar binnen. Beide lezen dezelfde gedeelde capture-status, en het evalueren van de regex van de kaart tussen de twee doorgangen overschrijft deze.

Dus de meetpas vergroot de buffer voor de originele opname, een referentie zoals $1 van de locatiematch, terwijl de schrijfpas deze vult met een andere, ter grootte van een aanvaller. De buffer is te klein en zowel de lengte als de inhoud van de overrun komen rechtstreeks uit de request.

Dit treft niet elke nginx-server; blootstelling is afhankelijk van de configuratie, niet alleen van de versie. In het advies van F5 wordt vermeld dat de fout gevolgen heeft voor NGINX Ingress Controller, Gateway Fabric, App Protect WAF en Instance Manager naast de kernserver en NGINX Plus, hoewel F5 bij publicatie geen vaste builds voor deze vier producten had vermeld.

F5 scoort een 9,2 op CVSS v4 en 8.1 op de oudere v3.1-schaal, en beoordeelt de complexiteit van aanvallen hoog. Elke nginx-versie van 0.9.6 tot en met 1.31.2 is kwetsbaar, een bereik dat teruggaat tot 2011, toen map Regex-ondersteuning gekregen.

CVE-2026-42533 werd door meer dan een dozijn onderzoekers onafhankelijk aan F5 gerapporteerd; de verkoper bedankte hen voor het “onafhankelijk onder onze aandacht brengen van dit probleem.” De eigen changelog van nginx schrijft de oplossing toe aan Mufeed VH van Winfunc Research en aan beheerder Maxim Dounin.

Eén van de verslaggevers, Stan Shawdie publiceert als Cyberstanbreng een gedetailleerd artikel uit dat verder gaat dan het advies. F5 stelt dat de uitvoering van de code op ASLR uitgeschakeld of omzeilbaar is, en Shaw’s argument is dat de fout de bypass zelf levert. Hij vertelde The Hacker News dat de capture clobbering ook omgekeerd verloopt: wanneer de clobbered capture kleiner is dan het origineel, geeft de extra grote buffer niet-geïnitialiseerde heap-data terug, en op een standaard Ubuntu 24.04-build herstelt een enkele niet-geverifieerde GET de adressen die een payload nodig heeft.

“Een lezer van het F5-advies zou redelijkerwijs kunnen concluderen dat dit alleen DoS is op standaardsystemen. Dat is niet het geval”, aldus Shaw. Het is een sterkere bewering dan F5, een bewering die volgens hem 10 op 10 haalde tijdens zijn eigen tests, en hij houdt de exploitatiedetails en een proof-of-concept voorlopig achter, zodat niemand het nog onafhankelijk kan controleren.

De oplossing is om te upgraden naar nginx 1.30.4 of 1.31.3, of NGINX Plus 37.0.3.1. Voor iedereen die niet meteen kan patchen: de tijdelijke oplossing van F5 is om de getroffen regex-kaarten om te zetten naar benoemde captures, wat volgens Shaw het hoofdpad sluit en de meeste configuraties dekt.

Maar hij vertelde The Hacker News dat de mitigatie een smaller pad openlaat: map die dezelfde benoemde groep definieert als de locatieregex bereikt dezelfde overflow via een tweede codepad, wat hij bevestigde met AddressSanitizer en waarover het advies van F5 niet vermeldt. “Opwaarderen naar 1.30.4 / 1.31.3 is de enige volledige oplossing”, zei hij.

De blootstelling aan grep for is smal: op basis van regex map waarvan de variabele voorkomt in een tekenreeksexpressie naast een genummerde capture ($1, $2) uit een eerdere regex, waarbij de capture vóór de kaartvariabele is geschreven.

Shaw’s eigen scanner automatiseert de controle van een configuratie, volgt include en markeert alleen de exploiteerbare volgorde; het exploiteert niets, maar als verslaggeversinstrument is het geen leveranciersproduct.

Dit is de derde heap-overflow in de expressie-evaluatiecode van nginx die in ongeveer twee maanden wordt onthuld, na Rift (CVE-2026-42945) in mei en een bug met overlappende opnames in de herschrijfmodule (CVE-2026-9256) dagen later.

Ze zijn alle drie van hetzelfde type fout: de twee-pass-script-engine van nginx grootte van een buffer in de ene keer en schrijft erin in de volgende, en elke keer dat het schrijven groter wordt dan de gemeten grootte. De trigger verschilt, een verouderde vlag in Rift, overlappende opnames in de herschrijfbug, een mislukte opnamestatus hier. De gedeelde zwakte is, zoals de onderzoeker opmerkt, een ontwerp met twee doorgangen dat vertrouwt op zijn eigen meting.

Vanaf 20 juli stond CVE-2026-42533 niet in de catalogus met bekende exploited kwetsbaarheden van CISA en was er geen openbare exploitcode verschenen. Shaw zegt dat hij 21 dagen na de patch zijn eigen proof-of-concept zal publiceren, en Rift is een waarschuwing: de exploit werd binnen enkele dagen openbaar en werd kort daarna actief misbruikt. Dat is de reden om te upgraden voordat deze arriveert.

The Hacker News vroeg F5 of het overschakelen naar benoemde opnames CVE-2026-42533 volledig sluit, gezien de variant Shaw-documenten, en wanneer vaste builds voor de getroffen downstream-producten zullen worden verzonden. F5 had niet gereageerd door middel van publicatie.

Thijs Van der Does