Skip to content

大佬们,什么时候升级一下Tengine的nginx内核到1.30.2版本,修复下CVE-2026-42945的nginx漏洞 #2043

Description

@dingzt

NGINX存在远程代码执行漏洞(CVE-2026-42945),现将漏洞情况通告如下:
一、漏洞描述
NGINX存在远程代码执行漏洞。该漏洞存在于NGINX的ngx_http_rewrite_module模块,当配置中rewrite指令后跟随rewrite、if或set指令,且使用了带问号替换字符串的未命名PCRE(Perl兼容正则表达式)捕获组时会触发漏洞。未认证攻击者可通过发送构造的恶意HTTP请求利用该漏洞,利用需要满足特定配置条件,成功利用后会导致NGINX工作进程堆缓冲区溢出,引发进程重启造成拒绝服务。若目标系统关闭地址空间布局随机化(ASLR),攻击者还可能实现远程代码执行,该漏洞仅影响数据平面,无控制平面暴露风险。
二、影响范围
受影响版本:
NGINX Plus R32 - R36
NGINX Open Source 1.0.0 - 1.30.0
NGINX Open Source 0.6.27 - 0.9.7
NGINX Instance Manager 2.x 2.16.0 - 2.21.1
F5 WAF for NGINX 5.x 5.9.0 - 5.12.1
NGINX App Protect WAF 4.x 4.9.0 - 4.16.0
NGINX App Protect WAF 5.x 5.1.0 - 5.8.0
F5 DoS for NGINX 4.x 4.8.0
NGINX App Protect DoS 4.x 4.3.0 - 4.7.0
NGINX Gateway Fabric 1.x 1.3.0 - 1.6.2
NGINX Gateway Fabric 2.x 2.0.0 - 2.5.1
NGINX Ingress Controller 3.x 3.5.0 - 3.7.2
NGINX Ingress Controller 4.x 4.0.0 - 4.0.1
NGINX Ingress Controller 5.x 5.0.0 - 5.4.1

Activity

  1. KernCheh commented on Jun 8, 2026

    @KernCheh

    +1
    感谢大佬们协助发版

  2. drawing commented on Jun 10, 2026

    @drawing
    Collaborator

    你好 @dingzt,

    CVE-2026-42945 的修复(以及 CVE-2026-42946、CVE-2026-42934、CVE-2026-40701 共四个 CVE)已于 2026 年 5 月 15 日通过 #2027 合入 master 分支。你现在即可从 master 分支拉取代码编译打包,获取全部安全修复。

    关于 nginx 内核版本升级计划,请参考 Tengine 3.2.0 发布计划(Discussion #2036)。

    简要总结:

    ✅ CVE 安全修复 → 已合入 master,可立即从源码编译使用
    🗓️ nginx 内核升级计划 → 参考 Discussion #2036

  3. lianglli commented on Aug 1, 2026

    @lianglli
    Member

    CVE-2026-42945 在 Tengine 3.2.0 中已修复,当前 3.2.0-rc1 预发布版本即已包含该修复。

    一、修复状态

    • 修复提交:22ff5ab8 "fix: CVE-2026-42945 - heap buffer overflow in ngx_http_rewrite_module",已合入 tengine-3.2.0-dev,并包含在 3.2.0-rc1 标签中。
    • 改动位置:src/http/ngx_http_script.c 的 ngx_http_script_regex_end_code(),在每条 rewrite 指令执行结束后重置 e->is_args。原问题是该标志位在替换串带查询参数时被置位却从不清除,导致后续 set / if 中的捕获组被错误转义,进而在未按转义预留空间的缓冲区上发生溢出。
    • 与上游一致:该修复对齐 nginx 官方提交 524977e(官方在 nginx 1.31.0 发布)。Tengine 3.2.0 的核心已同步至 nginx 1.31.3,因此这一项是「专项 backport + 版本同步」双重覆盖,不存在合并过程中被回退的可能。
    • 回归测试:新增 tests/nginx-tests/tengine-tests/rewrite_capture_args.t,直接针对该 CVE 的触发路径断言路径捕获中的 %、空格、+ 必须被正确重新转义;另有 rewrite_overlap_captures.t 覆盖 is_args 重置的加固。两者随每次 CI 执行。

    自查方法:如果你手上已有源码,可执行
    grep -n "is_args = 0" src/http/ngx_http_script.c
    在 ngx_http_script_regex_end_code() 函数体内能看到该赋值,即为已修复版本。

    二、受影响版本与升级建议

    • 受影响:Tengine 3.1.0 及更早版本(3.1.0 基于 nginx 1.24.0,不含该修复)。
    • 已修复:Tengine 3.2.0(目前为 3.2.0-rc1,正式版发布中)。
    • 建议:直接升级到 3.2.0。如果贵方流程要求正式版(GA)才能上线,可先在测试环境用 rc1 验证,正式版发布后替换;rc1 与正式版之间不会再改动该修复。
    • 若暂时无法升级:请自查配置中是否存在「rewrite 的替换串里带 ? 查询参数」且「同一 location 中其后仍有 set / if / rewrite 使用正则捕获变量($1、$2 等)」的组合。将这两类指令拆到不同 location,或去掉后续对捕获变量的引用,可以规避触发路径。这只是临时缓解,不能替代升级。

    三、3.2.0 一并修复的其他安全问题

    同一版本还修复了:CVE-2026-49975(HTTP/1、HTTP/2、HTTP/3 的 HPACK/QPACK 头部解压炸弹)、CVE-2026-9256(ngx_http_rewrite_module 重叠捕获组导致的堆缓冲区溢出)、CVE-2026-42946(scgi/uwsgi 解析被切分的状态行时越界读)、CVE-2026-42934(ngx_http_charset_module 的 recode_from_utf8() 越界读)、CVE-2026-40701(ngx_http_ssl_module OCSP 解析器释放后使用)、CVE-2026-1642(SSL 后端提前返回明文响应时在握手前被解析),以及 mod_dubbo 的一处越界读。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions