CVE-2015-1855: Ruby OpenSSL 主机名验证风险

zzak 发表于 2015-04-13
翻译: springwq

Ruby 的 OpenSSL 扩展目前存在风险,原因是其对主机名匹配的做法过于宽松,此风险会导致像 CVE-2014-1492 中提到的错误。同样的问题也在 Python 中被发现。

此风险已被分配了 CVE 识别号 CVE-2015-1855

强烈建议您升级 Ruby 版本。

详情

在重新审阅 RFC 6125 以及 RFC 5280 之后,我们发现 OpenSSL 在匹配主机名时,特别是匹配证书的通配符的做法违反了许多规则。

Ruby OpenSSL 扩展,将会提供一个基于字符串匹配的算法,遵循了上述 RFC 推荐做法,匹配算法会更加严谨。需特别指出,一个 subject/SAN 匹配多个通配符的情况将不被允许。对这些值的匹配,也不再区分大小写。

本次修正会对 Ruby OpenSSL::SSL#verify_certificate_identity 方法的行为产生影响。

特别说明:

  • 主机名最左部分只允许一个通配符
  • IDNA 名称可以用一个简单的通配符来匹配(例如:'\*.domain'
  • Subject/SAN 应该限制其只能使用 ASCII 字符

所有使用受影响版本的用户应尽快升级。

受影响的版本

  • 所有 Ruby 2.0 patchlevel 645 之前的版本
  • 所有 Ruby 2.1 在 2.1.6 之前的版本
  • 所有 Ruby 2.2 在 2.2.1 之前的版本
  • 主干 revision 50292 之前的版本

致谢

Tony Arcieri、Jeffrey Walton 和 Steffan Ullrich 报告了此问题,我们对此表示感谢!此问题首次被报告为 Bug #9644,补丁由 Tony Arcieri 和 Horoshi Nakamura 提供。

历史记录

  • 首次发布于 2015-04-13 12:00:00 (UTC)

最新消息

Ruby 4.0.0 已发布

我们很高兴地宣布 Ruby 4.0.0 已发布。 Ruby 4.0 引入了 Ruby::Box 和 “ZJIT”,以及若干改进。

naruse 发表于 2025-12-25

全新的 Ruby 文档界面

继 重新设计 ruby-lang.org之后, 我们还有更多消息来庆祝 Ruby 诞生 30 周年:docs.ruby-lang.org 采用了全新的、RDoc 的 Aliki 默认主题。

Stan Lo 发表于 2025-12-23

重新设计我们的网站标识

我们激动地宣布网站已经全面改版。此次更新的设计方案由 Taeko Akatsuka (赤塚妙子) 创作。

Hiroshi SHIBATA 发表于 2025-12-22

Ruby 4.0.0 preview3 已发布

我们很高兴地宣布 Ruby 4.0.0-preview3 已发布。 Ruby 4.0 引入了 Ruby::Box 和 “ZJIT”,以及若干改进。

naruse 发表于 2025-12-18

更多新闻...