点击蓝字关注我们
近期,我们监控到NGINX ngx_http_rewrite_module 模块相关缓冲区溢出漏洞CVE-2026-9256。该漏洞与rewrite 指令中特定PCRE捕获组和替换字符串组合有关。在满足特定配置条件时,未认证攻击者可能通过构造HTTP请求触发NGINX worker进程堆缓冲区溢出,导致worker进程异常崩溃;在特定编译条件和运行环境下,风险可能进一步扩大为远程代码执行。
根据目前修复信息和POC分析,该漏洞并不是“只要使用 rewrite 就会触发”,而是依赖特定 rewrite 写法。典型风险场景包括:rewrite 指令的正则表达式中存在相互重叠的 PCRE 捕获组,例如 `^/((.*))$`,其中 `$1` 包含 `$2`;同时,替换字符串在重定向 redirect 或参数 arguments 上下文中同时引用多个重叠捕获组,例如 `$1$2`。这类组合可能造成NGINX 在计算替换结果长度和实际拷贝捕获内容时出现不一致,从而引发堆缓冲区溢出。
网瑞达反代/VPN产品在业务访问链路中使用 NGINX 作为统一入口能力,因此在漏洞披露后,我们对产品内置生成的反代/VPN NGINX 配置进行了专项排查。
经排查,自动生成的配置不存在此类风险。
对于使用了自定义配置的用户或者其他使用nginx的用户,我们建议重点检查以下场景:
是否存在手动添加或自动生成的rewrite指令;
rewrite 正则中是否存在重叠捕获组,例如 ((.*))、(.+(.*)) 等;
rewrite 替换字符串是否在参数部分拼接多个捕获变量,例如 ?$1$2;
rewrite替换字符串是否为redirect URL,例如:
http://.../$1$2、https://.../$1$2、$scheme://.../$1$2;
对于存在疑似风险配置的用户,我们建议尽快执行以下操作:优先升级 NGINX 到官方或发行版提供的修复版本;检查所有公网暴露入口的 NGINX 配置;避免在redirect或arguments中拼接多个重叠捕获组;必要时改用非重叠捕获、命名捕获、提前保存变量、拆分rewrite逻辑,或移除不必要的 query string rewrite。
不止网瑞达产品
多场景 NGINX 风险自检脚本开源上线
为帮助用户快速定位风险,我们已在 CVE-2026-42945 配置自检脚本中增加 CVE-2026-9256 检查能力。脚本会同时检查当前NGINX版本,并扫描配置中是否存在重叠捕获组与redirect / arguments上下文组合的高风险 rewrite 模式。
如果当前版本处于受影响范围,且配置命中风险模式,应尽快升级 NGINX 或调整相关配置;
如果版本处于受影响范围但未发现风险模式,也建议按照官方公告完成版本修复;
如果发现疑似风险配置但版本不在受影响范围,也建议对配置进行人工复核,降低后续维护风险。
自检脚本地址
自检脚本地址(可更新):
https://github.com/friparia/NGINX_RIFT_SCAN_CVE_2026_42945
https://cnb.cool/bh1xaq/NGINX_RIFT_SCAN_CVE_2026_42945(国内镜像)
网瑞达将持续跟踪该漏洞的官方修复信息、利用条件变化及实际攻击风险。如后续发现新的影响场景或需要用户采取进一步措施,我们会及时发布更新说明。
往期精选
紧急预警 | 关于 NGINX 远程代码执行漏洞 CVE-2026-42945 的风险说明与自查建议
高校运维故事:用户抱怨网络不好,怎么办?
点击阅读原文获取联系方式