chenqin231/CVE-2026-42945

GitHub: chenqin231/CVE-2026-42945

针对 CVE-2026-42945(Nginx Rift)的本地风险评估脚本,通过逐层检查版本、触发配置、ASLR 状态和编译加固情况,给出贴合实际环境的风险等级判断。

Stars: 1 | Forks: 0

# CVE-2026-42945 实际风险评估脚本 针对 **CVE-2026-42945**(Nginx Rift)的本地风险评估工具。不同于直接告诉你"版本受影响就危险",这个脚本会逐层检查真正决定风险的三个条件,给出符合你实际情况的结论。 ## 背景 CVE-2026-42945 是 nginx `ngx_http_rewrite_module` 中一个存在了 18 年的堆缓冲区溢出漏洞(CWE-122),CVSS 4.0 评分 9.2。但公告中有一句关键的限定: RCE 成立需要同时满足三个条件: 1. nginx 配置了特定的 `rewrite` + `set` 指令组合 2. 系统关闭了 ASLR(现代 Linux 默认开启) 3. nginx 堆地址字节恰好全部是 URI 安全字符 缺少任何一个,最坏结果是 worker 进程崩溃后自动重启(DoS),而非服务器被接管。 详细分析见:[《nginx 藏了 18 年的炸弹,9.2 分漏洞到底炸没炸你的服务器?》](https://mp.weixin.qq.com/s?__biz=MzA4NjYxMDgzMw==&tempkey=MTM3NF9JYzlIQUxWYjhwa3IwMUFNdzFNM3ZCQ2dKdkwwcldzVFVmWWZwRDJKVzR4eWlvMzI5MjNxZzBsTGhhdFhPcWs0Ul9Ib05zUkpzNEdrdnRlWFlVTVI4Y2w4czltaERnZXNwclQwRk0yWFkwYWxMUE8xSjNXZ29iSUZoYzRHYXJkempteEdya3J3cGNpT3JqSnMyNHhpbHB1UDNDZUliTDRncGJwRDVnfn4%3D&chksm=07c09dfc30b714ea6536a39b51f84621c17e31631f0ea44922171b5a656428346b16bb999383&poc_token=HNaRBmqjMipAZQioknTeTvv3ocLu5PlpjzPuE7cz) ## 快速使用 # 运行(需要 sudo 读取 nginx 完整配置) sudo bash check_cve_2026_42945.sh ## 检测项目 脚本依次检查以下四项,任意一项不满足即提前退出并给出结论: | 检测项 | 说明 | |--------|------| | nginx 版本 | 受影响范围:0.6.27 – 1.30.0 | | 漏洞触发配置 | 同一 `location` 块内同时存在含 `?` 的 `rewrite` 和捕获组 `set` | | ASLR 状态 | 读取 `/proc/sys/kernel/randomize_va_space` | | 编译加固 | 检测 `-fcf-protection` / `FORTIFY_SOURCE` / Full RELRO / 栈保护 | ## 输出示例 **情况一:版本受影响,但无漏洞触发配置(最常见)** [*] nginx 版本:1.24.0 [!] 版本 1.24.0 在受影响范围内,继续检查触发条件... [*] 扫描 nginx 配置(检查 rewrite+set 漏洞配置组合)... [✓] 未发现漏洞触发配置(rewrite+set 组合) 结论:版本受影响,但无漏洞触发配置,实际风险极低 建议:规划升级到 1.30.1 / 1.31.0,无需紧急处理 **情况二:有漏洞配置,ASLR 开启,编译加固完善** [!] 版本 1.24.0 在受影响范围内,继续检查触发条件... [!] 发现漏洞触发配置: → location ~ ^/api/(.*)$ { [✓] ASLR 已启用(级别 2,完整随机化) → RCE 可靠利用所需前提不满足,最坏情况为 worker 进程崩溃(DoS) [✓] 检测到 -fcf-protection(Intel CET 控制流保护) [✓] 检测到 FORTIFY_SOURCE=3 [✓] 检测到 Full RELRO(GOT 只读) [✓] 检测到栈保护(stack-protector) 风险等级:低 建议:在下次维护窗口升级到 nginx 1.30.1 / 1.31.0 **情况三:有漏洞配置,ASLR 关闭** [!] 发现漏洞触发配置: → location ~ ^/api/(.*)$ { [✗] ASLR 已关闭!RCE 风险显著上升 风险等级:高(DoS 确定 / RCE 可能) 立即行动: 1. 临时移除或修改触发漏洞的 rewrite+set 配置 2. 确认 ASLR 开启:echo 2 | sudo tee /proc/sys/kernel/randomize_va_space 3. 升级 nginx:apt install nginx 或 编译安装 1.30.1+ ## 风险等级说明 | 等级 | 含义 | 建议处理节奏 | |------|------|-------------| | 无影响 | 未安装 nginx 或版本已修复 | 无需操作 | | 极低 | 版本受影响但无触发配置 | 下次例行维护时升级 | | 低 | 有触发配置,但 ASLR + 编译加固完善 | 下次维护窗口升级 | | 中 | 有触发配置,防护存在缺口 | 尽快升级,可用性有风险 | | 高 | 有触发配置 + ASLR 关闭 + 加固缺失 | 立即处理 | ## 修复版本 | 产品 | 受影响版本 | 修复版本 | |------|-----------|---------| | NGINX 开源版 | 0.6.27 – 1.30.0 | **1.30.1 / 1.31.0** | | NGINX Plus | R32 – R36 | **R36 P4 / R35 P2 / R32 P6** | # Ubuntu / Debian sudo apt update && sudo apt install nginx # 验证版本 nginx -v 官方公告:[https://my.f5.com/manage/s/article/K000161019](https://nvd.nist.gov/vuln/detail/CVE-2026-42945) ## 测试覆盖 脚本在以下场景均经过实际验证: - [x] nginx 未安装 → 直接退出 - [x] nginx 版本不在受影响范围(1.31.0)→ 不受影响 - [x] 版本受影响,无触发配置 → 极低风险 - [x] 版本受影响,有触发配置,ASLR 开启,加固完善 → 低风险 - [x] 版本受影响,有触发配置,ASLR 关闭 → 中/高风险 测试环境:Ubuntu 22.04 LTS,nginx 1.24.0 (Ubuntu 官方包) ## 局限性 - 配置检测基于正则匹配,复杂的多层 `include` 结构可能存在漏检(脚本通过 `nginx -T` 展开所有 include,覆盖绝大多数情况) - 不检测 OpenResty / Tengine 等 nginx 衍生版本 - 仅适用于 Linux 系统 ## License MIT
标签:ASLR, Cutter, CVE, CVE-2026-42945, DoS, GitHub Advanced Security, Nginx, Nginx Rift, ngx_http_rewrite_module, RCE, XXE攻击, 堆缓冲区溢出, 安全加固, 安全脚本, 应用安全, 拒绝服务, 数字签名, 数据展示, 无线安全, 漏洞分析, 红队, 编程工具, 网络安全, 网络安全审计, 路径探测, 远程代码执行, 隐私保护