案例 nginx 1.31.3 批量安全修复:slice 未初始化内存、SSI UAF 与 XSLT 默认收紧

2026-09-03 21:03:42

本月中旬 NGINX 发布了 1.31.3(mainline)与 1.30.4(stable),修复了多项内存安全漏洞。除了 regex map 堆溢出外,还有两个模块问题和一项默认安全收紧值得单独关注。

1. ngx_http_slice_module:未初始化内存访问

slice 模块默认关闭,通过 slice 指令将大文件分片后按 Range 输出。漏洞在「使用未命名正则捕获」或「后台缓存更新发生」时触发,未经认证的攻击者可导致 worker 进程产生未初始化内存访问,可能造成有限内存信息泄露或进程重启,官方评分较高。

如果没启用 slice,或者相关路径未使用未命名捕获,实际受影响较小。

2. ngx_http_ssi_module:Use-After-Free

触发条件需要同时满足:

  • 启用了服务端包含(SSI)
  • 配置了 proxy_pass
  • proxy_buffering 关闭

在这种情况下,攻击者若能在上游响应上做中间人(MITM)控制,则可在 worker 中触发 use-after-free,导致有限内存篡改或进程重启。修复方式为:避免对同一子请求重复终结,释放操作只做一次。

普通静态 SSI 页面不受影响。命中「SSI + proxy_pass + proxy_buffering off」组合的环境需要重点测试。

3. XSLT 模块默认禁用外部实体

1.31.3 将 XSLT 模块的外部实体加载改为默认关闭,并新增 xml_external_entities 指令用于重新开启。这是「安全默认」的收紧:之前依赖 xslt 解析外部实体/DTD 的站点升级后行为可能变化,需要显式开启,并自行评估 XXE 风险。

升级建议

  • Open Source 版本升级到 1.31.3(mainline)或 1.30.4(stable)。
  • 升级后执行 nginx -t && systemctl reload nginx
  • 命中「SSI + proxy_pass + proxy_buffering off」组合的环境,以及启用 slice 或 XSLT 的站点,建议优先升级。

参考:nginx 安全公告
https://nginx.org/en/security_advisories.html

复制全文 生成海报 nginx 运维 安全

推荐文章

程序员茄子在线接单