这是一个面向防守和内网排查的 CVE-2026-42945 静态检测工具,用于检查 NGINX ngx_http_rewrite_module 相关配置是否存在高风险 rewrite 组合。
本项目不提供漏洞利用代码,不发送恶意 HTTP 请求,也不会尝试触发崩溃或远程代码执行。它只读取本地 NGINX 配置文件,帮助安全团队判断是否需要升级或整改配置。
CVE-2026-42945 是 NGINX Open Source 和 NGINX Plus ngx_http_rewrite_module 中的堆缓冲区溢出漏洞。
公开公告描述的风险场景大致包括:
rewrite 指令;rewrite、if 或 set 指令;$1、$2;?。NGINX Open Source 的修复版本包括 1.30.1、1.31.0 及更新版本。NGINX Plus 请以厂商公告中的修复版本为准。
参考链接:
只需要 Python 3,无第三方依赖。
python3 --version
推荐先导出 NGINX 完整渲染后的配置:
nginx -T > nginx-rendered.conf
python3 cve_2026_42945_checker.py nginx-rendered.conf
也可以直接扫描配置目录:
python3 cve_2026_42945_checker.py /etc/nginx
输出 JSON:
python3 cve_2026_42945_checker.py --json nginx-rendered.conf
如果配置导出中没有包含 NGINX 版本信息,可以手动指定版本进行辅助判断:
python3 cve_2026_42945_checker.py --json --nginx-version 1.30.0 nginx-rendered.conf
输出 SARIF,方便导入 GitHub code scanning 或内部安全平台:
python3 cve_2026_42945_checker.py --sarif nginx-rendered.conf > cve-2026-42945.sarif
0:未发现高风险配置模式;1:发现至少一个高风险配置模式;2:输入文件或路径读取失败。检测结果中的重点字段包括:
versions:从配置或参数中识别到的 NGINX 版本及判断结果;findings:命中的风险配置位置、原因和证据;summary:扫描文件数量、发现数量和最高风险级别。示例风险结果会指出类似这样的证据:
rewrite ... ?$1; -> set ... $1;
这表示该配置形态与公开公告描述的风险条件相近,需要优先复核。
优先升级 NGINX 到已修复版本:
1.30.1、1.31.0 或更新版本;同时建议复核 rewrite 规则:
$1、$2 这类未命名捕获引用;nginx -T 导出的完整配置进行扫描。这个工具是静态配置检测器,不是完整漏洞验证器。它可能无法覆盖:
请把它作为内网排查和配置审计辅助工具,而不是唯一的漏洞评估依据。
运行测试:
python -m pytest
仓库已包含 GitHub Actions 工作流,会在 push 和 pull request 时自动运行测试。