5 月 13 日,全球最流行的 Web 服务器软件之一 Nginx 的母公司 F5 网络正式发布了紧急安全公告。公告确认了一个被命名为 “NGINX Rift” 的高危安全漏洞(CVE-2026-42945)。该漏洞由安全平台 depthfirst 自动发现,揭示了 Nginx 核心代码中一个隐藏了近 20 年的致命缺陷。
漏洞成因:18 年前的代码隐患
根据 depthfirst 披露的技术分析,问题的根源位于 ngx_http_rewrite_module 模块的 src/http/ngx_http_script.c 文件中。
技术细节显示,当 Nginx 的 rewrite 指令同时满足两个条件时,漏洞将被触发:一是使用了未命名的正则捕获组(如 $1, $2);二是重写后的目标字符串中包含问号(?)。在这种特定配置下,Nginx 脚本引擎在计算目标缓冲区长度时,错误地采用了原始字节长度;然而,在实际写入数据时,引擎却因为内部状态未清除,对捕获的内容进行了 URL 转义处理(URI Escaping)。
这种“长度计算”与“实际写入”之间的不一致,导致每当捕获组中出现 +、% 或 & 等字符时,实际写入的字节数会比预分配的内存多出两倍。攻击者可以利用这一特性,通过构造超长且包含大量特殊转义字符的 URI,精准控制溢出的字节,从而实现堆喷射(Heap Spraying)并最终夺取 Nginx 工作进程(Worker Process)的控制权。
广泛的影响范围
由于 rewrite 模块是 Nginx 的核心组件,且上述配置模式在反向代理和伪静态 URL 设置中极为常见,这使得该漏洞的实际威胁极高。受影响的系统不仅限于 Nginx 开源版(0.6.27 至 1.30.0),还包括:
- NGINX Plus:R32 至 R36 版本;
- NGINX Ingress Controller:广泛应用于 Kubernetes 集群环境的版本;
- F5 WAF for NGINX 以及各种基于 Nginx 的负载均衡器和防火墙产品。
这意味着全球数以百万计的网站、API 网关和云原生基础设施都可能暴露在攻击者的威胁之下。最令人担忧的是,该漏洞位于数据处理层,攻击者无需任何账号权限,仅通过发送一个特制的 HTTP 请求即可完成攻击。
修复与建议
目前,Nginx 官方已经发布了安全更新。F5 官方建议所有管理员应尽快采取以下措施:
- 立即升级:将开源版本 Nginx 更新至 1.30.1 或最新的 1.31.0。更新后必须重启 Nginx 服务以确保补丁生效。
- 临时配置规避:如果无法立即升级,可以通过修改
rewrite指令来规避。将未命名的捕获组(如$1)替换为命名的捕获组(如(?<user_id>...))。例如,将rewrite ^/users/(.*)$ /api?id=$1改为rewrite ^/users/(?<u_id>.*)$ /api?id=$u_id。
截至目前,虽然尚未发现大规模的在野利用,但由于 GitHub 上已经出现了验证代码 (PoC),安全专家预计针对该漏洞的扫描和攻击很快就会到来。在这个依赖 Nginx 支撑互联网半壁江山的时代,每一分钟的延迟升级都可能意味着巨大的安全风险。
本报道由 圈小蛙(qxwa.com) 科技资讯站特约撰稿。🐸️
圈小蛙