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):
- 标志设置阶段:重写指令带问号时,会设置持久的
is_args标志 - 长度计算阶段:
set指令使用新的清零子引擎,导致跳过 URL 转义逻辑 - 数据复制阶段:实际复制时使用主引擎,触发
ngx_escape_uri()函数对+、&等字符进行转义 - 溢出触发:缓冲区按未转义长度分配,却写入膨胀后的内容,最终造成可控的堆缓冲区溢出
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/"
六、最佳实践建议
- 立即升级:所有使用 NGINX 的服务器应尽快升级到 1.30.1 或更高版本
- 配置审计:定期审计 NGINX 配置,避免危险组合
- 最小暴露:仅开放必要端口,限制管理接口访问
- 监控日志:关注异常请求模式,及时发现问题
- 安全更新:订阅 NGINX 安全公告,及时获取补丁信息
七、参考链接
- F5 安全公告:K000160932
- NGINX 官方下载:nginx.org
- 漏洞详细分析:depthfirst.com
- 蓝点网报道:landian.news
总结
CVE-2026-42945 是一个严重的安全漏洞,潜伏 18 年才被发现,充分说明了代码审计和安全测试的重要性。作为互联网关键基础设施,NGINX 的安全性直接影响海量服务。
行动建议:立即升级到 NGINX 1.30.1 或更高版本!
关于我们
如果你在服务器安全、NGINX 配置或漏洞修复方面需要帮助,尊云科技可以为你提供专业技术支持。
我们专注于 服务器运维、安全加固、网站建设、API 接口开发,帮助企业构建安全可靠的技术架构。
服务范围:
- 服务器安全评估与加固
- NGINX/Apache 配置优化
- 漏洞扫描与修复
- 网站与应用开发
- DevOps 自动化运维
联系方式:
- 微信:yvsm316
- QQ:316430983
- 官网:https://zunyun.cc/
有服务器安全需求,欢迎联系!
