安全公告: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 字节的标签就不会受此影响。
受影响版本
resolvgem 0.4.0 至 0.7.1resolvgem 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
Ruby 4.0.7 已发布
Ruby 4.0.7 已发布。
由 k0kubun 发表于 2026-09-15
Ruby 3.3.12 已发布
Ruby 3.3.12 已发布。
由 hsbt 发表于 2026-07-16
Ruby 4.0.6 已发布
Ruby 4.0.6 已发布。
由 k0kubun 发表于 2026-07-14