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 |
当 NGINX 配置文件中同时出现以下两种指令时,漏洞会被激活:
rewrite ^/api/(.*)$ /internal?migrated=true; # 重写规则末尾带 "?"
set $original_endpoint $1; # 使用正则捕获组
漏洞根源位于 ngx_http_rewrite_module 的脚本引擎 (ngx_http_script.c):
is_args 标志set 指令使用新的清零子引擎,导致跳过 URL 转义逻辑ngx_escape_uri() 函数对 +、& 等字符进行转义攻击者构造包含特殊字符的 HTTP 请求:
GET /api/test+data&payload HTTP/1.1
Host: vulnerable-server.com
由于缓冲区溢出,攻击者可以:
NGINX 在全球网站服务器和反向代理领域占有率接近 30%,此漏洞可能波及海量互联网服务,包括:
开源版 NGINX:
Bash
# 查看当前版本
nginx -v
# Ubuntu/Debian 升级
sudo apt update
sudo apt install nginx
# CentOS/RHEL 升级
sudo yum update nginx
# 验证版本(需 >= 1.30.1)
nginx -v
源码编译升级:
Bash
# 下载最新版本
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 或防火墙层面添加规则,拦截可疑请求:
# ModSecurity 规则示例
SecRule REQUEST_URI "@rx \+|&" "id:1001,phase:1,deny,status:403,msg:'Potential CVE-2026-42945 exploit attempt'"
Bash
nginx -v
# 输出示例:nginx version: nginx/1.25.3(受影响)
# 安全版本:nginx/1.30.1 或更高
Bash
# 搜索可能触发漏洞的配置
grep -r "rewrite.*?" /etc/nginx/
# 重点检查同时包含以下模式的配置:
# 1. rewrite 规则以 ? 结尾
# 2. 后续使用 set 指令引用正则捕获组
Bash
# 检查是否有可疑请求
grep -E "\+|%2B|&|%26" /var/log/nginx/access.log | grep "/api/"
版权免责声明: 本站内容部分来源于网络,请自行鉴定真假。如有侵权,违法,恶意广告,虚假欺骗行为等以上问题联系我们删除。
本文地址:https://www.86396.com/news/355861.html