社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

潜伏18年,CVSS 9.2分!NGINX核心模块曝“无认证RCE”漏洞,PoC已公开

看雪学苑 • 2 月前 • 147 次点击  


提到全球互联网的关键基础设施,NGINX反向代理服务器绝对占据一席之地。近日,安全研究人员披露了一个潜伏长达18年的高危漏洞,无需任何认证,攻击者仅需发送一条特制HTTP请求,就能远程控制目标服务器。


当地时间5月13日,F5公司发布安全公告,正式披露编号为 CVE-2026-42945的堆缓冲区溢出漏洞。该漏洞在CVSS v4评分体系中高达9.2分,影响从2008年至今的几乎所有NGINX版本,以及大量基于NGINX的衍生产品。


更令人不安的是,发现该漏洞的安全团队depthfirst已在GitHub上公开了完整的概念验证(PoC)利用代码。



01
一枚藏在脚本引擎里的“老地雷”

漏洞位于NGINX的 ngx_http_rewrite_module 模块——一个在绝大多数标准NGINX配置中都会启用的核心组件。其根源在于内部脚本引擎处理URI重写时的两次扫描逻辑缺陷。


研究员Zhenpeng (Leo) Lin解释,脚本引擎会先“预演”一遍,计算出最终字符串所需的内存长度,然后再进行实际的数据复制。问题就出在:当一条 rewrite 指令的替换字符串末尾带有问号时,会永久性地设置一个内部标志 is_args。紧接着,如果后面的 set 指令使用了未命名的PCRE捕获组(比如 $1$2),在长度计算阶段,引擎错误地认为不需要进行URI转义,于是分配了一块刚好装下“原始”字符串的缓冲区。但在实际写入阶段,由于 is_args 标志仍在,ngx_escape_uri 函数对特殊字符进行了转义,导致数据“膨胀”,直接溢出了刚刚分配的堆内存。


用研究员的话说“内存是按未转义的长度申请的,写的却是转义后膨胀了的字符串,多余的字节全部溢出。”


由于NGINX采用“主进程派生工作进程”的多进程架构,各个工作进程的内存布局完全一致,堆布局对攻击者而言是“确定性”的。这意味着攻击者不仅可以稳定地造成工作进程崩溃(拒绝服务),在某些禁用了地址随机化(ASLR)的系统上,甚至可以实现远程代码执行(RCE),且整个过程无需任何身份认证


02
如何判断自己是否受影响?

该漏洞被引入的时间远在2008年发布的NGINX 0.6.27版本中,此后一路潜伏至今。


只要配置中同时存在以下模式的指令,风险就已被激活:

  • rewrite 指令的替换字符串以问号结尾;

  • 随后出现的 rewriteif 或 set 指令中使用了未命名的正则捕获组(如 $1$2)。


一个典型的易受攻击配置示例:

nginxrewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last;


受影响的不仅是NGINX开源版(0.6.27 至 1.30.0)和商业版NGINX Plus(R32至R36),众多周边产品也被波及,包括NGINX Ingress Controller、NGINX Gateway Fabric、NGINX App Protect WAF、F5 DoS for NGINX等一系列企业级组件。


全球互联网中,近3成的网站服务器或反向代理核心使用NGINX,这使得此漏洞的潜在影响面极其广泛,堪称“关键基础设施级”威胁。


03
立即升级,或改用“命名捕获”

官方补丁获取:https://nginx.org


F5已经发布修复方案,将漏洞修复在NGINX Open Source 1.30.1 和 1.31.0,以及NGINX Plus R32 P6、R36 P4等版本中。所有受影响的产品线都已获得对应的补丁版本。


如果暂时无法立即升级,有一条可操作的临时缓解措施:将所有受影响的 rewrite 指令中的未命名捕获 ( $1$2...) 替换为命名捕获例如,将上面的危险配置修改为:

nginxrewrite ^/users/(?[0-9]+)/profile/(?
.*)$ /profile.php?id=$user_id&tab=$section last;


这将从配置层面瓦解漏洞的触发路径。


此外,本次更新还一并修复了另外三个中高危漏洞(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934),涉及内存过度分配、UAF以及越界读取等问题,同样建议一并处置。


对于任何直接或间接暴露在互联网上的NGINX服务,当下的动作越早越好——要么升级,要么改写配置。


资讯来源:F5安全公告K000160932、depthfirst安全团队披露


球分享

球点赞

球在看


点击阅读原文查看更多

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/196367