
CVE-2026-42945 的概念验证漏洞利用程序,该漏洞是 NGINX 重写模块中的一个严重堆缓冲区溢出漏洞,可实现未经身份验证的远程代码执行。包含设置脚本和 Python shell 弹出漏洞利用程序。
CVE-2026-42945 的 RCE 概念验证,这是一个于 2008 年引入的 NGINX ngx_http_rewrite_module 中的严重堆缓冲区溢出漏洞。该漏洞允许攻击者针对使用 rewrite 和 set 指令的服务器进行未经身份验证的远程代码执行。
该漏洞与另外三个内存破坏问题(CVE-2026-42946、CVE-2026-40701、CVE-2026-42934)一样,都是由 depthfirst 的安全分析系统在只需单击一次即可导入 NGINX 源代码后自主发现的。
NGINX 的脚本引擎采用两遍处理流程:先计算所需缓冲区大小,再复制数据。当 rewrite 替换内容中包含 ? 时,is_args 标志会在主引擎上被设置,但长度计算遍运行在一个全新清零的子引擎上。因此:
is_args = 0 → 返回原始捕获长度。is_args = 1 → 以 NGX_ESCAPE_ARGS 调用 ,将每个可转义字节扩展为 3 字节。ngx_escape_uri复制过程会用攻击者控制的 URI 数据溢出过小的堆缓冲区。利用过程使用跨请求堆风水(heap feng shui)破坏相邻 ngx_pool_t 的 cleanup 指针(通过 POST 请求体喷射,因为 URI 字节不能包含空字节),将其重定向到伪造的 ngx_pool_cleanup_s,在池销毁时调用 system()。
更多关于此漏洞的信息,请访问我们的 https://t.me/p3Nt3st3rsTAr
| 产品 | 受影响版本 | 修复版本 |
|---|---|---|
| NGINX Open Source | 0.6.27 – 1.30.0 | 1.31.0, 1.30.1 |
| NGINX Plus | R32 – R36 | R36 P4, R35 P2, R32 P6 |
已在 Ubuntu 24.04.3 LTS 上测试。
./setup.sh — 构建容器。docker compose -f env/docker-compose.yml up — 启动存在漏洞的 NGINX 服务器。python3 poc.py --shell — 获取 shell。