漏洞概述

漏洞名称

NGINX regex map 指令堆缓冲区溢出漏洞

漏洞编号

QVD-2026-41643,CVE-2026-42533

公开时间

2026-07-15

影响量级

万级

奇安信评级

高危

CVSS 3.1分数

8.1

威胁类型

代码执行、拒绝服务

利用可能性

POC状态

已公开

在野利用状态

未发现

EXP状态

已公开

技术细节状态

已公开

危害描述:未经身份认证的攻击者可通过发送构造的 HTTP 请求触发漏洞,造成 Worker 进程崩溃、内存信息泄露,在 ASLR 被禁用或被绕过的情况下,攻击者可能进一步实现任意代码执行。

01

漏洞详情

>>>>

影响组件

NGINX 是一款高性能、轻量级的开源 Web 服务器与反向代理服务,广泛用于静态资源托管、负载均衡、API 网关、缓存加速等场景,支持 HTTP/HTTPS、WebDAV、HTTP/3 等多种协议,具备高并发、低资源占用、模块化扩展等特性,是全球互联网主流的服务端基础软件,被政企、云厂商、互联网企业大量部署。

>>>>

漏洞描述

近日,奇安信CERT监测到官方修复NGINX regex map 指令堆缓冲区溢出漏洞(CVE-2026-42533),该漏洞源于 NGINX 的脚本引擎在处理包含正则表达式捕获的复杂变量时存在缺陷。当一个 map 指令使用正则匹配,并且其输出变量与一个正则捕获变量(如$1)在同一个字符串表达式中被引用时,由于脚本引擎采用“两遍”评估模型(第一遍计算长度,第二遍填充数据),而正则捕获的共享状态在两次评估之间被 map 指令的匹配操作所篡改,导致长度计算与实际写入的数据大小不匹配。未经身份认证的攻击者可通过发送构造的 HTTP 请求触发漏洞,造成 Worker 进程崩溃、内存信息泄露,在 ASLR 被禁用或被绕过的情况下,攻击者可能进一步实现任意代码执行。目前该漏洞PoC和技术细节已公开。鉴于该漏洞影响范围较大,建议客户尽快做好自查及防护。

>>>>

利用条件

1.存在正则捕获源(location、server_name、rewrite、if 的正则)产生 $1、$2 或命名捕获组;

2.存在使用正则模式的 map 变量;

3.求值顺序:捕获引用在 regex map 变量之前被求值,如"$1=$bodyvar=$1"

02

影响范围

>>>>

影响版本

0.9.6 <= NGINX Open Source < 1.30.4

1.31.2 <= NGINX Open Source < 1.31.3

37.0.0.1 <= NGINX Plus < 37.0.3.1

R33 <= NGINX Plus < R36 P7

>>>>

其他受影响组件

2.17.0 <= NGINX Instance Manager < 2.22.2

5.9.0 <= F5 WAF for NGINX < 5.13.4

4.11.0 <= NGINX App Protect WAF <= 4.16.0

5.2.0 <= NGINX App Protect WAF <= 5.8.0

1.3.0 <= NGINX Gateway Fabric <= 1.6.2

2.0.0 <= NGINX Gateway Fabric < 2.6.7

3.5.0 <= NGINX Ingress Controller <= 3.7.2

4.0.0 <= NGINX Ingress Controller <= 4.0.1

5.0.0 <= NGINX Ingress Controller < 5.5.3

2026-lts-r1 <= NGINX Ingress Controller < 2026-lts-r4

03

复现情况

目前,奇安信威胁情报中心安全研究员已成功复现NGINX regex map 指令堆缓冲区溢出漏洞(CVE-2026-42533),截图如下:

04

处置建议

>>>>

安全更新

官方已发布安全补丁,请及时更新至最新版本:

NGINX Open Source 1.30.* >= 1.30.4

NGINX Open Source 1.31.* >= 1.31.3

NGINX Plus 37.* >= 37.0.3.1

NGINX Plus >= R36 P7

其他衍生组件(Instance Manager、WAF、Ingress Controller 等):升级至已修复版本,或迁移到含修复的基础 NGINX 版本。

升级后重启 NGINX,确保 Worker 进程加载修复后二进制。

下载地址:

https://my.f5.com/manage/s/article/K000162097

临时缓解措施:

将 map 及相关指令中使用的未命名的捕获组($1、$2)改写为命名捕获组((?...) 配合 $named_group),并确保捕获仅在持有正则匹配的块内被引用。但请注意,研究人员指出此方法可能无法完全修复所有变体,升级仍是唯一彻底的解决方案。

05

参考资料

[1]https://my.f5.com/manage/s/article/K000162097

[2]https://cyberstan.co.uk/nginx-rce/

声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。