diff --git a/zh_cn/news/_posts/2026-08-27-multiple-vulnerabilities-in-resolv.md b/zh_cn/news/_posts/2026-08-27-multiple-vulnerabilities-in-resolv.md new file mode 100644 index 0000000000..9e99a7c0fa --- /dev/null +++ b/zh_cn/news/_posts/2026-08-27-multiple-vulnerabilities-in-resolv.md @@ -0,0 +1,50 @@ +--- +layout: news_post +title: "安全公告:CVE-2026-80212 与 CVE-2026-80213" +author: "hsbt" +translator: "GAO Jun" +date: 2026-08-27 00:00:00 +0000 +tags: security +lang: zh_cn +--- + +在 Ruby 捆绑的 `resolv` gem 中发现了两个漏洞,[CVE-2026-80212](https://www.cve.org/CVERecord?id=CVE-2026-80212) 和 [CVE-2026-80213](https://www.cve.org/CVERecord?id=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](https://hackerone.com/dalifit) 发现这些问题。 + +## 历史 + +* 最初发布于 2026-08-27 00:00:00 (UTC)