由 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)