关于 CVE-2026-42533 的防御性研究笔记,该漏洞是 NGINX 请求处理中的堆缓冲区溢出,与带有正则表达式捕获的 map 指令及某些变量求值模式有关。
用通俗的话说:NGINX 是 Web 服务器和反向代理软件。它通常位于网站和 API 前面,接收 Web 请求并决定将其发送到何处。map 规则是 NGINX 配置的一项功能,表示“如果这个请求值看起来像 X,就将这个变量设为 Y”。正则表达式捕获是从模式匹配中提取出的文本片段。
这个 CVE 之所以重要,是因为某些较旧的 NGINX 版本会错误地处理特定类型的 map 和变量组合模式。这并不意味着每台 NGINX 服务器都受影响。版本很重要,但实际启用的配置也同样重要。
本项目刻意保持安全:它不包含漏洞利用流量、崩溃载荷或生产环境探测。目标是展示我如何进行暴露排查、解释风险,并为防御者提供一条可重复的验证路径。

NGINX 将此问题列为重大安全公告:受影响版本为 0.9.6-1.31.2,修复版本为 1.30.4+ 和 1.31.3+。NGINX 更新日志描述了一种情况:当 map 指令使用正则匹配,并且 map 变量在受该 map 影响的捕获之后被包含在字符串表达式中时,worker 进程会发生堆缓冲区溢出。
NVD 记录了 F5 的描述:未经身份验证的攻击者可能通过精心构造的 HTTP 请求触发该问题,但前提是配置和运行时条件同时满足。预期直接影响是 NGINX worker 重启和拒绝服务,如果 ASLR 被禁用或被绕过,还可能实现代码执行。
在将 NGINX 部署视为已暴露之前,防御者应先回答四个问题。简而言之:首先确认版本,然后确认有风险的配置模式是否真实存在。
map?no buffer space in script copy?如果这些词是陌生的:worker 是处理请求的 NGINX 进程。崩溃循环或重启信号意味着进程可能在失败后不断重新启动。发行版反向移植是指 Linux 厂商有时会修补一个看似较旧的版本,而不把版本号改为最新的上游版本。
flowchart LR
advisory["Read advisory and changelog"] --> version["Check NGINX version"]
version --> config["Review active config"]
config --> scanner["Run safe map-pattern scanner"]
scanner --> validate["Validate fixed build or vendor patch"]
validate --> hunt["Hunt restart and diagnostic signals"]
hunt --> remediate["Patch, reload, and document"]scripts/audit_nginx_map_risk.py
一个用于 NGINX 配置文件的防御性启发式扫描器。它查找正则 map 块、捕获,以及后续引用捕获和 map 输出的字符串表达式。它不证明服务器可利用,而是找出值得人工审查的配置。
scripts/render_demo_gif.py
从真实的扫描器输出重建这个小型 README demo GIF。
detections/splunk_nginx_cve_2026_42533.spl
用于版本清单、崩溃/重启症状以及补丁后诊断字符串的 Splunk 搜索。
detections/defender_hunting_notes.kql
适用于收集了 NGINX 日志和进程活动的 Linux 主机的 Microsoft Defender 狩猎笔记。
detections/sigma_nginx_worker_restart_symptoms.yml
用于 NGINX worker 重启或崩溃症状的 Sigma 狩猎规则。它是供审查的线索,而不是漏洞利用的证据。
samples/nginx_map_patterns.conf
用于解释风险模式的安全、示意性配置示例。这些不是漏洞利用载荷。
SECURITY.md
本仓库的范围说明。这使项目明确保持防御性,并且可以安全审查。
lab/windows-quickstart.ps1
面向 Windows 的取证运行脚本,执行扫描器并将输出保存到 evidence/ 下。
lab/windows-nginx-validation.ps1
下载官方修复版 NGINX for Windows 构建,使用 nginx -t 验证本地实验配置,运行扫描器并保存证据。
lab/vmware-lab-notes.md
可选的更完整实验路径,使用一次性 Linux VM;如果之后需要基于截图的演练,可以使用。
当前本地验证结果存储在 evidence/ 中。Windows quickstart 会对包含的示例配置运行扫描器并保存记录。Windows NGINX validation 会下载官方修复版 NGINX 构建,使用 nginx -t 确认实验配置,然后运行扫描器。Kali VM validation 会在一次性的 Kali VMware 客户机中运行同一个扫描器。这证明了该仓库在 Windows 和 Linux 上都可执行、可审查,同时让项目保持在防御性边界内。
powershell -ExecutionPolicy Bypass -File .\lab\windows-quickstart.ps1
powershell -ExecutionPolicy Bypass -File .\lab\windows-nginx-validation.ps1
python .\scripts\self_check.py
map 块。1.30.4+ 或 1.31.3+,或相应的 NGINX Plus 修复版本。no buffer space in script copy。