Podatność typu heap buffer overflow (CWE-122) występuje w NGINX Plus oraz NGINX Open Source podczas przetwarzania dyrektywy map z wyrażeniami regularnymi. Nieuwierzytelniony atakujący może spowodować awarię procesu roboczego NGINX, a w określonych warunkach wykonać dowolny kod.
▸ Pokaż oryginał (EN)
A vulnerability exists in NGINX Plus and NGINX Open Source when a map directive uses regex matching and a string expression references the map's regex capture variables before referencing the map output variable. Alternatively, the same result could be achieved by using a non-cacheable variable in a string expression under certain conditions. An unauthenticated attacker along with conditions beyond their control can exploit this vulnerability by sending crafted HTTP requests. This may cause a heap buffer overflow in the NGINX worker process leading to a restart. Additionally, attackers can execute code on systems with Address Space Layout Randomization (ASLR) disabled or when the attacker can bypass ASLR. Impact: This vulnerability may allow remote attackers to cause a denial-of-service (DoS) on the NGINX system or to possibly trigger a code execution. There is no control plane exposure; this is a data plane issue only. Note: Software versions which have reached End of Technical Support (EoTS) are not evaluated.
Błąd pojawia się, gdy dyrektywa map używa dopasowania wyrażeń regularnych, a wyrażenie łańcuchowe odwołuje się do zmiennych przechwytujących regex przed odwołaniem do zmiennej wyjściowej mapy. Ten sam efekt można uzyskać, stosując zmienną niebuforowaną w wyrażeniu łańcuchowym w określonych warunkach. Atakujący wysyła spreparowane żądania HTTP, co prowadzi do przepełnienia bufora sterty (heap buffer overflow) w procesie roboczym NGINX, powodując jego restart. Wykonanie kodu jest możliwe na systemach z wyłączonym mechanizmem ASLR lub gdy atakujący jest w stanie obejść ASLR.
Atakujący może spowodować odmowę usługi (DoS) poprzez wymuszenie restartu procesu roboczego NGINX lub — w przypadku wyłączonego bądź obejętego ASLR — wykonać zdalnie dowolny kod (RCE) na serwerze. Problem dotyczy wyłącznie płaszczyzny danych (data plane); płaszczyzna sterowania (control plane) nie jest narażona.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://my.f5.com/manage/s/article/K000162097). Dodatkowo, do czasu wdrożenia łatki, zaleca się upewnienie się, że mechanizm ASLR jest włączony na wszystkich systemach uruchamiających NGINX, co ogranicza ryzyko skutecznego RCE.
NGINX Plus oraz NGINX Open Source — konkretne wersje wskazane w referencjach producenta (F5 K000162097). Wersje objęte statusem End of Technical Support (EoTS) nie są uwzględniane w ocenie.
Podatność wymaga zaistnienia warunków częściowo niezależnych od atakującego (m.in. specyficzna konfiguracja dyrektywy map lub wyłączony ASLR), co wpływa na złożoność ataku (AC:H w wektorze CVSS 4.0). RCE jest realny przede wszystkim na systemach z wyłączonym ASLR lub gdy atakujący może ten mechanizm obejść.
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XF5 nginx Gateway Fabric
APPF52.0.0 – 2.6.7 (bez)1.3.0 – 1.6.2F5 nginx Ingress Controller
APPF54.0.04.0.12026-lts-r1 – 2026-lts-r4 (bez)3.5.0 – 3.7.25.0.0 – 5.5.3 (bez)F5 nginx Plus
APPF5r36r33 – r36 (bez)37.0.0.1 – 37.0.3.1 (bez)F5 Waf
APPF54.11.0 – 4.16.05.2.0 – 5.8.05.9.0 – 5.13.4 (bez)
Powiązane podatności
NGINX Plus/Open Source: heap buffer overflow w modułach HTTP/2 i gRPC
Use-after-Free w module HTTP/3 QUIC NGINX — możliwość RCE
Heap buffer overflow w NGINX w module ngx_http_rewrite_module (RCE)
NGINX heap buffer overflow w module ngx_http_rewrite_module (RCE/restart)
F5 NGINX Ingress Controller – DoS poprzez NULL pointer dereference (CWE-476)