EN
L3 · 拉裤子了nginx · F5 · HTTP/3 · TLS · 内存破坏nginx-oct-2026

nginx:五个“中危”漏洞,F5 给其中三个打了 8.1 分

nginx 1.30.6 和 1.31.7 修复五个 worker 进程漏洞:三个堆溢出/UAF、HTTP/3 请求体注入、TLS 会话伪造

nginx.org 把五个漏洞都定为中危,但 F5 的 CVE 记录给其中三个内存破坏漏洞打了 CVSS 8.1。每个漏洞都要特定配置才会触发:alias 配合 rewrite、正则 map 的捕获变量、AIO 配合 SSI、HTTP/3,或者会轮换的 TLS 会话票据密钥。暂无利用报告。

披露时间
2026年10月14日
公开披露日期
严重程度
CVSS 8.1 × 3
本页收录 5 个 CVE
波及范围
1.30.6 / 1.31.7 之前的 nginx 开源版、NGINX Plus R33 到 37.x,以及内置了它们的产品
nginx · F5 · HTTP/3 · TLS · 内存破坏
在野利用
未发现
未见利用或公开 PoC 的报告;CISA SSVC 给出的利用状态为 none

一句话说清楚

如果你的配置恰好以某种特定方式用到了这几个功能之一,构造好的请求就能让 nginx worker 写越界或用到已释放的内存然后崩掉,也能让攻击者往 HTTP/3 请求体里夹带额外字节,或者恢复一个他压根没建立过的 TLS 会话。

发生了什么

2026年10月14日,nginx 发布了 1.30.6(稳定版) 和 1.31.7(主线版),包含五个安全修复。F5 同一天发布了对应的安全公告和 CVE 记录。漏洞都出在 worker 进程里,控制面不受波及。默认编译加默认配置不会中招:每个漏洞都要求开启某个特定功能,或者以某种特定方式开启。

严重程度,各说各的

nginx.org 把五个都定为“中危”。F5 的 CVE 记录则给其中三个打了 CVSS 3.1 8.1(CVSS 4.0 9.2):alias/rewrite 溢出、变量计算溢出和 AIO/SSI 释放后重用。高分来自代码执行的可能性。F5 表示,只有在 ASLR 被关闭或可被绕过时才做得到;否则结果就是 worker 崩溃后重启。攻击复杂度被评为高,因为攻击者没法决定服务器怎么配置。有些新闻摘要因为 CVSS 4.0 的 9.2 分把它们称作“严重”,但厂商自己的定级是中危。

哪些配置受影响

  • CVE-2026-15176:location 里用了 alias,加上 rewrite,再加上在 set、return 或日志格式里用到 $request_filename。这个漏洞能追溯到 0.1.29,所以很老的部署也跑不掉。
  • CVE-2026-93479:带正则捕获的 map,且捕获变量被用在 root 或日志格式中。在 1.30.0 / 1.31.2 引入。F5 建议改用命名捕获作为临时缓解措施。
  • CVE-2026-95101:只影响 HTTP/3。源码编译默认不带 HTTP/3 模块,而且还需要一个 listen ... quic 监听,但很多打包好的版本都带了它。
  • CVE-2026-97629:用了 ssl_session_cache shared:... 却没配 ssl_session_ticket_key 文件,这是很常见的配置(票据默认开启)。伪造不是每次都能成功,但能绕过客户端证书校验,如果你靠 mTLS 做认证,这一点就很关键。
  • CVE-2026-97205:aio(默认关闭)加上使用 include virtual 的 SSI 页面。nginx.org 列出的受影响版本可追溯到 0.8.11;F5 的 CVE 记录只列出了 1.30.0 及之后的版本。开源版的版本范围我们以 nginx.org 为准。

更早那个 HTTP/3 堆溢出(CVE-2026-90439,9月15日在 1.30.5 / 1.31.6 修复)是另一次单独发版。如果你当时跳过了,这次升级会一并补上。

NGINX Plus 及其他 F5 产品

F5 列出的受影响版本是 NGINX Plus R33 到 R36 以及 37.x,并为 37.0 和 37.1 两条线提供了热修复。五个 CVE 记录里的热修复版本号并不完全一致,所以 Plus 该升到哪个版本,请以 F5 的 K 文章为准,别照抄本页。

