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

Ruby 的 OpenSSL 扩展由于对主机名的匹配过于宽松而存在漏洞,这可能导致类似于 CVE-2014-1492 的错误。在 Python 中也发现了类似的问题。

此漏洞已被分配 CVE 标识符 CVE-2015-1855

我们强烈建议您升级 Ruby。

详情

在审阅 RFC 6125RFC 5280 后,我们发现多个违反主机名匹配规则的情况,特别是通配符证书。

Ruby 的 OpenSSL 扩展现在将提供一个基于字符串的匹配算法,该算法遵循这些 RFC 建议的严格的行为。特别是,不再允许每个 subject/SAN 匹配多个通配符。此外,这些值的比较现在不区分大小写。

此更改将影响 Ruby 的 OpenSSL::SSL#verify_certificate_identity 行为。

具体来说

  • 只允许主机名最左部分有一个通配符。
  • IDNA 名称现在只能通过简单的通配符(例如“*.domain”)进行匹配。
  • Subject/SAN 应仅限于 ASCII 字符。

所有运行受影响版本的用户都应立即升级。

受影响的版本

  • 所有 Ruby 2.0 版本,低于 Ruby 2.0.0 patchlevel 645
  • 所有 Ruby 2.1 版本,低于 Ruby 2.1.6
  • 所有 Ruby 2.2 版本,低于 Ruby 2.2.2
  • 低于 trunk revision 50292 的版本

鸣谢

感谢 Tony Arcieri、Jeffrey Walton 和 Steffan Ullrich 报告此问题。最初报告为 Bug #9644,并由 Tony Arcieri 和 Hiroshi Nakamura 提交了补丁。

历史

  • 最初发布于 2015-04-13 12:00:00 (UTC)