0xBlackash/CVE-2026-42945

GitHub: 0xBlackash/CVE-2026-42945

系统记录了 NGINX ngx_http_rewrite_module 中存在约十八年的严重堆缓冲区溢出漏洞(CVE-2026-42945)的技术细节、触发原理与修复方案。

Stars: 2 | Forks: 1

# 🛡️ CVE-2026-42945 - **NGINX Rift** ChatGPT Image May 14, 2026, 05_35_52 PM **NGINX 中的严重堆缓冲区溢出漏洞** ![Severity](https://img.shields.io/badge/Severity-Critical-red?style=for-the-badge) ![CVSS](https://img.shields.io/badge/CVSS-9.2-critical?style=for-the-badge) ![Affected Since](https://img.shields.io/badge/Affected%20Since-2008-orange?style=for-the-badge)
## 📌 概述 **CVE-2026-42945**(也称为 **NGINX Rift**)是 NGINX 的 `ngx_http_rewrite_module` 中的一个**严重**安全漏洞。 - **类型**:基于堆的缓冲区溢出 (CWE-122) - **发现时间**:2026 年 5 月 - **存在时间**:约 18 年 - **可利用性**:可通过单个精心构造的 HTTP 请求进行远程、未经身份验证的利用 该漏洞源于在处理 URI 重写规则时,长度检查阶段与实际复制/转义阶段之间的缓冲区大小计算不一致。 ## 📋 受影响版本 ### NGINX 开源版 | 状态 | 版本 | |--------------|-----------------------------------| | **受影响** | 0.6.27 → **1.30.0** | | **已修复** | **1.30.1** 和 **1.31.0+** | ### NGINX Plus | 状态 | 发布版本 | |--------------|------------------------------| | **受影响** | R32 → R36 | | **已修复** | R36 P4, R32 P6, 37.0.0+ | ## 🔍 技术细节 该漏洞由特定的指令组合触发: 1. `rewrite` 指令的**替换字符串包含 `?`**(激活 `is_args` 标志)。 2. 随后是另一个使用**未命名 PCRE 捕获**(`$1`、`$2` 等)的 `rewrite`、`if` 或 `set` 指令。 ### 根本原因 - **长度计算阶段**使用清零的子引擎(`is_args` = false)→ 低估了所需的缓冲区大小。 - **复制/转义阶段**使用真实的引擎(`is_args` = true)→ 使用 `NGX_ESCAPE_ARGS` 调用 `ngx_escape_uri()`。 - URI 中大量可转义字符(`+`、`&`、`%` 等)导致**堆溢出**。 ## ⚠️ 影响
| 影响 | 严重程度 | 描述 | |---------------------|--------------|-----------| | **拒绝服务** | 高 | 可靠的 worker 进程崩溃 | | **远程代码执行** | 严重 (视情况而定) | 在 ASLR 被禁用或被绕过时可能发生 | | **攻击复杂度** | 低 | 单个 HTTP 请求,无需身份验证 | **CVSS v4.0 评分**:**9.2 (严重)** **CVSS v3.1 评分**:**8.1 (高危)** ## 🛠️ 缓解措施与修复
### 1. 立即升级(推荐) - 更新至 **NGINX 1.30.1** 或 **1.31.0+** - 将 NGINX Plus 更新至最新的补丁版本 ### 2. 配置规避方案 用**命名捕获**替换**未命名捕获**: #### 修改前 (存在漏洞) ``` rewrite ^/users/([0-9]+)/profile/(.*)$ /profile.php?id=$1&tab=$2 last; ``` #### 修改后 (安全) ``` rewrite ^/users/(?[0-9]+)/profile/(?
.*)$ /profile.php?id=$user_id&tab=$section last; ``` **主要建议**:审查所有结合了包含 `?` 的替换字符串以及后续使用 `$1`、`$2` 等的重写规则。 ## 🛡️ 最佳实践 - 在生产环境的重写规则中始终使用**命名捕获组** - 保持 NGINX 和 NGINX Plus 定期更新 - 监控访问日志以发现可疑的 URI 模式 - 考虑使用 WAF 规则来检测漏洞利用企图 ## 📜 总结 **立即行动** — 为您的实例打补丁并更新您的配置。
**用 ❤️ 为安全社区打造**
标签:0day漏洞, CISA项目, CVE-2026-42945, CVSS 9.2, CWE-122, Heap-based Buffer Overflow, HTTP请求走私, NGINX Plus, NGINX Rift, NGINX漏洞, ngx_http_rewrite_module, PCRE捕获组, PoC, RCE, URI重写, XXE攻击, 堆缓冲区溢出, 数据展示, 暴力破解, 漏洞分析, 红队, 编程工具, 网络安全, 负责任AI, 路径探测, 远程代码执行, 隐私保护, 高危漏洞