明确结论:Nginx 1.30.2 已经完整修复 CVE-2026-9256(rewrite 模块堆溢出漏洞)
关键信息
官方同步发布补丁(2026-05-22)
稳定分支:1.30.2(修复此高危漏洞)
主线分支:1.31.1(你当前在用版本,同样修复)
受影响版本:1.0.0 ~ 1.30.1、1.31.0全部带漏洞
漏洞出处就是 rewrite 重写模块
漏洞成因:rewrite正则出现嵌套 / 重叠捕获组(如((.*)))+ 替换参数多次引用 $1/$2,缓冲区计算偏小导致堆溢出、远程 RCE 风险;1.30.2 源码变更里专门针对ngx_http_rewrite_module做了内存分配逻辑修正。
选型建议
生产环境优先用 1.30.2:稳定版,只补安全漏洞、不加新功能,无额外新 BUG;
测试环境可用 1.31.1:最新主线,带新特性,同样已堵死该漏洞。
临时规避(不升级也能用)
把配置里重叠匿名捕获$1$2改成命名捕获组(?<name>xxx),即可临时防漏洞触发。
把CVE-2026-9256漏洞的信息,详细的写成一篇文章
搜索 4 个关键词,参考 24 篇资料
NGINX CVE-2026-9256(Nginx-Poolslip)重写模块堆溢出高危漏洞全解析
一、漏洞基础信息
1. 漏洞标识
CVE 编号:CVE-2026-9256
漏洞代号:Nginx-Poolslip(池溢出漏洞)
漏洞类型:堆缓冲区溢出(CWE-122 Heap-based Buffer Overflow)
风险评级:CVSS3.1=8.1(高危)、CVSS4.0=9.2(严重级)
攻击属性:远程无认证漏洞(AV:N/PR:N/UI:N),无需登录、无需用户交互,公网即可发起攻击
披露与修复时间:安全研究员 2026 年 5 月协同披露,F5(NGINX 官方)2026 年 5 月 22 日正式发布补丁版本,5 月 23 日上线修复版安装包
发现者:Winfunc Research、Nebula Security、Vexera AI 联合安全研究员 Mufeed VH 发现并协调厂商修复
2. 受影响产品与版本
(1)开源 NGINX(Open Source)
全量受影响:0.1.17 ~ 1.30.1(稳定分支)、1.31.0(主线分支);
修复版本:稳定版≥1.30.2、主线版≥1.31.1;
0.9.7 及更早老旧 0.x 分支官方停止维护、不再发布补丁,必须升级新版本规避风险。
(2)商业版 NGINX Plus
R32 系列:≤R32 P7;R36 系列:≤R36 P5;37.0.0 初始版存在漏洞;
修复:NGINX Plus R32≥P7、R36≥P5、37.x≥37.0.1。
(3)衍生产品
基于 NGINX 内核的 Ingress Controller、NGINX App Protect、F5 WAF、容器化 Nginx 镜像、Alpine/Docker 官方 Nginx 镜像均受牵连,需同步升级底层 Nginx 二进制包。
二、漏洞成因与底层原理
漏洞根源位于 Nginx 核心组件ngx_http_rewrite_module(URL 重写模块),是 Nginx 近一月内第二款同模块高危堆溢出漏洞(前序 CVE-2026-42945),隐患在代码库中潜伏近 18 年。
1. 触发必备两个配置条件(缺一不可)
正则存在嵌套 / 重叠 PCRE 捕获组:形如^/((.*))$双层括号嵌套,内层(.*)与外层括号构成重叠捕获,正则匹配后生成$1、$2两个捕获变量,二者指向同一段 URI 原始内容;
替换语句多次引用重叠捕获变量:rewrite跳转 / 参数拼接中使用$1$2、$1&$2等多变量拼接写法,用于 URL 跳转、GET 参数拼接场景。
漏洞示例危险配置:
nginx
location/vuln{# 条件1:嵌套重叠捕获组rewrite^/vuln/((.*))$ /target.php?param=$1$2last;#条件2:同时引用$1、$2}
2. 内存计算 BUG 核心逻辑
Nginx 在预分配重定向输出缓冲区时,错误忽略 URL 特殊字符转义扩容开销:
正常逻辑:+、空格、#等字符 URL 编码后变为%2B、%20、%23,1 字节原始字符占用 3 字节输出空间;
BUG 逻辑:源码ngx_http_script.c缓冲区预算仅按原始 URI 长度计算,未叠加多次变量拼接 + URL 转义带来的额外存储空间,分配内存尺寸远小于实际输出所需长度;
攻击者传入携带大量需要 URL 转义字符(+、空格)的恶意 URI,Nginx 执行字符串拼接 + 转义时,数据超出预分配堆内存边界,形成可控堆越界写入(堆溢出)。
3. 漏洞利用底层条件
溢出同时附带堆内存信息泄露 + 可控堆写入双原语:
溢出时覆盖相邻堆内存字段(进程内存池指针、函数指针、环境变量数据),部分内存数据直接泄露至 HTTP 响应报文,实现 ASLR 地址泄露;
Linux 系统关闭 ASLR 防护,或攻击者借助泄露数据绕过 ASLR 随机化后,可修改堆上函数指针,最终实现远程无代码执行 RCE;
无法绕过 ASLR 时,可精准覆写内存造成 Worker 进程崩溃,触发持续性拒绝服务 DoS 攻击。
三、攻击利用方式
1. 攻击链路
攻击者公网发送恶意 HTTP GET 请求,URI 携带大量+、空格等需转义字符,匹配目标站点危险 rewrite 规则;
Nginx 解析正则生成重叠捕获变量,计算缓冲区空间偏小;
拼接$1$2+URL 转义后数据超长,堆内存越界写入;
低难度:进程异常退出(502 报错、站点瘫痪);高难度:泄露内存地址→绕过 ASLR→远程命令执行,拿下服务器权限。
2. 恶意请求样例
http
GET/vuln/++++++++++++++++++++++++++++++++++++HTTP/1.1Host:target.comUser-Agent:Mozilla/5.0
大量+会在参数拼接时被转义为%2B,成倍膨胀字符串长度,快速触发缓冲区溢出边界。
四、漏洞危害分级
高危(DoS):全量受漏洞影响服务器
无论系统是否开启 ASLR,均可被远程触发 Nginx Worker 进程频繁崩溃、站点间歇性 502,业务中断,中小站点极易被批量打瘫;
严重(RCE 远程控权):关闭 ASLR / 可绕过 ASLR 的 Linux 服务器
攻击者无任何前置权限,公网直接拿到服务器系统权限,窃取网站源码、数据库配置、用户隐私数据,植入木马、挖矿程序、webshell,入侵内网横向渗透;
衍生风险:CDN、反向代理集群沦陷
大量企业使用 Nginx 作为负载均衡、API 网关,漏洞被利用后可穿透代理直接入侵后端应用服务器。
五、官方修复方案与临时应急规避
方案一:彻底修复(首选,生产环境必做)升级 Nginx 版本
稳定版升级至 1.30.2(企业生产首选,只补漏洞、无新增功能,稳定性最优);
主线版升级至 1.31.1(测试环境、尝新环境,附带新特性 + 漏洞修复);
注:你当前日志 Nginx 1.31.1、1.30.2 均已完成此漏洞源码修复,不再受 CVE-2026-9256 影响。
源码修复改动:官方修改ngx_http_script.c缓冲区计算逻辑,在分配内存时自动预计算变量拼接长度 + URL 转义最大占用空间,从根源杜绝空间低估问题。
方案二:临时配置规避(无法立刻升级版本时应急)
禁用所有未命名数字捕获组($1/$2/$3),替换为 PCRE 命名捕获组,彻底切断漏洞触发代码路径,修改前后示例:
nginx
# 原危险写法(禁用)rewrite^/user/([0-9]+)/(.*)$ /info.php?id=$1&name=$2last;# 安全改写(命名捕获,完全免疫漏洞)rewrite^/user/(?[0-9]+)/(?.*)$ /info.php?id=$uid&name=$nicklast;
配置排查要点:全局检索 nginx.conf、vhost 站点配置中所有rewrite、if+~正则片段,清理嵌套((.*))+$1$2组合写法。
方案三:WAF 防护兜底
在前置 WAF(Nginx-WAF、云 WAF、硬件防火墙)添加规则:拦截 URI 携带超长连续特殊符号、多层嵌套括号((()))的异常访问请求,临时拦截漏洞利用流量。
六、运维自查清单
版本自查:执行nginx -v核对版本,低于 1.30.2(稳定)、1.31.1(主线)即处于漏洞风险;
配置自查:全局检索所有站点配置,查找rewrite指令内((.*))嵌套正则 +$1$2多变量拼接;
容器环境自查:Docker Nginx 镜像需重新拉取最新官方镜像,旧版 Alpine、Debian 镜像内置 Nginx 大概率受漏洞影响;
日志自查:观察 Nginx 错误日志是否频繁出现 worker 进程异常退出、sigsegv 段错误,大概率已被漏洞探测攻击。
七、总结
CVE-2026-9256 是覆盖面极广的 Nginx 经典堆溢出漏洞,漏洞依赖特定 Rewrite 配置触发,但互联网大量 CMS、建站程序、自定义反向代理规则普遍存在嵌套捕获 + 多变量引用写法,全网受影响服务器量级超百万台。
已升级 1.30.2/1.31.1:永久修复,无需额外配置修改;
暂未升级:优先替换命名捕获组临时防护,择机完成版本升级,杜绝公网 RCE 入侵风险。