nginx 1.28.3 稳定版全解析:6 大 CVE 修复、核心模块优化与代码变更详解

网易专栏2周前发布 nxnqh
10 0 0

🤖 AI总结

主题

关于Nginx 1.28.3稳定版本发布及其安全漏洞修复的详细说明。

摘要

Nginx 1.28.3作为关键安全更新版本,修复了多个高危漏洞并优化了核心模块,建议所有使用1.28.x分支的生产环境尽快升级。

关键信息

  • 1 修复了6个CVE高危安全漏洞,涉及WebDAV、MP4、邮件等多个模块。
  • 2 对QUIC、DNS解析等核心模块进行了功能优化和缺陷修复。
  • 3 升级了Windows平台的编译依赖库,并提供了详细的升级建议。

nginx 1.28.3 稳定版全解析:6 大 CVE 修复、核心模块优化与代码变更详解

nginx 1.28.3 稳定版全解析:6 大 CVE 修复、核心模块优化与代码变更详解

nginx 1.28.3 稳定版全解析:6 大 CVE 修复、核心模块优化与代码变更详解

前言

2026年3月25日,nginx官方正式发布nginx 1.28.3 stable version稳定版本,本次版本为1.28稳定分支的重要安全更新,聚焦于修复多个高危安全漏洞,同时对QUIC、MP4、邮件、Stream等核心模块进行缺陷修复,并同步升级Windows平台编译依赖的OpenSSL、zlib、PCRE2库版本,进一步提升服务安全性与运行稳定性。

本次更新共计19次提交、14个文件变更、4位开发者参与,代码层面新增395行、删除108行,修复了包括缓冲区溢出、整数溢出、段错误、OCSP绕过、DNS注入等在内的多项安全问题,覆盖ngx_http_dav_module、ngx_http_mp4_module、邮件模块、Stream模块等核心组件,所有运行nginx 1.28.x分支的生产环境均建议尽快升级至1.28.3版本,避免漏洞被利用导致服务异常、数据泄露或权限越界等安全风险。

本文将基于官方发布日志、GitHub提交记录与代码变更详情,对nginx 1.28.3版本的更新内容进行全面拆解,涵盖安全漏洞修复明细、核心模块优化细节、依赖库升级内容、代码级改动解析,为运维工程师、后端开发者、架构师提供完整的版本升级参考。

一、nginx 1.28.3版本基础信息 1.1 版本发布信息

