NGINX, eigendom van F5, is een veelgebruikte reverse proxy-server ter wereld. NGINX is ook een cruciale infrastructuur van het wereldwijde internet. Nu heeft een beveiligingsonderzoeksbureau een beveiligingsprobleem met een hoog risico in de software onthuld. De kwetsbaarheid heeft nummer CVE-2026-42945. Er is een heapbufferoverflow-probleem in de NGINX-scriptengine dat al 18 jaar bestaat.

Een aanvaller hoeft alleen maar een zorgvuldig opgebouwd HTTP-verzoek naar een blootgestelde NGINX-server te sturen om de server op afstand over te nemen. NGINX is goed voor bijna 30% van de belangrijkste mondiale websiteserver- en reverse proxy-velden, dus dit beveiligingslek kan een groot aantal internetdiensten treffen.

Heeft invloed op de NGINX-ontologie en meerdere afgeleiden:

Deze kwetsbaarheid werd oorspronkelijk geïntroduceerd in NGINX versie 0.6.27, uitgebracht in 2008. Daarna werd de kwetsbaarheid lange tijd niet ontdekt en ligt deze tot nu toe op de loer. Dit beveiligingslek treft NGINX-versies 0.6.27~1.30.0 en treft ook verschillende NGINX-derivaten die door F5 aan commerciële klanten worden geleverd. Betrokken afgeleide producten omvatten, maar zijn niet beperkt tot, NGINX WAF, F5 WAF, NGINX Gateway Fabric, NGINX Ingress Controller, enz.

De triggerende omstandigheden van de kwetsbaarheid zijn erg verborgen. Wanneer de volgende twee instructies tegelijkertijd in het NGINX-configuratiebestand verschijnen, wordt de kwetsbaarheid geactiveerd:

rewrite ^/api/(.*)$ /internal?migrated=true;  # 重写规则末尾带 “?” set $original_endpoint $1;                     # 使用正则捕获组

Het onderzoeksteam dat de kwetsbaarheid ontdekte, wees erop dat de hoofdoorzaak van de kwetsbaarheid ligt in de scriptengine (ngx_http_script.c) van ngx_http_rewrite_module. Wanneer de herschrijfinstructie een vraagteken bevat, wordt de aanhoudende vlag is_args ingesteld, maar in de daaropvolgende berekeningsfase van de set-instructielengte gebruikt de engine een nieuwe gewiste sub-engine, waardoor de URL-ontsnappende logica wordt overgeslagen tijdens de lengteberekening.

In de daadwerkelijke kopieerfase wordt de hoofdengine gebruikt om de ngx_escape_uri-functie te activeren om tekens zoals + en & te ontsnappen. De buffer wordt toegewezen op basis van de lengte zonder escapecodes, maar de uitgebreide inhoud wordt geschreven, waardoor uiteindelijk een regelbare heapbufferoverflow ontstaat.

F5 heeft NGINX versie 1.31.0/1.30.1 uitgebracht om het volgende te repareren:

Na ontvangst van de melding van de kwetsbaarheid bevestigde F5 de kwetsbaarheid snel. Nadat F5 de oplossing had voorbereid, maakten de onderzoekers de kwetsbaarheid publiekelijk bekend. Daarom moeten gebruikers die momenteel NGINX en zijn derivaten gebruiken, upgraden naar de nieuwste versie die niet wordt beïnvloed. De open source-versie van NGINX moet worden geüpgraded naar versie 1.30.1 of 1.31.0. Andere oudere versies, zoals versies 0.6.27~1.30.0, worden getroffen door het beveiligingslek.

Voor versie-informatie over andere derivaten, zie het F5 Security Bulletin: https://my.f5.com/manage/s/article/K000160932