重要/漏洞:NGINX Rift / NGINX ngx_http_rewrite_module 堆缓冲区存在溢出漏洞
漏洞编号:CVE-2026-42945
重要等级:重要[需要关注的]
CVSS 分数:CVSS v4.0:9.2 Critical;CVSS v3.1:8.1 High
注:NGINX 官方安全页将该项标注为 medium,但 F5/CNA 与 NVD 记录显示其在特定条件下可导致高危影响。
影响范围:
触发条件:
受影响版本的 NGINX 配置中同时存在以下模式时风险较高:
漏洞原理:
漏洞概述:
风险描述:
影响组件:
处置建议:
参考来源: CVE-2026-42945
漏洞编号:CVE-2026-42945
重要等级:重要[需要关注的]
CVSS 分数:CVSS v4.0:9.2 Critical;CVSS v3.1:8.1 High
注:NGINX 官方安全页将该项标注为 medium,但 F5/CNA 与 NVD 记录显示其在特定条件下可导致高危影响。
影响范围:
NGINX Open Source 0.6.27 至 1.30.0 受影响,1.30.1 与 1.31.0 及以上版本不受影响。
NGINX Plus R32 至 R36 也在公开影响范围内;部分基于 NGINX 的 F5/NGINX 产品,如 NGINX Instance Manager、F5 WAF for NGINX、NGINX App Protect、NGINX Gateway Fabric、NGINX Ingress Controller 等也被列入影响范围。
触发条件:
受影响版本的 NGINX 配置中同时存在以下模式时风险较高:
1. 使用 rewrite 指令;
2. rewrite 的替换字符串中包含问号 ?;
3. 后续同一作用域内跟随 rewrite、if 或 set 指令;
4. 使用未命名 PCRE 捕获组变量,如 $1、$2。
漏洞原理:
该漏洞源于 NGINX ngx_http_rewrite_module 中脚本引擎的状态传递不一致。当 rewrite 的 replacement 中包含 ? 时,主脚本引擎会进入 query string 参数处理状态,即设置 is_args = 1。随后如果 set 等复杂值处理逻辑引用 $1、$2 这类捕获组,NGINX 会先进行长度计算,再进行实际拷贝。问题在于长度计算阶段使用的是一个重新初始化的子引擎,该子引擎没有继承 is_args 状态,因此按原始长度分配缓冲区;而实际拷贝阶段仍在主引擎上执行,会按 query args 转义规则写入数据,导致部分字符被扩展为 %XX 形式,最终写入长度大于分配长度,形成堆缓冲区溢出。
漏洞概述:
攻击者在无需认证的情况下,只要能够向满足触发条件的 NGINX 服务发送特制 HTTP 请求,就可能触发 NGINX worker 进程中的堆内存破坏。根据 NVD/F5 描述,该漏洞可导致 worker 进程堆缓冲区溢出和重启;在 ASLR 关闭的系统上,存在代码执行可能。
DepthFirst 的技术分析进一步说明,在特定实验环境中,该堆溢出可被构造成对 NGINX 内存池 cleanup 链表的劫持,从而证明其具备 RCE 可利用性;但在真实环境中,稳定 RCE 还依赖地址随机化绕过、堆布局控制等额外条件。
风险描述:
1. 攻击者可通过构造恶意 URI 触发 NGINX worker 进程堆溢出,造成 worker 崩溃或反复重启,影响业务可用性。
2. 在 ASLR 关闭或被绕过的环境中,漏洞存在进一步发展为远程代码执行的风险。
3. 暴露在公网的反向代理、API 网关、Ingress Controller、边缘代理服务风险更高,因为攻击面位于 HTTP 请求处理路径,不依赖控制台或管理面暴露。
4. 使用复杂 rewrite/set 配置、历史遗留 API 路由迁移配置、Ingress 自动生成 rewrite 规则的环境,需要重点排查。
影响组件:
NGINX ngx_http_rewrite_module,以及依赖该模块并满足触发配置条件的 NGINX Open Source、NGINX Plus 和相关 F5/NGINX 产品。
处置建议:
1. 优先升级至 NGINX Open Source 1.30.1 stable 或 1.31.0 mainline 及以上版本,并在升级后重启或 reload NGINX worker,确保新二进制生效。
2. 如暂时无法升级,建议将未命名捕获组 $1、$2 改为命名捕获组,并避免在同一 rewrite 作用域中让包含 ? 的 replacement 影响后续 complex value 处理。
3. 保持 ASLR 启用,ASLR 虽然不能修复漏洞本身,但可显著提高从 worker 崩溃进一步发展为稳定代码执行的难度。
参考来源: CVE-2026-42945