nginx 在 2026 年 9 月 15 日同时发布了稳定版 1.30.5 和主线版 1.31.6,修复一个安全问题:CVE-2026-90439。官方变更说明的原话是:在某些配置下,使用 HTTP/3 且搭配 OpenSSL 3.5.0 及更早版本时,worker 进程里可能发生堆内存缓冲区溢出。官方安全公告把它归在 ngx_http_v3_module,评级为中危,受影响版本是 1.29.2 到 1.31.5,修复版本是 1.30.5 和 1.31.6 及以上。
先判断你在不在范围里
三个条件同时满足才受影响:
- 版本在 1.29.2 到 1.31.5 之间:
nginx -v。 - 开了 HTTP/3:配置里有
listen ... quic。用nginx -T | grep -n quic查一下完整生效配置,别只看主配置文件。 - 编译时用的是 OpenSSL 3.5.0 或更早:
nginx -V输出里会写「built with OpenSSL x.y.z」。
没开 HTTP/3 的站点不受这个漏洞影响。不过这次更新还带了一项行为变化:在普通 TLS 连接里收到的 QUIC transport parameters 扩展,现在一律忽略。正常客户端不会这样发,一般无感。
别漏了 njs 和 7 月那一批
如果你用到了 nginx 的 JavaScript 模块 njs,9 月 2 日发布的 njs 1.0.1 修了三个漏洞:js_access 的访问控制绕过(CVE-2026-18329)、ngx.fetch() 导致 worker 崩溃(CVE-2026-78222)、xml.exclusiveC14n() 的堆缓冲区溢出(CVE-2026-78689)。
另外,如果你还停在 1.30.4 之前,需要补的不止这一个。7 月 15 日的 1.30.4 修了 map 加正则的缓冲区溢出(CVE-2026-42533,我们在当时的文章里详细写过)、slice 模块的未初始化内存访问(CVE-2026-60005)和 SSI 模块的释放后使用(CVE-2026-56434)。直接升到 1.30.5,三件事一次解决。
升级时注意
- 发行版自带的 nginx 往往是向后移植补丁,版本号不会变成 1.30.5,以发行版的安全公告为准;用 nginx 官方源的,直接升到 1.30.5 或 1.31.6。
- 升级后先
nginx -t再重载,确认配置能通过;HTTP/3 走 UDP 443,升级后记得从外网验证一次。 - 还在搭第一个站的,用 Nginx 搭建第一个网站和Let's Encrypt SSL 证书配置是基础;升级或重载之后站点打不开,按 502 / 504 排查指南一步步查。