NGINX 又又爆漏洞(CVE-2026-42533)

摸鱼大王
135

受影响的 NGINX Open Source 版本为 0.9.6 至 低于1.30.4,以及 1.31.2;应分别更新到 1.30.4、1.31.3 或更高版本NGINX Plus 受影响范围包括 37.0.0.1 至低于 37.0.3.1、R36 至 R36 P6,以及 R33 分支;建议升级到 37.0.3.1、R36 P7 或更高的受支持版本。

前言

NGINX 最近披露了 CVE-2026-42533,CVSS v4.0 评分为 9.2。漏洞出在 map 指令的正则匹配和变量处理逻辑里,平时不太会单独注意到,但配置刚好满足条件时,worker 进程就可能被一个请求带崩。

这类问题麻烦的地方在于,站点表面上未必有明显异常,配置也可能已经用了很多年。等到被构造请求碰到,表现往往只是 worker 重启、连接中断,排查时很容易先往流量或上游服务上找原因。

漏洞影响

官方描述的触发条件比较具体:map 使用正则匹配后,字符串表达式先引用正则捕获变量,再引用该 map 的输出变量;在某些场景下,非缓存变量的字符串表达式也可能触发同类问题。

攻击者不需要登录,只要能够向站点发送构造后的 HTTP 请求,就有机会触发堆缓冲区溢出。最直接的影响是 worker 进程崩溃并重启,造成拒绝服务。若系统关闭 ASLR,或者攻击者能够绕过 ASLR,风险还可能发展为代码执行。该漏洞影响的是请求处理的数据平面,不涉及 NGINX 的管理控制平面。

检查配置

先确认实际运行版本:

nginx -v
nginx -V

随后查找配置中的 map

grep -RIn "^[[:space:]]*map[[:space:]]" /etc/nginx

重点不是看到 map 就改,而是检查使用正则的规则,以及它们的命名捕获变量有没有参与缓存键、proxy_set_header、日志格式或其他字符串拼接。配置复杂时,可以先把相关片段单独整理出来,在测试环境验证变量引用顺序。

发行版软件包常会回补安全补丁,因此使用 Debian、Ubuntu、RHEL 等系统自带包时,也要查看对应发行版的安全公告和更新记录,不能只凭 nginx -v 判断。

升级处理

升级到修复版本是最省事也最可靠的办法。升级前备份配置,更新完成后先检查语法,再平滑重载:

nginx -t
systemctl reload nginx

如果短时间内确实无法升级,可以先调整存在风险的变量拼接方式,避免在同一个字符串表达式里先使用 map 的正则捕获变量、再使用对应输出变量。不过这只是临时处理,不能把它当作补丁。

总结

这次漏洞的触发条件并不算宽,但 NGINX 的 map 常被用于缓存、分流和代理配置,实际排查时还是值得认真看一遍。先完成升级,再检查相关配置;已经停止支持的老版本,也该趁这个机会处理掉了。

参考资料:CVE-2026-42533 官方记录F5 / NGINX 官方安全公告

摸鱼小窝」 (blog.aistu.cn)版权所有,引用、转载时必须标明原文出处!

Comments | 4 条评论

    加载中

消息盒子
# 消息加载中 #