一行 C 代码。一个伪造的 TLS 会话。由 PhiNode Labs 发现、端到端验证,并协调修复。
针对 CVE-2026-97629 的概念验证漏洞利用、根因分析、一行补丁以及复现证据。该漏洞是 nginx 中的 TLS 会话票据伪造,可绕过客户端证书(双向 TLS)认证。该漏洞在协调披露流程下报告给 F5,并归功于 PhiNode Labs。
阅读完整分析文章: https://phinode.io/nginx-cve-2026-97629.html
“F5 感谢 PhiNode Labs 将这一问题提请我们注意,并遵循了协调披露的最高标准。” — F5 安全公告 K000162606
| CVE | CVE-2026-97629 |
| 公告 | F5 K000162606 · GHSA-862p-pr69-37gq |
| 严重性 | CVSS 3.1 6.5 / CVSS 4.0 8.3(F5)。在双向 TLS 部署中最高可达 10.0 |
| 弱点 | CWE-908 — 使用未初始化的资源 |
| 组件 | ngx_http_ssl_module — ngx_ssl_rotate_ticket_keys() |
| 受影响版本 | nginx 1.23.2 – 1.31.6、NGINX Plus 至 R37(37.0.5),以及基于 nginx 构建的 F5 产品 |
| 修复版本 | nginx 1.31.7 和 1.30.6、NGINX Plus 37.0.5.1 / 37.1.0.1 |
| 致谢 | PhiNode Labs — [email protected] |
为了快速恢复 TLS 连接,nginx 使用轮换密钥封装会话票据,并在每个 worker 中保留三个这样的密钥:当前、上一个、下一个。在轮换过程中,ngx_ssl_rotate_ticket_keys() 只将三个槽位中的两个复制到每个 worker 中;第三个槽位在启动后从未被写入。在默认的 Linux 构建中,该内存全为零——在每个默认部署的每个 worker 中都是相同的、可预测的值。
解密回调会扫描全部三个槽位。客户端可以提交一个伪造的票据,其 16 字节密钥名为全零,从而匹配未被触碰的第三个槽位,并让 nginx 使用任何人都能猜到的全零 AES 和 HMAC 密钥将其解封。由此,攻击者可以用自己选择的密钥伪造一个有效会话,并在不完成真实握手的情况下恢复加密连接。在服务器依赖客户端证书来决定谁可以进入的场景中,该检查被绕过。
修复只需一个字符:
ngx_memcpy(keys->elts, cache->ticket_keys,
- 2 * sizeof(ngx_ssl_ticket_key_t));
+ 3 * sizeof(ngx_ssl_ticket_key_t));
参见 patch/ 获取可直接应用的 diff。
nginx 为大约三分之一的网站提供服务。F5 所认定的影响——绕过客户端证书验证——对双向 TLS 的冲击最为严重:开放银行(PSD2 / FAPI)、医疗数据交换、5G 核心网功能、Kubernetes ingress、零信任与设备集群,在这些场景中证书就是整个访问决策。在这些部署中,伪造即构成完整的客户端身份验证绕过,属于最高严重级别的解读。
一切均在本地进行,使用回环监听器与一次性自签名证书。参见 poc/ 获取漏洞利用代码,参见 evidence/ 获取捕获的输出:nginx 接受全零密钥、简化的握手,以及通过伪造会话进行的完整读/写(解密后的 HTTP 404)。
cd poc
python3 make_forged_session.py # patch the session_id_context
python3 forge_ticket.py # -> VERDICT: TICKET ACCEPTED
python3 forge_ticket_full.py # -> full read/write over the forged session
ssl_session_tickets off;ssl_session_ticket_key 文件,并由你自己轮换。只有当以下所有条件同时成立时,服务器才会暴露:存在漏洞的版本、
ssl_session_cache shared:…、启用票据且没有密钥文件,以及由证书决定访问权限。
| 日期 | 事件 |
|---|---|
| 2026 年 6 月 | PhiNode Labs 发现槽位不匹配,并端到端证明了该问题 |
| 2026 年 8 月 | 报告给 F5 SIRT;转交至 NGINX 产品工程团队 |
| 2026 年 9 月 | NGINX PE 将其归类为漏洞 |
| 2026 年 10 月 12 日 | 分配 CVE-2026-97629(F5 NPS-179) |
| 2026 年 10 月 14 日 | F5 发布 K000162606;修复随 nginx 1.31.7 / 1.30.6 发布 |
本概念验证在修复发布之后、并配合 F5 的协调发布而公开,供防御者验证自己的服务器。 请勿将其用于你并不拥有或运营的系统。
PhiNode Labs 是一家应用程序分析研究实验室。 我们找出扫描器和语言模型会忽略的缺陷——没有注入字符串, 没有明显的坏函数,只是一个本应为三却为二的大小—— 方法是推理程序内存在运行时实际保存的内容。没有见证,就没有断言。
关键词:CVE-2026-97629、nginx、TLS 会话票据、会话票据伪造、 会话恢复、双向 TLS、mTLS、客户端证书绕过、 ngx_http_ssl_module、ngx_ssl_rotate_ticket_keys、F5、NGINX Plus、概念验证、 PoC、漏洞利用、CWE-908、PhiNode Labs、程序分析。