nginx 1.31.2发布:3个安全漏洞修复全面落地,HTTP/3、gRPC、HTTP/2、Charset、SSL 与 request_id 全面更新



nginx 1.31.2 已正式发布。作为 mainline 主线版本,这次更新最值得关注的,是一次集中式的安全修复与多个核心模块的细节增强。
从发布说明来看,nginx 1.31.2 修复了 3 个明确披露的安全问题,分别涉及 HTTP/3、代理协议与字符集处理等关键模块。同时,版本中还包含 request_id 生成优化、SSL 变量增强、XSLT 修复、Split Clients 计算改进、Secure Link 常量时间比较、访问日志字段修正,以及 Windows 32 位构建所使用 OpenSSL 的更新等多项内容。
一、nginx 1.31.2 发布核心结论
本次 nginx 1.31.2 的核心信息可以先概括为以下几点:
- 这是 nginx 1.31.2 的最新发布版本
- 该版本是 mainline 主线版本
- 本次更新首先聚焦安全问题修复
- 共修复 3 个已披露漏洞
- 覆盖模块包括 ngx_http_v3_module、ngx_http_proxy_v2_module、ngx_http_grpc_module、ngx_http_charset_module
- 除安全修复外,还包含 request_id、SSL、XSLT、Split Clients、Secure Link、Access Log、HTTP/3、Windows 构建相关改动
- GitHub 生成摘要显示,本次共有 7 位贡献者参与
- 一共包含 22 次提交
- 涉及 29 个文件改动
对于运维、架构、网关、中间件以及安全团队来说,这个版本的价值非常明确:安全补丁优先,协议栈细节优化其次,外围能力增强同步推进。
二、3 个安全漏洞修复是这次更新的最大重点
从官方发布说明来看,nginx 1.31.2 明确修复了以下 3 类安全问题。
1. 修复 ngx_http_v3_module 中的 use-after-free 漏洞
对应漏洞编号:
- CVE-2026-42530
发布说明指出,nginx 1.31.2 修复了 ngx_http_v3_module 中的 use-after-free 漏洞。
这个问题发生在 HTTP/3 相关模块中,而 HTTP/3 本身就是近年来高关注度的协议方向。因此,这类内存生命周期处理问题尤其值得关注。对于正在测试或使用 HTTP/3 能力的环境来说,这项修复显然是本次升级最不能忽略的内容之一。
结合提交摘要可以看到,与 HTTP/3 相关的修复和优化不止一处,后文还会继续展开,包括:
- 使用最大表容量进行插入缓冲区分配
- 从连接池分配插入缓冲区
- 避免重复创建标准客户端单向流
这说明本次版本对 HTTP/3 路径做了比较集中的处理。
2. 修复 ngx_http_proxy_v2_module 和 ngx_http_grpc_module 中的缓冲区溢出漏洞
对应漏洞编号:
- CVE-2026-42055
发布说明指出,nginx 1.31.2 修复了 ngx_http_proxy_v2_module 和 ngx_http_grpc_module 中的 buffer overflow 漏洞。
这项修复覆盖了两个非常关键的链路:
- 代理协议相关模块
- gRPC 相关模块
而 GitHub 摘要中的对应提交内容也非常直接:
- Upstream: limit header length for HTTP/2 and gRPC
这说明修复的核心方向之一,是对 HTTP/2 和 gRPC 的头部长度进行限制。也就是说,这次修复不是停留在表层,而是进一步落实到了上游处理路径中的边界控制。
对于生产环境而言,HTTP/2 和 gRPC 往往承载着高并发、高频调用、微服务通信或者网关转发任务。一旦头部处理边界不清晰,就可能带来严重风险。因此,这项修复的意义非常大。
3. 修复 ngx_http_charset_module 中的缓冲区过读漏洞
对应漏洞编号:
- CVE-2026-48142
发布说明指出,nginx 1.31.2 修复了 ngx_http_charset_module 中的 buffer overread 漏洞。
在提交摘要中,还能看到更具体的描述:
- Charset: fixed another rare buffer overread in recode_from_utf8()
这里有两个非常重要的信息:
- 问题属于“another rare buffer overread”,说明这是又一个罕见的缓冲区过读场景
- 发生位置在 recode_from_utf8() 相关处理路径中
Charset 模块虽然不像 HTTP/3、gRPC 那样在讨论热度上更显眼,但字符集转换往往涉及底层字节处理,只要出现越界读取相关问题,就必须谨慎对待。
三、What’s Changed 全量解读:这次到底改了什么
除了安全修复,本次 GitHub 发布摘要还给出了完整的变更列表。下面逐项展开。
1. Use SipHash to speed up $request_id generation
变更内容:
- 使用 SipHash 加速 $request_id 生成
对应提交链路包括:
- 版本号变更
- Core: added SipHash-2-4 implementation
- Switched $request_id to SipHash-based generation
这组改动说明,本次版本在核心层新增了 SipHash-2-4 实现,并将 $request_id 的生成方式切换为基于 SipHash 的生成机制。
这里最关键的点在于两层:
- nginx 核心中新增了 SipHash-2-4 实现
- request_id 生成逻辑已完成切换
GitHub 摘要对这一变化的总结非常明确:这是为了加速 $request_id generation。
对于很多线上环境来说,$request_id 经常用于:
- 请求追踪
- 日志关联
- 调试排障
- 链路分析
因此,这项改动虽然不是安全修复,但非常值得关注,因为它直接作用于通用能力。
2. SSL: add $ssl_sigalgs variable
变更内容:
- SSL 新增 $ssl_sigalgs 变量
这是一个很清晰的功能增强项。也就是说,在 nginx 1.31.2 中,SSL 相关变量体系新增了 $ssl_sigalgs。
从运维和配置层面看,这类变量的引入通常意味着可观测性、可配置性或者日志信息表达能力得到了增强。发布摘要没有给出更进一步的解释,因此这里保持基于原始信息的解读:新版本已经加入了这个变量。
3. Xslt: fixed handle vsnprintf return value
变更内容:
- Xslt 修复了对 vsnprintf 返回值的处理
对应提交描述为:
- Xslt: fix handling of vsnprintf() return value
这说明在 Xslt 相关路径中,之前对 vsnprintf() 返回值的处理存在问题,本次版本进行了修复。
这类修复通常属于典型的细节稳定性改动。虽然不是高曝光特性,但这类问题往往影响模块行为的一致性与健壮性。
4. GH: remove the set-creation-date.yaml workflow
变更内容:
- 移除 set-creation-date.yaml 工作流
这项改动属于 GitHub 工作流层面的调整,不是 nginx 运行时功能变化,但它仍然出现在本次发布摘要中,说明也是此次版本变更的一部分。
5. Split clients: improved calculation of range boundaries
变更内容:
- Split Clients 改进了范围边界的计算
对应提交为:
- Split clients: improved calculation of range boundaries
Split Clients 本身就与流量切分、范围计算有关,因此“范围边界计算改进”这一点很值得关注。虽然摘要没有展开实现细节,但从文本来看,改动目标很明确,就是优化边界计算方式。
6. Style
变更内容:
- 代码风格调整
这类改动通常不会直接影响功能,但会影响代码一致性和可维护性。发布摘要单独列出,说明在本次版本中确实包含一项纯样式层面的提交。
7. GH: Fix the whitespace checker workflow
变更内容:
- 修复空白字符检查工作流
进一步看提交列表,还可以发现 GitHub 工作流相关修复并不只有一条,而是包括:
- GH: fix summary formatting for check-whitespace.yaml
- GH: fix check-whitespace.yaml error return with multiple commits
- GH: fix check-whitespace.yaml error return with multiple commits
也就是说,本次版本中与 check-whitespace.yaml 相关的 GitHub 工作流修复是连续进行的,主要涉及:
- 摘要格式修正
- 多个提交场景下的错误返回修正
这类改动虽然不影响 nginx 二进制运行逻辑,但对仓库自动化流程和提交检查质量有直接作用。
8. Secure link: Compare hashes in constant time
变更内容:
- Secure Link 使用常量时间比较哈希
提交列表中还能看到一个风格调整项:
- Secure link: style
- Secure link: compare hashes in constant time
这说明 Secure Link 相关改动实际上包含两部分:
- 代码风格层面的整理
- 真正的逻辑增强,即以常量时间进行哈希比较
“常量时间比较”本身就是非常典型的安全敏感处理方式,这一改动虽然没有对应单独的 CVE 编号,但从安全实现角度看,价值非常明确。
9. Access log: Fix “request_length” format length
变更内容:
- 修复 access log 中 request_length 的格式长度
对应提交为:
- Access log: fix “request_length” format length
这项改动聚焦在访问日志模块,具体对象是 request_length 字段的格式长度问题。对于依赖日志做分析、统计、审计的场景来说,这样的修复虽然细小,但很实际。
10. Updated OpenSSL used for win32 builds
变更内容:
- 更新用于 win32 构建的 OpenSSL
提交列表中对应内容包括:
- Updated OpenSSL used for win32 builds
- Updated link to OpenSSL commit
这里可以看出两层信息:
- Windows 32 位构建所使用的 OpenSSL 已更新
- 与之相关的 OpenSSL 提交链接也进行了更新
这属于构建链路层面的调整,重点是 win32 builds。
11. Nginx 1.31.2 with security fixes for HTTP/2 proxy, grpc, HTTP/3, charset
发布摘要中还有一条总结式变更:
- Nginx 1.31.2 with security fixes for HTTP/2 proxy, grpc, HTTP/3, charset
这条信息实际上可以看作是对本次版本安全修复范围的一次集中归纳,也就是:
- HTTP/2 proxy
- gRPC
- HTTP/3
- charset
这与前文提到的 3 个漏洞修复内容是相互呼应的。
四、按提交时间线梳理:本次版本是如何完成的
如果从 GitHub 生成的提交时间轴来看,nginx 1.31.2 的变更推进脉络也非常清晰。
1. Jun 3, 2026
这一天出现了与版本和 request_id 相关的关键提交:
- Version bump
- Core: added SipHash-2-4 implementation
- Switched $request_id to SipHash-based generation
可以看出,本次版本在较早阶段就已经引入了 SipHash-2-4,并完成了 $request_id 生成逻辑切换。
2. Jun 5, 2026
这一天的核心变更是:
- SSL: add $ssl_sigalgs variable
也就是说,SSL 新变量是在这一时间点加入的。
3. Jun 8, 2026
这一天有两项提交:
- Xslt: fix handling of vsnprintf() return value
- GH: remove the set-creation-date.yaml workflow
前者是模块逻辑修复,后者是工作流调整。
4. Jun 9, 2026
这一天的变化是:
- Split clients: improved calculation of range boundaries
这是 Split Clients 范围边界计算改进提交所在时间点。
5. Jun 11, 2026
这一天的提交非常密集,覆盖风格、工作流、安全与日志多个方向:
- Style
- Updated link to OpenSSL commit
- GH: fix summary formatting for check-whitespace.yaml
- GH: fix check-whitespace.yaml error return with multiple commits
- Secure link: style
- Secure link: compare hashes in constant time
- Access log: fix “request_length” format length
- GH: fix check-whitespace.yaml error return with multiple commits
从这里可以明显看出,中期阶段完成了大量清理、修复与增强工作。
6. Jun 17, 2026
这一天出现了与安全修复最相关的一组关键提交:
- Updated OpenSSL used for win32 builds
- HTTP/3: use max table capacity for insert buffer allocation
- HTTP/3: allocate insert buffer from connection pool
- HTTP/3: avoid recreation of standard client uni streams
- Upstream: limit header length for HTTP/2 and gRPC
- Charset: fixed another rare buffer overread in recode_from_utf8()
- nginx-1.31.2-RELEASE
这组提交几乎就是 nginx 1.31.2 的收尾核心内容,尤其是:
- HTTP/3 相关三项修复和优化
- HTTP/2 与 gRPC 头部长度限制
- Charset 稀有缓冲区过读修复
- 正式 release 提交
因此,从时间线来看,安全修复项是在版本后期集中落地并进入发布状态的。
五、HTTP/3 相关改动值得单独关注
在本次版本中,HTTP/3 的变更不仅体现在官方说明中的漏洞修复,还体现在提交列表中的三项具体调整:
- HTTP/3: use max table capacity for insert buffer allocation
- HTTP/3: allocate insert buffer from connection pool
- HTTP/3: avoid recreation of standard client uni streams
结合发布说明中的 use-after-free 漏洞修复,可以看到 nginx 1.31.2 对 HTTP/3 的处理是成体系的,而不是简单打一处补丁。
这三项改动从字面上体现出的方向包括:
- 插入缓冲区分配方式的调整
- 内存分配来源的调整
- 标准客户端单向流避免重复创建
再结合漏洞修复本身,可以感受到这次版本对于 HTTP/3 模块稳定性和内存相关处理是高度重视的。
对于正在跟进 HTTP/3 的团队来说,这一版很有代表性。
六、HTTP/2 与 gRPC 修复也非常关键
除了 HTTP/3,本次版本另一个不能忽视的重点就是 HTTP/2 与 gRPC。
提交里明确写到:
- Upstream: limit header length for HTTP/2 and gRPC
再对应到官方说明中的漏洞描述:
- ngx_http_proxy_v2_module 和 ngx_http_grpc_module 中的缓冲区溢出漏洞修复
- CVE-2026-42055
这说明本次修复的落脚点之一,就是上游头部长度边界控制。
对于很多现代业务来说,gRPC 与 HTTP/2 是服务间通信和高性能网关中的常见组合。因此,只要你在线上有相关链路,这一版更新就值得认真评估。
七、Charset 修复虽“罕见”,但不能忽视
提交中写的是:
- Charset: fixed another rare buffer overread in recode_from_utf8()
关键词有两个:
- another
- rare
这代表问题并不是一个普通的通用路径错误,而是一个相对少见、但已经被明确定位出来的缓冲区过读场景。
再与 CVE-2026-48142 对应起来,就能看出 nginx 1.31.2 在 Charset 模块上不是一般性清理,而是一次正式的安全修复发布。
所以哪怕你的业务并不高频关注 Charset 模块,也不能因为“rare”这个词就忽略这次升级的重要性。
八、日志、变量、工作流、构建链路也都有覆盖
很多版本发布常常只被关注“是否修复漏洞”,但 nginx 1.31.2 的价值还在于,它不是只有安全修复,而是同时覆盖了多个外围维度。
1. 变量层面
- 新增 $ssl_sigalgs
- 优化 $request_id 生成方式
2. 日志层面
- 修复 request_length 格式长度问题
3. 安全实现层面
- Secure Link 采用常量时间哈希比较
4. 构建层面
- 更新 win32 构建使用的 OpenSSL
5. 仓库自动化层面
- 移除 set-creation-date.yaml 工作流
- 修复 check-whitespace.yaml 摘要格式问题
- 修复 check-whitespace.yaml 在多提交场景下的错误返回问题
这意味着 nginx 1.31.2 不是“只修漏洞”的纯补丁版本,它在多个方向上同步完成了打磨。
九、从版本视角看,这次发布有哪些特别之处
如果只基于现有发布信息来总结,nginx 1.31.2 的特点非常鲜明:
- 安全问题是第一优先级
- 受影响模块覆盖当前常见协议与功能模块
- HTTP/3 相关修复和优化明显集中
- HTTP/2 与 gRPC 头部边界控制被强化
- Charset 模块再次修复稀有过读问题
- request_id 的生成逻辑出现了较明显的实现升级
- SSL 变量体系得到补充
- Secure Link 进一步强化比较方式
- 访问日志细节得到修正
- Windows 32 位构建依赖同步更新
- 仓库自动化流程持续清理和修复
从这些点看,nginx 1.31.2 虽然版本号变化不大,但实际改动并不轻。
十、官方与仓库摘要信息一并看,更能看清这次版本重点
本次你给出的两部分信息非常有代表性:
第一部分是官方发布说明
这里直接点出了最重要的内容:
- release-1.31.2 Latest
- nginx-1.31.2 mainline version has been released
- 修复了 3 个安全漏洞
- 指向官方 CHANGES
第二部分是 GitHub 生成的发布摘要
这里补充了:
- What’s Changed 列表
- 变更比较入口说明
- 参与者数量
- 提交数量
- 文件修改数量
- 按日期列出的提交时间线
把这两部分合在一起看,信息就非常完整了。官方说明告诉你这次升级最重要的“为什么要升”,GitHub 摘要则告诉你“具体都改了什么”。
十一、完整变更清单汇总
为了方便收藏和转发,下面把本次 nginx 1.31.2 的所有变更点做一次完整汇总,不遗漏你提供的任何一项信息。
发布说明层面
- release-1.31.2 Latest
- nginx-1.31.2 mainline version has been released
- 修复 ngx_http_v3_module 中的 use-after-free 漏洞
- 漏洞编号 CVE-2026-42530
- 修复 ngx_http_proxy_v2_module 和 ngx_http_grpc_module 中的 buffer overflow 漏洞
- 漏洞编号 CVE-2026-42055
- 修复 ngx_http_charset_module 中的 buffer overread 漏洞
- 漏洞编号 CVE-2026-48142
- See official CHANGES on nginx.org
What’s Changed 列表
- Use SipHash to speed up $request_id generation
- SSL: add $ssl_sigalgs variable
- Xslt: fixed handle vsnprintf return value
- GH: remove the set-creation-date.yaml workflow
- Split clients: improved calculation of range boundaries
- Style
- GH: Fix the whitespace checker workflow
- Secure link: Compare hashes in constant time
- Access log: Fix “request_length” format length
- Updated OpenSSL used for win32 builds
- Nginx 1.31.2 with security fixes for HTTP/2 proxy, grpc, HTTP/3, charset
统计信息
- 7 contributors
- Commits 22
- Files changed 29
按日期的提交信息
Jun 3, 2026
- Version bump
- Core: added SipHash-2-4 implementation
- Switched $request_id to SipHash-based generation
Jun 5, 2026
- SSL: add $ssl_sigalgs variable
Jun 8, 2026
- Xslt: fix handling of vsnprintf() return value
- GH: remove the set-creation-date.yaml workflow
Jun 9, 2026
- Split clients: improved calculation of range boundaries
Jun 11, 2026
- Style
- Updated link to OpenSSL commit
- GH: fix summary formatting for check-whitespace.yaml
- GH: fix check-whitespace.yaml error return with multiple commits
- Secure link: style
- Secure link: compare hashes in constant time
- Access log: fix “request_length” format length
- GH: fix check-whitespace.yaml error return with multiple commits
Jun 17, 2026
- Updated OpenSSL used for win32 builds
- HTTP/3: use max table capacity for insert buffer allocation
- HTTP/3: allocate insert buffer from connection pool
- HTTP/3: avoid recreation of standard client uni streams
- Upstream: limit header length for HTTP/2 and gRPC
- Charset: fixed another rare buffer overread in recode_from_utf8()
- nginx-1.31.2-RELEASE
十二、结语:nginx 1.31.2 是一次必须认真看的主线版本更新
如果只用一句话总结 nginx 1.31.2,那么最合适的表述就是:
这是一次以安全修复为核心,同时覆盖 HTTP/3、HTTP/2、gRPC、Charset、SSL、request_id、日志与构建链路的主线版本更新。
它的价值不只是修了 3 个漏洞,更在于相关模块周边也做了成体系的修正与优化。尤其从提交清单可以看到,HTTP/3 的内存与缓冲处理、HTTP/2 与 gRPC 的头部长度边界、Charset 的罕见过读问题,都得到了明确处理。
此外,$request_id 改为基于 SipHash 生成、SSL 新增 $ssl_sigalgs 变量、Secure Link 改用常量时间比较、Access Log 修正 request_length 格式长度、win32 构建使用的 OpenSSL 更新,也都让这个版本的含金量进一步提升。