CVE-2026-46727: 基于 pthread 的 getaddrinfo 超时处理中存在释放后使用(Use-after-free)漏洞

hsbt 发表于 2026-05-20
翻译: GAO Jun

我们发现 Ruby 中基于 pthread 的 getaddrinfo 在超时处理中存在释放后使用(Use-after-free)漏洞。 此漏洞的 CVE 标号为 CVE-2026-46727。Ruby 4.0.5 已经修复了此漏洞。我们建议您升级 Ruby。

详情

rb_getaddrinfo 的超时取消逻辑中存在竞争条件,该函数被 Addrinfo.getaddrinfo(..., timeout:)Socket.tcp(..., resolv_timeout:) 调用。 如果远程攻击者可以延迟 DNS 响应到指定超时时间附近,可能会导致 Ruby 进程引用已释放的内存并崩溃。

推荐操作

请将 Ruby 升级到 4.0.5 或更高版本。

变通方案

如果您无法立即升级,请避免向 Addrinfo.getaddrinfo 传递 timeout: 参数,避免向 Socket.tcp 传递 resolv_timeout: 参数。

受影响版本

  • Ruby 4.0.0 至 4.0.4
  • 在此修复之前的 Ruby 4.1.0-dev (master)

Ruby 3.4 系列及更早版本不受影响。

致谢

感谢 cantina-security 发现此漏洞。同样感谢 shioimm 修补了此漏洞。

历史

  • 最初发布于 2026-05-20 00:00:00 (UTC)

最新消息

Ruby 3.2.11 已发布

Ruby 3.2.11 已发布。 此版本包括了 处理 CVE-2026-27820 的 zlib gem 更新。

hsbt 发表于 2026-03-27

更多新闻...