紧急预警 | 关于 NGINX 正则 map 漏洞 CVE-2026-42533 的风险说明与自查建议
近期,我们监控到NGINX map指令正则匹配相关堆缓冲区溢出漏洞CVE-2026-42533。该漏洞与正则捕获变量、正则map变量及 NGINX 复杂表达式的两阶段计算机制有关。在满足特定配置条件时,未认证攻击者可能通过构造HTTP请求触发NGINX worker进程堆缓冲区溢出,导致worker进程异常崩溃;在特定运行环境下,风险可能进一步扩大为信息泄露或远程代码执行。
根据目前修复信息和公开分析,该漏洞并不是“只要使用map就会触发”,而是依赖特定的变量组合和计算顺序。典型风险场景包括:配置中存在使用~或~*正则匹配的map指令;location、server_name、rewrite、if等正则匹配产生了 $1至$9或命名捕获变量;同时,同一个复杂值计算过程中先引用捕获变量,随后引用正则map的输出变量。正则map在计算时可能覆盖原有捕获状态,使长度计算和实际写入结果不一致,从而引发堆缓冲区溢出。
需要注意的是,捕获变量和map变量不一定要出现在同一条指令中。 对于 proxy_set_header、fastcgi_param、scgi_param、uwsgi_param、grpc_set_header等指令,同一作用域内的多条配置可能共用一个请求构造缓冲区,也可能形成跨指令触发。 网瑞达反代/VPN产品在业务访问链路中使用 NGINX作为统一入口能力,因此在漏洞披露后,我们对产品内置生成的反代/VPN NGINX配置进行了专项排查。 经排查,自动生成的配置不存在此类风险。 对于使用了自定义配置的用户或者其他使用 NGINX的用户,我们建议重点检查以下场景: 是否存在使用~或 ~*正则匹配的map指令; 是否存在通过正则location、server_name、rewrite或if产生的$1至 $9或命名捕获变量; 捕获变量和正则map输出变量是否同时出现在return、set、add_header、rewrite、proxy_pass等指令中; 捕获变量和正则map输出变量是否分别出现在同一作用域内的多条 proxy_set_header、fastcgi_param、scgi_param、uwsgi_param或 grpc_set_header指令中; map输入是否来自请求URI、请求参数、请求头、请求体或SNI等外部可控数据; 捕获变量在计算顺序上是否位于正则map 输出变量之前。 对于存在疑似风险配置的用户,我们建议尽快执行以下操作: 优先升级NGINX Open Source至1.30.4、1.31.3 或更高修复版本; 检查所有公网暴露入口的完整NGINX配置; 避免在同一复杂值或同一请求构造缓冲区中同时使用正则捕获变量和正则map输出变量; 必要时将捕获结果提前保存到普通变量,或拆分相关配置逻辑。 不止网瑞达产品 多场景 NGINX 风险自检脚本开源上线 为帮助用户快速定位风险,可以使用CVE-2026-42533 配置自检脚本。该脚本会扫描NGINX配置中的正则捕获来源、正则map变量、跨指令组合及变量计算顺序,并默认跟踪include配置。脚本为只读静态扫描工具,不会发送漏洞利用请求或修改运行中的NGINX服务。 如果当前版本处于受影响范围,且配置命中风险模式,应尽快升级NGINX并调整相关配置;如果版本处于受影响范围但未发现风险模式,也建议按照官方公告完成版本修复;如果发现疑似风险配置但版本不在受影响范围,也建议进行人工复核,降低后续维护风险。 自检脚本地址 自检脚本地址: https://github.com/0xCyberstan/CVE-2026-42533-Config-Scanner 网瑞达将持续跟踪该漏洞的官方修复信息、利用条件变化及实际攻击风险。如后续发现新的影响场景或需要用户采取进一步措施,我们会及时发布更新说明。


