NGINX 爆出 18 年高危漏洞 CVE-2026-42945:紧急修补指南

2026-05-15 码匠 技术前沿

2026年5月14日,全球互联网关键基础设施 NGINX 曝出一个潜伏 18 年的高危安全漏洞 CVE-2026-42945。攻击者仅需向暴露的 NGINX 服务器发送特制 HTTP 请求,即可远程执行代码拿下服务器。

一、漏洞概述

漏洞编号CVE-2026-42945
漏洞类型堆缓冲区溢出 (Heap Buffer Overflow)
危害等级高危
影响版本NGINX 0.6.27 ~ 1.30.0
引入时间2008年(潜伏18年)
修复版本NGINX 1.30.1 / 1.31.0

二、漏洞原理分析

1. 漏洞触发条件

当 NGINX 配置文件中同时出现以下两种指令时,漏洞会被激活:

rewrite ^/api/(.*)$ /internal?migrated=true;  # 重写规则末尾带 "?"
set $original_endpoint $1;                     # 使用正则捕获组

2. 技术细节

漏洞根源位于 ngx_http_rewrite_module 的脚本引擎 (ngx_http_script.c):

  1. 标志设置阶段:重写指令带问号时,会设置持久的 is_args 标志
  2. 长度计算阶段:set 指令使用新的清零子引擎,导致跳过 URL 转义逻辑
  3. 数据复制阶段:实际复制时使用主引擎,触发 ngx_escape_uri() 函数对 +、& 等字符进行转义
  4. 溢出触发:缓冲区按未转义长度分配,却写入膨胀后的内容,最终造成可控的堆缓冲区溢出

3. 攻击方式

攻击者构造包含特殊字符的 HTTP 请求:

GET /api/test+data&payload HTTP/1.1
Host: vulnerable-server.com

由于缓冲区溢出,攻击者可以:

  • 覆盖相邻内存区域
  • 控制程序执行流程
  • 执行任意代码获取服务器权限

三、影响范围

受影响的 NGINX 版本

  • NGINX 0.6.27 ~ 1.30.0(开源版)
  • NGINX Plus(商业版)相关版本

受影响的衍生产品

  • NGINX WAF
  • F5 WAF
  • NGINX Gateway Fabric
  • NGINX Ingress Controller

影响规模

NGINX 在全球网站服务器和反向代理领域占有率接近 30%,此漏洞可能波及海量互联网服务,包括:

  • 企业 Web 服务器
  • API 网关
  • 负载均衡器
  • Kubernetes Ingress
  • 微服务架构中的反向代理

四、紧急修补方案

方案一:升级 NGINX(推荐)

开源版 NGINX:

# 查看当前版本
nginx -v

# Ubuntu/Debian 升级
sudo apt update
sudo apt install nginx

# CentOS/RHEL 升级
sudo yum update nginx

# 验证版本(需 >= 1.30.1)
nginx -v

源码编译升级:

# 下载最新版本
wget https://nginx.org/download/nginx-1.31.0.tar.gz
tar -zxvf nginx-1.31.0.tar.gz
cd nginx-1.31.0

# 编译安装(根据原有配置调整参数)
./configure --prefix=/usr/local/nginx --with-http_ssl_module
make
sudo make install

# 重启服务
sudo systemctl restart nginx

方案二:修改配置规避(临时方案)

如果暂时无法升级,可通过修改配置临时规避:

# ❌ 危险配置(避免同时使用)
rewrite ^/api/(.*)$ /internal?migrated=true;
set $original_endpoint $1;

# ✅ 安全替代方案一:移除问号
rewrite ^/api/(.*)$ /internal?migrated=true last;
# 不再使用 set 指令捕获 $1

# ✅ 安全替代方案二:分开处理
location /api/ {
    rewrite ^/api/(.*)$ /internal?migrated=true break;
    # 避免后续使用 set 指令
}

# ✅ 安全替代方案三:使用 map 替代
map $uri $original_endpoint {
    ~^/api/(?.+)$ $endpoint;
}

方案三:WAF 防护(辅助方案)

在 WAF 或防火墙层面添加规则,拦截可疑请求:

# ModSecurity 规则示例
SecRule REQUEST_URI "@rx \+|&"     "id:1001,phase:1,deny,status:403,msg:'Potential CVE-2026-42945 exploit attempt'"

五、排查指南

1. 检查 NGINX 版本

nginx -v
# 输出示例:nginx version: nginx/1.25.3(受影响)
# 安全版本:nginx/1.30.1 或更高

2. 检查危险配置

# 搜索可能触发漏洞的配置
grep -r "rewrite.*?" /etc/nginx/

# 重点检查同时包含以下模式的配置:
# 1. rewrite 规则以 ? 结尾
# 2. 后续使用 set 指令引用正则捕获组

3. 检查日志异常

# 检查是否有可疑请求
grep -E "\+|%2B|&|%26" /var/log/nginx/access.log | grep "/api/"

六、最佳实践建议

  1. 立即升级:所有使用 NGINX 的服务器应尽快升级到 1.30.1 或更高版本
  2. 配置审计:定期审计 NGINX 配置,避免危险组合
  3. 最小暴露:仅开放必要端口,限制管理接口访问
  4. 监控日志:关注异常请求模式,及时发现问题
  5. 安全更新:订阅 NGINX 安全公告,及时获取补丁信息

七、参考链接

总结

CVE-2026-42945 是一个严重的安全漏洞,潜伏 18 年才被发现,充分说明了代码审计和安全测试的重要性。作为互联网关键基础设施,NGINX 的安全性直接影响海量服务。

行动建议:立即升级到 NGINX 1.30.1 或更高版本!


关于我们

如果你在服务器安全、NGINX 配置或漏洞修复方面需要帮助,尊云科技可以为你提供专业技术支持。

我们专注于 服务器运维、安全加固、网站建设、API 接口开发,帮助企业构建安全可靠的技术架构。

服务范围:

  • 服务器安全评估与加固
  • NGINX/Apache 配置优化
  • 漏洞扫描与修复
  • 网站与应用开发
  • DevOps 自动化运维

联系方式:

有服务器安全需求,欢迎联系!