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

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)