CVE-2015-1855: Ruby OpenSSL 主機名稱驗證風險

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 方法的行為。

特別說明:

  • 主機名稱最左部分只允許一個通配符(wildcard)
  • IDNA 名稱現在可以用一個簡單的通配符來匹配(譬如 '\*.domain'
  • Subject/SAN 應該限制只能使用 ASCII 字元

所有使用受影響版本的使用者應儘速升級。

受影響版本

  • 所有 Ruby 2.0 patchlevel 在 645 以前的版本
  • 所有 Ruby 2.1 在 2.1.6 以前的版本
  • 所有 Ruby 2.2 在 2.2.2 以前的版本
  • 主幹 revision 50292 以前的版本

致謝

感謝 Tony Arcieri、Jeffrey Walton 以及 Steffan Ullrich 回報此問題。最初回報此問題的票為 Bug #9644,修正補丁由 Tony Arcieri 以及 Hiroshi Nakamura 提交。

編輯歷史

  • 初次發佈於 2015-04-13 12:00:00 (UTC)