imSre9/CVE-2026-42945

GitHub: imSre9/CVE-2026-42945

Stars: 0 | Forks: 0

# CVE-2026-42945: NGINX Rift 堆缓冲区溢出漏洞 ## 概述 CVE-2026-42945 是 NGINX 服务器中的一个严重堆缓冲区溢出漏洞,被称为 "NGINX Rift"。该漏洞存在于 NGINX 的 rewrite 和 set 指令处理逻辑中,当特定配置条件满足时,攻击者可以通过构造恶意请求触发堆溢出,导致拒绝服务(DoS)甚至潜在的远程代码执行(RCE)。 **漏洞类型**:堆缓冲区溢出 **风险等级**:高危 **CVE ID**:CVE-2026-42945 ## 影响范围 - **受影响版本**:NGINX 0.6.27 ~ 1.30.0 - **不受影响版本**:NGINX 1.31.0 及更高版本 ## 修复版本 建议立即升级到以下版本之一: - NGINX 1.31.0 或更高稳定版本 - 各发行版厂商提供的安全补丁版本 ## 触发条件 漏洞触发需要同时满足以下两个条件: 1. **配置条件**:NGINX 配置中同时使用: - `rewrite` 指令(替换字符串中包含 `?` 字符) - `set` 指令(引用 rewrite 的正则捕获组,如 `$1`, `$2`) 2. **请求条件**:请求 URI 中包含可转义字符(如 +, &, % 等) **原理说明**: - `rewrite` 指令设置 `e->is_args = 1`(永不重置) - `set` 指令的长度计算阶段使用全零子引擎(`le.is_args = 0`) - NGINX 解码 `%25` 为 `%`,但 `ngx_escape_uri` 重新编码为 `%25`(3字节) - 每个 `%25` 字符从 1 字节扩展为 3 字节,导致写入超出缓冲区边界 ## 利用方式 ### PoC 测试 # 使用项目中的测试脚本 python3 CVE-2026-42945/CVE-2026-42945-test.py --host cve.test.com --port 80 ### 漏洞验证流程 1. 发送正常请求确认服务器运行状态 2. 发送包含少量 `%25` 字符的请求进行小规模测试 3. 发送大量 `%25` 字符(如 2000 个)触发缓冲区溢出 4. 检测服务器是否崩溃或返回异常响应(500/502 错误) 5. 检查服务器是否自动恢复(master 进程 fork 新 worker) ## 测试结果分析 ### 单层架构 POC 结果 在单层 NGINX 配置中测试结果会触发漏洞: **崩溃日志分析**: - Worker 进程因 SIGSEGV(信号)崩溃 - 崩溃发生在 `ngx_http_script_flush_no_cacheable_variables` 函数 - 崩溃阶段:`ngx_http_core_rewrite_phase` ### 双层架构 POC 结果 在双层 NGINX(layer1 转发 + layer2 业务)配置中测试结果如下: | 配置场景 | layer1 结果 | layer2 结果 | 原因分析 | |----------|------------|------------|----------| | `rewrite` 无 break + `proxy_pass` | ❌ 触发漏洞(404) | ❌ 无请求到达 | rewrite 后继续执行 `set` 触发堆溢出,worker 崩溃 | | `rewrite` 有 break + `proxy_pass` | ✅ 正常(200) | ⚠️ 可能触发漏洞 | `break` 终止 `set` 执行,请求正常转发到后端 | ## 文件说明 | 文件 | 说明 | |------|------| | `CVE-2026-42945/CVE-2026-42945-test.py` | 漏洞测试 PoC 脚本,用于验证目标是否存在漏洞 | | `single_layer_test/single_layer_nginx.conf` | 单层架构易受攻击的 NGINX 配置示例 | | `single_layer_test/image.png` | 漏洞原理示意图 | | `single_layer_test/test.log` | 测试日志文件 | | `double_layer_test/layer1_nginx.conf` | 双层架构第一层(转发层)NGINX 配置 | | `double_layer_test/layer2_nginx.conf` | 双层架构第二层(业务层)NGINX 配置 | ## 参考资料 - [NGINX 官方安全公告](https://nginx.org/en/security_advisories.html) - [CVE-2026-42945 MITRE 详情](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-42945) - [NVD - CVE-2026-42945](https://nvd.nist.gov/vuln/detail/CVE-2026-42945) ## 免责声明 本项目仅供安全研究和教育目的使用。使用者必须遵守所在国家和地区的法律法规。作者不对任何未经授权的滥用行为负责。 **禁止用于非法攻击!** *Last Updated: 2026-05-19*
标签:CVE-2026-42945, NGINX, PoC测试, Web服务器安全, 堆缓冲区溢出, 安全漏洞, 安全补丁, 应用程序安全, 拒绝服务, 漏洞分析, 编程工具, 网络安全, 路径探测, 远程代码执行, 配置漏洞, 隐私保护