加拿大网络安全中心对 F5 10月14日这批公告的汇总里,还列出了 5.7.0 之前的 NGINX Ingress Controller、2.8.0 之前的 NGINX Gateway Fabric、2.24.0 之前的 NGINX Instance Manager,以及 F5 WAF / DoS for NGINX。这批公告还包括同日发布的两个 njs 修复(njs 1.0.2),所以汇总里没说清这些产品分别受五个 nginx CVE 中的哪几个影响。如果你是通过这些产品在 Kubernetes 里跑 nginx,要升级的是产品本身,而不只是你以为它在用的那个镜像 tag。

等级

我们定为 L3。nginx 挡在相当大一部分网站前面,其中三个漏洞是远程攻击者够得着的内存破坏。之所以没定得更高,是因为每个漏洞都需要非默认或特定的配置,厂商定级为中危,代码执行得先过 ASLR 这一关,而且既没有公开 PoC,也没有利用报告。

马桶里有什么

CVE-2026-15176CVSS 8.1

alias 配合 rewrite 时的缓冲区溢出

location 用了 alias、URI 被 rewrite 改写过、并且在 set、return 或访问日志格式里用到了 $request_filename 时,worker 会发生堆溢出。影响 0.1.29 到 1.31.6。

说人话: 一根年头很久的老水管,只有按某种特定接法装的才会爆。

CVE-2026-93479CVSS 8.1

计算变量时的缓冲区溢出

计算含变量的字符串表达式时发生堆溢出,例如正则 map 的捕获变量在 map 自身的输出之前就被用在 root 或日志格式里。影响 1.30.0 到 1.30.5,以及 1.31.2 到 1.31.6。

CVE-2026-95101CVSS 5.3

HTTP/3 请求体注入

未知 HTTP/3 帧的一部分可能被当成请求体处理,从而绕过 client_max_body_size,或者往代理出去的请求里注入数据。影响 1.25.0 到 1.31.6。

说人话: 信封你都封好了,还有人往里塞了张纸条。

CVE-2026-97629CVSS 6.5

票据密钥轮换导致 TLS 会话伪造

用了共享的 ssl_session_cache 却没配置 ssl_session_ticket_key 文件时,有一个自动轮换出来的票据密钥没有初始化,于是会话有时可以被伪造,进而可能跳过客户端证书校验。影响 1.23.2 到 1.31.6。

CVE-2026-97205CVSS 8.1

AIO 配合 SSI 时的释放后重用

在某些配置下开启 aio 后,使用 “include virtual” 的 SSI 页面可能在 worker 中触发释放后重用(UAF)。

你踩到了吗?

在每台机器上运行 nginx -v,然后输入版本号,或者点一个最接近的。

修复版本(2026年10月14日)
分支安全版本状态
nginx mainline 1.31.x1.31.7主线版
nginx stable 1.30.x1.30.6稳定版
nginx 1.28 及更早版本none已不再支持,请升级到 1.30.6+

今晚补不了?先把洞堵上

nginx.conf
# CVE-2026-97629:固定票据密钥(或者干脆关掉票据)
ssl_session_ticket_key /etc/nginx/ticket.key;
# ssl_session_tickets off;

# CVE-2026-97205:提供 SSI 页面的地方别开 AIO
aio off;

# CVE-2026-95101:加在开了 HTTP/3 的 server 上
proxy_request_buffering off;

每一行只管一个 CVE,两个缓冲区溢出漏洞也没有开关可关:只能不再使用 alias/$request_filename 或未命名的正则捕获。升级才是真正的修复。

案发时间线

  1. 2026年9月15日

    nginx 1.30.5 / 1.31.6 修复了一个 HTTP/3 堆溢出

    CVE-2026-90439,是更早的另一次发版,不属于这一批。

  2. 2026年10月14日

    nginx 1.30.6(稳定版)和 1.31.7(主线版)发布,包含五个安全修复

    F5 同日发布了对应的 K 文章、CVE 记录和 NGINX Plus 热修复。

  3. 2026年10月15日

    加拿大网络安全中心发布安全公告 AV26-1049

  4. 2026年10月21日

    nginx 1.31.8 主线版发布

    版本比修复版本新,所以同样包含修复。

各方说法

我们列出每条说法和它的出处,并标出一手来源(厂商、研究人员、软件仓库)。各方说法不一致时,按最坏的可信情况定级。