NGINX 惊现 18 年前漏洞:全球三分之一网站受影响,CVE-2026-42945 评分 9.2

服务器跑得好好的,突然安全团队发来一封邮件,说有个漏洞要修。你一看,CVSS 9.2分,影响全球三分之一的网站,而且这漏洞居然从2008年就存在了。听说了这事儿,整个人都不好了。

这个漏洞有个名字:NGINX Rift,对应 CVE-2026-42945。

简单说,是 NGINX 的 URL 重写模块(ngx_http_rewrite_module)里有个状态标志位没有正确重置,导致缓冲区溢出。攻击者只需要发一条精心构造的 HTTP 请求,就能让 NGINX 工作进程崩溃,或者——在特定条件下——直接拿到服务器的远程代码执行权限。

而且,这漏洞不需要任何登录认证。

18年没人发现?真不是开玩笑

这次发现漏洞的团队叫 depthfirst,他们在 4 月份用自动化扫描工具对 NGINX 代码库做了审计。

6 小时,找到 5 个问题,4 个被 NGINX 官方确认。

最严重的那个,从 2008 年就存在了。

什么叫”潜伏 18 年”?这就是。

问题出在 ngx_http_rewrite_module 的处理逻辑里。某处一个内部标志位(is_args)在长度计算阶段被设为参数转义状态后,没有被清掉。第一次计算长度时按原始字节数估算,第二次写入时却做了 URI 转义。本来够用的缓冲区,就这么溢出了。

“+”、”%”、”&” 这样的字符,会从 1 字节膨胀到 3 字节。1 字节的差距,足以让堆缓冲区溢出。

NGINX漏洞

受影响范围

根据 F5 官方公告:

  • NGINX Open Source 0.6.27 到 1.30.0(所有标准构建版本)
  • NGINX Plus R32 到 R36
  • 以及大量相关产品(Ingress Controller、Gateway Fabric、App Protect WAF 等)

考虑到 NGINX 支撑着全球约三分之一的网站,这次的影响面可以说是近十年来最广的服务器漏洞之一。

怎么修?

方案一:升级(推荐)

  • NGINX Open Source:升级到 1.30.1 或 1.31.0
  • NGINX Plus:R32 P6、R36 P4 或 37.0.0

方案二:配置缓解(如果不能立即升级)

把 rewrite 规则里的匿名捕获($1、$2)换成命名捕获,同时 replacement 字符串里包含 ? 的情况下,后面紧跟的 rewrite、if、set 指令需要审查。

不过说实话,升级是最稳的。安全研究者已经放出了包含 ASLR bypass 的 RCE 漏洞利用代码,野外的主动利用也已经被确认了。

启发

看到这个消息,我第一反应是去翻了翻自己服务器上的 NGINX 版本。

说实话,能在代码库里藏 18 年的漏洞,确实说明 NGINX 的代码质量整体是很过硬的。但换个角度想——如果不是 depthfirst 那个自动化扫描工具,这个漏洞可能还会再潜伏很久。

传统的代码审计靠人工,效率有限。像 CVE-2026-42945 这种逻辑漏洞,静态分析工具也不一定找得到,必须配合运行时分析和模糊测试。

AI 时代的漏洞挖掘,确实在改变游戏规则。

你的服务器用的是 NGINX 吗?赶紧查一下版本吧。

查版本:

nginx -v

如果版本低于 1.30.1 且在 0.6.27 以上,赶紧升。

本文来自用户投稿,不代表本站立场

内容版权属于原作者,转载请联系原作者授权。如有侵权请联系 copyright@jaketao.com

0
0 0 0

延伸阅读

发表回复

登录后才能评论
分享本页
返回顶部