F5旗下的NGINX作为全球使用量极高的反向代理服务器,也是互联网关键基础设施之一。最近有安全研究公司披露了这款软件存在一个高危漏洞,编号CVE-2026-42945,简单说就是NGINX脚本引擎里有一个潜伏了18年的堆缓冲区溢出问题。



攻击者只需要向暴露在公网的NGINX服务器发送一条精心构造的HTTP请求,就能远程拿下服务器。考虑到NGINX在全球网站服务器和反向代理领域的占有率接近30%,这个漏洞可能会影响到海量的互联网服务。

这个漏洞最早是在2008年发布的NGINX 0.6.27版本里引入的,之后一直没被发现,潜伏到了现在。受影响的范围包括NGINX 0.6.27到1.30.0版本,同时也波及F5公司提供给商业客户的多种NGINX衍生产品,比如NGINX WAF、F5 WAF、NGINX Gateway Fabric、NGINX Ingress Controller等。

漏洞触发的条件比较隐蔽,需要在NGINX配置文件里同时出现两种特定指令。比如一条带问号的rewrite规则,再加上一条使用正则捕获组的set指令,这时候漏洞就会被激活。

研究团队发现,问题的根源在于ngx_http_rewrite_module的脚本引擎里。当重写指令带了问号时,会设置一个持久的is_args标志,但后续在set指令的长度计算阶段,引擎用的是新的清零过的子引擎,导致长度计算时跳过了URL转义逻辑。而在实际复制阶段用的又是主引擎,会触发ngx_escape_uri函数对+、&这类字符做转义。结果就是缓冲区按照未转义的长度来分配,却写入了膨胀后的内容,最终造成了可控的堆缓冲区溢出。

F5在接到漏洞通报后很快确认了问题,等官方准备好修复程序后研究人员才公开发布了这个漏洞。所以现在用NGINX及其衍生产品的用户都需要升级到不受影响的最新版。开源版NGINX要升级到1.30.1或者1.31.0版本,其他像0.6.27到1.30.0之间的旧版本都受影响。衍生产品的具体版本信息可以去看F5的安全公告。