由 zzak 发布于 2015 年 4 月 13 日
Ruby 的 OpenSSL 扩展由于对主机名的匹配过于宽松而存在漏洞,这可能导致类似于 CVE-2014-1492 的错误。在 Python 中也发现了类似的问题。
此漏洞已被分配 CVE 标识符 CVE-2015-1855。
我们强烈建议您升级 Ruby。
详情
在审阅 RFC 6125 和 RFC 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)