Nginx rewrite 模块爆高危漏洞:可能已经存在十几年|CVE-2026-42945

原始链接在: Nginx rewrite 模块爆高危漏洞:可能已经存在十几年|CVE-2026-42945 - 小众软件

Nginx 是一款被广泛使用的 HTTP 服务器软件。2026 年 5 月 13 日官方披露常用模组 rewrite 存在安全漏洞。攻击者可通过构造特殊 HTTP 请求触发该漏洞,导致 Nginx 工作进程发生堆缓冲区溢出,进而造成进程崩溃或服务重启。@Appinn

在部分关闭了地址空间布局随机化(ASLR)的系统中,攻击者还有可能进一步执行任意代码。

漏洞代码 CVE-2026-42945 得分 8.1 分,属于较高。

发生了什么?

感谢 @Niceb 同学的提醒。

在 Nginx 的 ngx_http_rewrite_module 模组中,发现了一个存在多年的内存漏洞,攻击者可通过构造特殊 HTTP 请求,在 nginx 处理 rewrite 规则时触发堆缓冲区溢出,导致工作进程崩溃、服务重启。

  • 漏洞位置:ngx_http_rewrite_module
  • 类型:堆缓冲区溢出(heap buffer overflow)
  • 影响:可能导致远程代码执行(RCE)
  • 攻击条件:攻击者不需要登录,可以通过构造 HTTP 请求触发
  • 触发条件:需要 nginx 配置中存在特定 rewrite / set / if 组合,并使用 $1$2 这类 PCRE 捕获变量,同时 replacement 字符串里带 ?
  • 受影响时间跨度:研究人员称漏洞代码可追溯到 2008 年,影响大量历史版本。

在部分安全保护较弱的系统上,甚至可能进一步执行任意代码。由于 WordPress 等大量网站都广泛使用 rewrite 规则,因此这次漏洞影响范围较大。

什么是安全保护较弱的系统?

在这里,关闭了 ASLR(地址空间布局随机化)的系统,就算比较弱鸡的了。可通过下面的命令检测:

cat /proc/sys/kernel/randomize_va_space

返回 2,那么意味着你开启了 ,该漏洞最多会导致 Nginx 崩溃、重启,绝大多数现代操作系统都会是 2

rewrite 规则

你可以通过以下命令查看所有的 rewrite 规则:

grep -RInE 'rewrite|set |\$[0-9]|if \(' /etc/nginx

青小蛙把小众软件的 rewrite 规则发给了 AI,得到了这个内容:

而让 AI 修复该规则,AI 把规则直接改掉了 😭

如何解决

升级 nginx/1.30.1 即可。


原文:https://www.appinn.com/nginx-rewrite-rce-cve-2026-42945/

1 个赞

不知道是以前没有关注过漏洞还是真的是AI这么强

感觉最近什么投毒/漏洞之类的事情好多啊

人类查代码和AI查代码的效率不是一个级别啊…

差太多了,我觉得是 1:10000000

因为漏洞仅针对 $1, $2 这种未命名变量。如果给捕获组起个名字也可以规避溢出逻辑。

# 会触发 CVE-2026-42945 的高危配置

location /vulnerable {
    rewrite ^/(\w+)/old$ /$1?new=1 break;  
    if ($arg_new = "1") {
        set $flag "triggered";
    }
    return 200 "Config may be vulnerable";
}

修改一下

location /vulnerable {
    # 将 (\w+) 改为 (?<my_path>\w+)
    rewrite ^/(?<my_path>\w+)/old$ /$my_path?new=1 break;  

    if ($arg_new = "1") {
        set $flag "triggered";
    }
    return 200 "Config is now safer";
}

供一些无法升级Nginx的参考

PS:让 AI 把小青蛙的检查命令加强了一下适配原生、编译、宝塔三种安装方式的Nginx
grep -rInP 'rewrite\s+.*\$[0-9].*\?|if\s+\(|set\s+\$' /etc/nginx/ /www/server/panel/vhost/nginx/ /usr/local/nginx/conf/ 2>/dev/null

笑死,今天估计全球一小半的站长都在升级Nginx,现在Ng官方源和宝塔的升级服务器都卡的要死

rewrite 没用过.
干啥的哦.
我都是默认配置