nginx 一次修了五个洞,最老的等了二十一年
2026 年 10 月 14 日,nginx 发布 1.31.7,一次修了五个安全洞。第二天补上稳定版 1.30.6。五个洞里有三个是内存破坏类,官方全部标为 medium 级——但美国国家漏洞库给其中三个打了 8.1 分的高危。
最值得说的是年龄。最老的那个洞,编号 CVE-2026-15176,影响范围从 0.1.29 版本起步。0.1.29 发布于 2005 年 5 月 12 日。那一天 nginx 的更新日志里,特性一栏写的是:SSI 模块开始支持 include virtual 命令。这个功能活了二十一年,然后有人发现,把它和另一个功能组合起来,能砸穿进程。
三个内存洞,三对组合
nginx 的世界由指令搭建,出事的从来不是单个指令,是指令的组合。
第一个洞在 alias 配 rewrite。alias 是把 URL 路径映射到磁盘上另一处地址的指令;rewrite 是改写请求 URI 的指令。两个单独用都没事,叠在一起,再让改写后的 URI 映射到文件路径,就在工作进程里埋了一个堆缓冲区溢出。配置写得对,这个洞休眠二十一年;配置写得巧,一个精心构造的请求就能触发崩溃。官方的措辞很克制:可能导致远程代码执行,前提是系统的 ASLR——地址空间随机化——被关闭,或被攻击者绕过。
第二个洞是异步文件 I/O 配 SSI。异步文件读写是 2009 年 8 月加进 nginx 的功能;SSI 的 include virtual,就是 2005 年那次更新加进来的。两个各活了十几年的老功能,凑在一起出现释放后使用(use-after-free):一块内存被释放后又被引用,内存破坏,进程崩溃。同样的 ASLR 前提,同样的「理论上可执行代码」。
第三个洞最年轻,六月才埋下。map 指令配上正则匹配,如果先引用了正则的捕获变量、后引用 map 的输出变量,求值字符串表达式时会溢出——受影响的是文档根目录计算和请求日志。这个洞影响 http 和 stream 两个模块,从 1.31.2 到 1.31.6、1.30.0 到 1.30.5,存在了四个月。
三个洞的共同点:都是内存错误,都在工作进程里,RCE 都卡在 ASLR 这道坎上。现代系统默认开着 ASLR,所以官方把三个洞全部定成 medium——崩溃是确定的,代码执行是理论上的。美国漏洞库不管这个,照打 8.1。两边都有道理:对运维,这五个洞今天就该升;对利用者,还差一道坎。
两个协议层的洞
剩下两个不碰内存,碰协议。
HTTP/3 那个洞影响从 1.25.0 起的所有版本——2023 年 5 月,HTTP/3 首次进入 nginx 正式版本。QUIC 协议里有一种「未知帧」:新版本的协议特性,老服务器不认识。问题出在 nginx 读帧的方式上:一个未知帧的一部分可能被当成请求体读进去。后果有两个,绕过 client_max_body_size 的大小限制,或者往代理的后端请求里注入数据。前者砸爆磁盘,后者更脏——nginx 通常站在互联网和你的应用之间,它替应用挡住用户,这个洞让用户的输入能从 nginx 手里漏过去。
TLS 那个洞更微妙。TLS 会话恢复靠票据密钥,nginx 从 1.23.2 起支持自动轮换这些密钥。轮换的实现里,有一把密钥没有被初始化。攻击者可以伪造 TLS 会话——官方原话补了两个限定:以非确定性的方式,且不在攻击者控制之下。伪造的会话不可控,听起来威胁不大,但伪造本身就够穿透一类防线:客户端证书验证。你的服务器要求用户出示证书才放行,攻击者拿伪造的会话绕过这一步。这个洞官方标 medium、漏洞库打 6.5,触发条件是配置了共享的 ssl_session_cache 且没有显式指定票据密钥文件——恰好是最常见的默认姿势。
谁找出来的
官方更新日志里,四个洞后面跟着致谢:Matt Suiche(Tolmo Inc.)、Hansol Lee(GOTROOT)、PhiNode Labs、cyberlancer。第一个名字值得停一下——Matt Suiche 是内存取证领域的老将,早年创办 Comae,做的是崩溃转储分析。用内存取证的功夫找 nginx 的内存洞,算专业对口。最老的 alias 洞,日志里没有署名。
修复就是升级:开发版 1.31.7 以上,稳定版 1.30.6 以上,10 月 14 日之后还跟了一个 1.31.8。检查清单也短:配置里有 alias 配 rewrite 的看一眼,开 AIO 且用 SSI 的看一眼,map 用正则捕获变量的看一眼,开 HTTP/3 的升,TLS 用自动票据轮换的升。五个洞没有共同的触发器,唯一的共同点是它们都在 nginx 里——这个软件承担着互联网大约三分之一的网站,出了名地稳,稳到没人想到第一个洞埋了二十一年。
十天后,1.31.8 发布。更新日志恢复了平静,那一栏 Security 消失了,特性清单里照旧是新功能和修不完的小毛病。
信源:nginx.org 官方安全公告与 CHANGES(1.31.7,2026-10-14);NVD 各 CVE 条目(CVE-2026-15176 / 93479 / 97205 / 95101 / 97629,发布于 2026-10-14);F5 安全公告 K000162416/K000162606-K000162613;版本日期取自 nginx 各代 CHANGES(0.1.29:2005-05-12;0.8.11:2009-08-28;1.23.2:2022-10-19;1.25.0:2023-05-23;1.31.2:2026-06-17)。
讨论回复
加载中...正在加载回复...
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。