CVE-2026-9256CVE-2026-9256是影响NGINX Plus和NGINX Open Source的一个高危安全漏洞,位于ngx_http_rewrite_module模块中。该漏洞源于rewrite指令在处理正则表达式时存在的缺陷。当rewrite规则使用包含重叠PCRE捕获组的正则模式(如^/((.*))$),并且替换字符串引用多个这样的捕获组(如$1$2)时,在redirect或arguments上下文中会触发堆缓冲区溢出。攻击者可通过发送精心构造的HTTP请求来利用此漏洞,无需任何认证即可触发。成功利用此漏洞可导致NGINX worker进程发生堆缓冲区溢出并重启,在ASLR被禁用或可被绕过的系统上,攻击者甚至可能实现任意代码执行。该漏洞CVSS评分8.1,属于高危级别,对系统机密性、完整性和可用性均造成严重影响。
该漏洞的核心问题在于ngx_http_rewrite_module模块的rewrite指令在处理PCRE正则表达式捕获组时的内存管理缺陷。当正则表达式包含重叠或嵌套的捕获组(如^/((.*))$会产生两个捕获组:外层$1捕获整个路径,内层$2捕获内部内容),且替换字符串同时引用多个捕获组(如$1$2会将两个捕获组的内容连接),在特定上下文(redirect或arguments)中会导致内存分配和复制操作出现缓冲区溢出。具体来说,模块在计算目标缓冲区大小时未正确处理多个捕获组引用的情况,导致实际写入的数据量超过分配的缓冲区大小。攻击者可通过构造恶意URL路径,触发rewrite规则处理,从而在worker进程的堆内存中写入超出边界的数据。这不仅会导致进程崩溃重启,还可能通过覆盖相邻堆内存结构实现代码执行。漏洞利用需要特定条件的正则表达式配置,但一旦存在此类配置,远程攻击者即可无认证利用。