NGINX map 正则捕获顺序引发堆溢出:CVE-2026-42533 与 1.31.3 / 1.30.4 修复清单
F5 于 2026-07-15 发出带外安全通知,披露 NGINX 多个内存安全漏洞。这批漏洞的修复版本相同,走同一条升级路径可以一起修掉。公告来源:
- NGINX Security Advisories
- F5 K000162097
- Beazley 告警:Critical memory corruption vulnerabilities in NGINX
CVE-2026-42533:map 正则捕获变量顺序导致的堆溢出
NGINX Plus 与 Open Source 均受影响,CVSS v3.1 8.1、v4.0 9.2,是本批中最严重的一个,CWE-122(堆缓冲区溢出)。
触发条件:map 指令使用正则匹配,并且某个字符串表达式在引用 map 输出变量之前,先引用了该 map 的正则捕获变量;或者使用不可缓存的变量在特定条件下也能达到相同效果。此时未认证攻击者可以构造 HTTP 请求触发 NGINX worker 进程堆缓冲区溢出,导致进程重启;在 ASLR 被禁用或可被绕过的情况下还可以执行代码。这是数据面问题,与控制面无关。
受影响与修复版本
| 产品 | 受影响版本 | 修复版本 |
|---|---|---|
| Open Source | 1.31.2,以及 1.30.0 – 1.30.3 | 1.31.3、1.30.4 |
| Plus | 37.0.0.1 – 37.0.2.1,以及 R33 – R36 | 37.0.3.1、R36 P7 |
下游产品:
- NGINX Instance Manager:2.17.0 – 2.22.1 → 2.22.2
- NGINX Ingress Controller:5.0.0 – 5.5.2 → 5.5.3;2026-lts-r1..r3 → 2026-lts-r4
- NGINX Gateway Fabric → 2.6.7
规避写法
核心原则:不要用无名捕获,改用唯一的命名捕获,且只在持有该正则匹配的同一 block 内引用;不要在不同指令(例如既在 map 又在 location)里复用同一个命名捕获。
# 有风险:正则使用无名捕获,输出表达式在引用 map 输出变量之前先取用了捕获变量
map $uri $backend {
~^/api/([0-9]+)/ "$upstream_zone_$1";
}
# 规避:命名捕获、名字唯一,且只在同一 block 内引用
map $uri $api_version {
~^/api/v(?[0-9]+)/ $api_ver_uniq;
}
CVE-2026-60005(中危)
ngx_http_slice_module 的未初始化内存读取。该模块默认不启用。可泄露 worker 内存片段,或导致进程重启。修复版本:1.31.3 / 1.30.4。
CVE-2026-56434(中危)
ngx_http_ssi_module 的 use-after-free。仅在同时配置 SSI、proxy_pass 与 proxy_buffering off 时可达,并且需要攻击者能中间人控制上游响应,可借此控制上游响应。无规避手段,优先打补丁。修复版本:1.31.3 / 1.30.4。
更早一波(2026-06)
CVE-2026-42530(major,ngx_http_v3_module use-after-free,HTTP/3):未认证攻击者可发送构造的 HTTP/3 会话使 NGINX worker 崩溃,ASLR 关闭时可能 RCE。受影响 Open Source 1.31.0 – 1.31.1;修复 1.31.2。
CVE-2026-42055(medium,ngx_http_proxy_v2_module 与 ngx_http_grpc_module 堆溢出):发送超大 header 可崩溃 worker。受影响 Open Source 1.31.1、1.30.0 – 1.30.2;修复 1.31.2 / 1.30.3。
这两个漏洞的临时缓解措施:
- 禁用 HTTP/3,从所有
listen指令中移除quic。 - 移除配置里的
ignore_invalid_headers off。 - 把
large_client_header_buffers调到 2MB 以下。
# 1) 移除 quic
# listen 443 ssl quic; → listen 443 ssl;
# 2) 删除 ignore_invalid_headers off;(默认即为 on)
# 3) 收小 header 缓冲区,控制在 2MB 以内
large_client_header_buffers 4 256k;
CVE-2026-42945(“Rift Chain”)
ngx_http_rewrite_module 堆溢出,几乎每个标准 NGINX 构建都包含该模块。受影响 Open Source 0.6.27 – 1.30.0;修复 1.31.0 / 1.30.1。该漏洞自 2026-05 披露后已被在野利用,NVD 于 2026-06-27 上调严重度评分。
升级与验证
对外网暴露的 Web 服务器、API 网关、以及内嵌 NGINX 的设备优先打补丁,打完重启 NGINX 服务;确认 ASLR 等系统防护处于开启状态;排查看起来不像 NGINX 的第三方设备或托管服务是否内嵌了受影响的 NGINX 版本。
# 确认版本与编译模块
nginx -v
nginx -V
# 检查 ASLR(0 表示关闭)
cat /proc/sys/kernel/randomize_va_space
# 升级后校验配置并重启服务
nginx -t && systemctl restart nginx