F5 已发布针对 nginx 关键漏洞的修复补丁,该漏洞允许远程未授权攻击者通过特制 HTTP 请求在 worker 进程中触发堆缓冲区溢出。CVE-2026-42533 已于 7 月 15 日在 nginx 1.30.4(稳定版)和 1.31.3(主线版) 以及 NGINX Plus 37.0.3.1 中修复,使用更早版本的用户应立即升级。
触发该漏洞可导致 worker 崩溃或重启,造成拒绝服务;在 ASLR 被禁用或可被绕过的情况下,F5 表示这也可能允许远程代码执行。
该溢出存在于 nginx 的脚本引擎中,该引擎负责在请求时根据指令组装字符串。它仅在特定配置下出现:一个基于正则表达式的 map,其输出变量在字符串表达式中被引用,且该引用位于早期正则匹配捕获之后。
在这种模式下,引擎的两阶段求值过程会出现问题。第一阶段计算结果所需的字节数并分配缓冲区;第二阶段写入字节。两者读取相同的共享捕获状态,而在两个阶段之间对 map 正则的求值会覆盖该状态。
因此,测量阶段按原始捕获大小分配缓冲区(如来自 location 匹配的 $1 引用),而写入阶段则使用攻击者控制的、不同大小的内容进行填充。缓冲区过小,溢出的长度和内容均直接来自请求。
并非所有 nginx 服务器都会受到影响,暴露程度取决于配置而非仅版本。F5 的 公告 列出受影响的产品包括 NGINX Ingress Controller、Gateway Fabric、App Protect WAF 和 Instance Manager,以及核心服务器和 NGINX Plus,但截至发布时,F5 尚未公布这四款产品的修复版本。
F5 在 CVSS v4 中评分为 9.2,在旧版 v3.1 中为 8.1,并将攻击复杂度评为高。从 0.9.6 到 1.31.2 的所有 nginx 版本均存在漏洞,该范围可追溯至 2011 年,当时 map 获得了正则支持。
CVE-2026-42533 由十多名研究人员独立向 F5 报告;该厂商感谢他们“独立将此问题告知我们”。nginx 自己的更新日志将修复归功于 Winfunc Research 的 Mufeed VH 以及维护者 Maxim Dounin。
报告者之一、发布者为 cyberstan 的 Stan Shaw 发布了比官方公告更详细的 分析文章。F5 将代码执行条件限定为 ASLR 被禁用或可绕过,而 Shaw 认为该漏洞本身提供了绕过方法。他告诉 The Hacker News,捕获状态被覆盖的情况也会反向发生:当被覆盖的捕获小于原始值时,过大的缓冲区会返回未初始化的堆数据,在默认的 Ubuntu 24.04 构建中,单次未授权 GET 请求即可获取有效载荷所需的地址。
“阅读 F5 公告的读者可能会合理地认为这在默认系统上仅为拒绝服务。但事实并非如此,”Shaw 说。他的说法比 F5 更强,他表示在自己的测试中命中率为 10/10,目前他暂不公布利用细节和概念验证,以免他人提前验证。
修复方法是升级至 nginx 1.30.4 或 1.31.3,或 NGINX Plus 37.0.3.1。对于无法立即打补丁的用户,F5 的临时缓解措施是将受影响的正则 map 切换为命名捕获,Shaw 表示这能关闭主要攻击路径,并覆盖大多数配置。
但他告诉 The Hacker News,该缓解措施仍留下一条较窄的路径:一个 map 若定义了与 location 正则相同的命名组,可通过第二条代码路径触发相同的溢出,他已通过 AddressSanitizer 确认,而 F5 的公告未提及此问题。“升级至 1.30.4 / 1.31.3 是唯一完整的修复方案,”他说。
需要检查的配置特征较为狭窄:一个基于正则的 map,其变量出现在字符串表达式中,与来自早期正则的编号捕获($1、$2)一同使用,且捕获写在 map 变量之前。
Shaw 自己的 扫描器 可在配置中自动执行此检查,跟踪 include,并仅标记可利用的顺序;它不会执行利用,但作为报告者的工具,它并非厂商产品。
这是 nginx 表达式求值代码中近两个月内披露的第三起堆溢出漏洞,此前 5 月的 Rift(CVE-2026-42945)以及数天后的 rewrite 模块重叠捕获漏洞(CVE-2026-9256)。
这三起漏洞属于同一类缺陷:nginx 的两阶段脚本引擎在一个阶段确定缓冲区大小,在下一个阶段写入内容,每次写入都超出其测量的尺寸。触发条件各不相同——Rift 是过时的标志,rewrite 漏洞是重叠捕获,本漏洞则是捕获状态被覆盖。研究者指出,共同的弱点在于两阶段设计信任自身测量结果。
截至 7 月 20 日,CVE-2026-42533 尚未出现在 CISA 的 已知被利用漏洞目录 中,也未出现公开的利用代码。Shaw 表示将在补丁发布 21 天后公布自己的概念验证,而 Rift 提供了警示案例:其利用代码在数日内公开,随后很快出现活跃利用。这正是需要在利用代码出现前完成升级的原因。
The Hacker News 询问 F5,切换到命名捕获是否能完全修复 CVE-2026-42533(考虑到 Shaw 记录的变体),以及受影响的下游产品何时发布修复版本。F5 截至发布时尚未回应。
觉得这篇文章有趣?请在 Google News、Twitter 和 LinkedIn 上关注我们,阅读我们发布的更多独家内容。




0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.