安全公告:CVE-2026-80212 与 CVE-2026-80213

由 hsbt 发表于 2026-08-27
翻译: GAO Jun

在 Ruby 捆绑的 resolv gem 中发现了两个漏洞,CVE-2026-80212 和 CVE-2026-80213。我们建议您更新 resolv gem。

CVE-2026-80212:恶意 DNS 响应导致的内存耗尽

如果攻击者能够控制应用程序解析的域名(例如 webhook 目标或用户提供的 URL),就能使应用无限制消耗内存。 攻击者可以在域名服务器中,将域名解析的响应永久存入 resolv 库的内存中。反复的查找会导致进程耗用的内存持续增长,并最终耗尽内存导致服务终止。

CVE-2026-80213:域名验证绕过

对于使用白名单或 SSRF 过滤器的应用程序,其域名校验和实际访问的域名可能不同。即通过校验的域名和实际访问的域名可能不同,这会导致应用访问了一个本不应该访问的域名。 触发此问题需要域名的长度超过 DNS 的长度限制,所以,如果校验逻辑拒绝超过 256 字节的域名或超过 63 字节的标签就不会受此影响。

受影响版本

  • resolv gem 0.4.0 至 0.7.1
  • resolv gem 0.3.1 及之前版本

Ruby 捆绑的版本因系列而异:Ruby 4.0 捆绑了 0.7.0,Ruby 3.4 绑定了 0.7.1,Ruby 3.3 绑定了 0.3.1。

检查内容

只有通过此 gem 进行域名解析的代码会受到影响。普通 socket 连接(如 Net::HTTP 和 TCPSocket)使用操作系统的域名解析器,不会受到影响。 Net::HTTP 虽然会加载此 gem,但仅用于 IP 地址的正则表达式。所以,仅仅加载此 gem 并不意味着一定存在安全风险。

应用程序可能会因为下列原因受到此漏洞的影响:调用 Resolv 本身,或加载 resolv-replace(这会让所有的 socket 域名解析通过此 gem 进行), 或引用了使用以上方法进行域名解析的 gem。所以,您不仅需要检查自己的代码,还需要检查依赖项。

建议操作

更新 resolv gem 到 0.7.2。对于 Ruby 3.3 系列,更新到 0.3.2。

对于 Ruby 3.2 系列捆绑的 resolv 0.2.x 系列版本,由于 3.2 系列已结束生命周期,所以不再发布新版本。请安装 resolve 0.7.2。

致谢

感谢 dalifit 发现这些问题。

历史

  • 最初发布于 2026-08-27 00:00:00 (UTC)

最新消息

Ruby 3.4.11 已发布

Ruby 3.4.1 1已发布。 此次定期发布包含了一些补丁。

由 nagachika 发表于 2026-09-23

更多新闻...