• 版本号:nginx 1.28.3

  • • 版本类型:Stable stable version(稳定版)

  • • 发布时间:2026年3月25日

  • • 代码提交:19 commits

  • • 变更文件:14 files changed

  • • 贡献者:4 contributors

  • • 代码变动:395 additions、108 deletions

    1.2 版本核心定位

    nginx 1.28.3属于1.28稳定分支的安全补丁版本,无新增功能特性,全部更新围绕安全漏洞修复、模块缺陷修复、依赖库更新、代码健壮性优化展开,重点解决影响服务安全与稳定运行的高危漏洞,适用于所有生产环境、测试环境的nginx 1.28.x版本升级。

    二、6大CVE安全漏洞完整修复明细

    本次nginx 1.28.3版本共修复6个CVE编号的安全漏洞,覆盖WebDAV模块、MP4模块、邮件认证模块、Stream SSL模块,漏洞类型包含缓冲区溢出、整数溢出、段错误、认证绕过、DNS注入、OCSP绕过,以下为每个漏洞的详细说明:

    2.1 CVE-2026-27654:ngx_http_dav_module缓冲区溢出漏洞

    • 漏洞模块:ngx_http_dav_module(WebDAV模块)

  • • 漏洞场景:处理COPY/MOVE请求时,在配置alias的location中触发缓冲区溢出

  • • 漏洞危害:攻击者可构造恶意请求,修改源路径或目标路径,越出document root范围,实现目录穿越、文件读写等恶意操作

  • • 修复方式:新增Destination头部长度校验,当配置alias且目标URI长度小于alias长度时,直接返回400 Bad Request,阻断恶意请求

  • • 致谢:Calif.io、Claude、Anthropic Research

    2.2 CVE-2026-27784:ngx_http_mp4_module 32位平台缓冲区溢出漏洞

    • 漏洞模块:ngx_http_mp4_module(MP4文件处理模块)

  • • 漏洞场景:32位操作系统平台下,处理构造恶意MP4文件时触发缓冲区溢出

  • • 漏洞危害:导致worker进程崩溃(拒绝服务),存在远程代码执行潜在风险

  • • 修复方式:校验stss原子中的同步样本值,修复32位平台整数溢出问题,避免零长度缓冲区输出

  • • 致谢:Prabhav Srinath (sprabhav7)

    2.3 CVE-2026-32647:ngx_http_mp4_module通用缓冲区溢出漏洞

    • 漏洞模块:ngx_http_mp4_module(MP4文件处理模块)

  • • 漏洞场景:全平台处理恶意构造的MP4文件时触发缓冲区溢出

  • • 漏洞危害:worker进程异常崩溃,服务不可用,存在未明确的潜在安全影响

  • • 修复方式:优化MP4文件原子解析逻辑,增加边界校验,修复样本索引与偏移量计算缺陷

  • • 致谢:Xint Code、Pavel Kohout (Aisle Research)

    2.4 CVE-2026-27651:邮件模块CRAM-MD5/APOP认证段错误漏洞

    • 漏洞模块:nginx邮件代理模块

  • • 漏洞场景:启用CRAM-MD5或APOP认证方式,且允许认证重试时,触发段错误(segmentation fault)

  • • 漏洞危害:邮件代理worker进程崩溃,邮件服务中断

  • • 修复方式:修复认证过程中内存清理逻辑,避免非法内存访问

  • • 致谢:Arkadi Vainbrand

    2.5 CVE-2026-28753:邮件模块DNS PTR记录注入漏洞

    • 漏洞模块:nginx邮件代理模块

  • • 漏洞场景:攻击者利用DNS PTR记录,向auth_http请求、后端SMTP的XCLIENT命令注入恶意数据

  • • 漏洞危害:实现请求伪造、参数注入,干扰邮件认证流程,获取敏感信息

  • • 修复方式:新增主机名校验逻辑,仅允许RFC 1034规范的字符(字母、数字、-、.),阻断非法字符注入

  • • 致谢:Asim Viladi Oglu Manizada、Colin Warren、Xiao Liu、Yuan Tan、Bird Liu

    2.6 CVE-2026-28755:Stream模块OCSP结果绕过漏洞

    • 漏洞模块:ngx_stream_ssl_module(Stream SSL模块)

  • • 漏洞场景:OCSP服务拒绝客户端证书时,SSL握手仍可成功建立,绕过证书校验

  • • 漏洞危害:非法客户端可通过伪造证书绕过认证,建立非法连接

  • • 修复方式:新增OCSP状态校验逻辑,OCSP验证失败时直接终止SSL握手,清除会话缓存

  • • 致谢:Mufeed VH (Winfunc Research)

    三、核心模块功能修复与优化

    除安全漏洞外,nginx 1.28.3对QUIC、MP4、DNS解析、邮件处理等模块进行了功能性缺陷修复,提升服务运行稳定性:

    3.1 QUIC模块优化

    1. 调整无状态重置(Stateless Reset)数据包最小长度,从21字节调整为41字节

  • 2. 限制无状态重置数据包最大尺寸为1200字节,避免超大包攻击

  • 3. 新增无状态重置速率限制,基于地址哈希与位图实现频率控制,防止滥用

  • 4. 无状态重置令牌与worker进程绑定,避免跨进程数据包处理异常

  • 5. 重构ngx_quic_address_hash()函数,优化地址哈希计算逻辑

  • 6. 提升OpenSSL兼容层错误处理能力,修复密钥设置失败导致的内部错误

  • 7. 修复错误worker进程接收QUIC数据包导致连接断开的问题

    3.2 MP4模块修复

    1. 校验stss原子同步样本值,禁止零值同步样本,避免解析异常

  • 2. 修复32位平台整数溢出问题,防止内存越界

  • 3. 禁止零长度缓冲区输出,避免空指针异常

  • 4. 优化时间切片逻辑,当结束偏移小于等于起始偏移时直接返回错误

  • 5. 修复样本索引、chunk索引越界问题,完善原子大小边界校验

  • 6. 修复关键帧查找逻辑,将返回值类型从uint32_t改为ngx_int_t,统一错误处理

    3.3 DNS解析模块修复

    1. 修复ngx_resolver_copy()函数中的off-by-one读取错误

  • 2. 调整SRV记录解析边界判断条件,从i + 6 > n改为i + 6 >= n,避免短响应解析异常

    3.4 邮件模块修复

    1. 修复auth_http请求中s->passwd内存清理不彻底问题,使用ngx_str_null统一初始化

  • 2. 新增SMTP主机名校验函数,过滤非法字符,防止DNS注入

  • 3. 主机名解析失败时直接返回临时不可用状态,避免异常连接

    3.5 Stream SSL模块修复

    1. 完善客户端证书OCSP校验逻辑,校验失败时记录错误日志并终止握手

  • 2. 清除OCSP失败的会话缓存,防止非法会话复用

    四、Windows平台编译依赖库升级

    nginx 1.28.3对Windows版本编译依赖的第三方库进行同步升级,修复依赖库潜在安全风险:

    1. OpenSSL:从3.5.4升级至3.5.5

  • 2. zlib:从1.3.1升级至1.3.2

  • 3. PCRE2:从10.46升级至10.47

    依赖库升级仅影响Windows平台编译版本,Linux/Unix平台使用系统自带依赖库,无额外影响。

    五、核心代码变更详细解析

    本次版本共14个文件发生变更,核心代码改动集中在安全校验、协议处理、内存管理、边界判断四个维度,以下为关键文件改动解析:

    5.1 版本号定义文件

    src/core/nginx.h:

    • nginx_version从1028002修改为1028003

  • • NGINX_VERSION从”1.28.2″修改为”1.28.3″

    5.2 DNS解析模块

    src/core/ngx_resolver.c:

    • 修复SRV记录解析边界判断,将if (i + 6 > n)改为if (i + 6 >= n),避免短响应漏判

    5.3 QUIC模块核心文件

    src/event/quic/ngx_event_quic.c:

    • 新增ngx_quic_address_hash()函数实现,优化地址哈希计算

  • • 支持带盐值哈希,提升无状态重置安全性

    src/event/quic/ngx_event_quic_output.c:

    • 调整NGX_QUIC_MIN_PKT_LEN为41字节

  • • 新增无状态重置过滤器ngx_quic_stateless_reset_filter(),实现速率限制

  • • 优化重置数据包长度计算逻辑,限制最大长度

    src/event/quic/ngx_event_quic_openssl_compat.c:

    • 增强密钥设置错误处理,失败时设置QUIC内部错误码

  • • 修复空密钥上下文导致的解析错误

    src/event/quic/ngx_event_quic_connection.h:

    • 新增ngx_quic_address_hash()函数声明

    5.4 WebDAV模块

    src/http/modules/ngx_http_dav_module.c:

    • 新增alias场景下Destination头部长度校验

  • • 获取ngx_http_core_module配置,判断URI长度合法性,非法则返回400

    5.5 MP4模块

    src/http/modules/ngx_http_mp4_module.c:

    • 修复关键帧查找函数返回值类型,新增错误码返回

  • • 禁止零同步样本,完善原子大小边界校验

  • • 修复偏移量越界判断,结束偏移小于等于起始偏移直接报错

  • • 修复32位平台整数溢出,避免内存越界

    5.6 邮件模块

    src/mail/ngx_mail_auth_http_module.c:

    • 修复s->passwd内存清理,使用ngx_str_null统一初始化

    src/mail/ngx_mail_smtp_handler.c:

    • 新增ngx_mail_smtp_validate_host()主机名校验函数

  • • 仅允许字母、数字、-、.字符,阻断注入攻击

    5.7 Stream SSL模块

    src/stream/ngx_stream_ssl_module.c:

    • 新增OCSP状态校验,验证失败时终止握手并清除会话

  • • 记录证书验证错误日志,便于问题排查

    5.8 变更日志文件

    docs/xml/nginx/changes.xml:

    • 新增1.28.3版本完整变更记录,包含6个CVE漏洞说明、功能修复、致谢信息

    5.9 编译配置文件

    misc/GNUmakefile:

    • 更新Windows编译依赖库版本号,同步OpenSSL、zlib、PCRE2版本

    六、版本升级影响与建议 6.1 受影响版本

    所有nginx 1.28.0、1.28.1、1.28.2稳定版本均存在上述安全漏洞,建议立即升级至1.28.3。

    6.2 不受影响场景

    1. 未启用ngx_http_dav_module、ngx_http_mp4_module、邮件模块、Stream SSL模块的环境

  • 2. Windows平台未使用编译版本,仅使用Linux/Unix预编译包的环境

  • 3. 未开启QUIC、OCSP、CRAM-MD5/APOP认证的场景

    6.3 升级建议

    1. 生产环境优先采用平滑升级方式,避免服务中断

  • 2. 升级前备份nginx配置文件、日志文件、SSL证书

  • 3. 升级后执行nginx -t校验配置合法性,再执行reload

  • 4. 开启模块的业务需重点测试功能完整性,尤其是MP4文件处理、WebDAV、邮件代理、Stream代理

  • 5. 安全团队可针对6个CVE漏洞进行漏洞扫描验证,确认修复生效

    6.4 风险提示

    1. 未升级版本可能遭受目录穿越、拒绝服务、证书绕过、请求注入攻击

  • 2. 32位服务器运行MP4模块业务,漏洞利用风险更高

  • 3. 公网暴露的WebDAV、邮件代理、Stream服务为高危攻击面,必须优先升级

    七、总结

    代码地址:bgithub.xyz/nginx/nginx

    nginx 1.28.3是1.28稳定分支的关键安全更新版本,一次性修复6个CVE高危漏洞,覆盖Web服务、文件处理、邮件代理、四层代理全场景,同时优化QUIC协议性能、修复模块功能性缺陷、升级第三方依赖库,全面提升nginx服务的安全性与稳定性。

    我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。

    © 版权声明

    相关文章