Ruby の OpenSSL 拡張ライブラリにおいて、ホスト名検証時に、本来マッチすべきでない名前がマッチしてしまう場合があるという脆弱性が発見されました。
これは [CVE-2014-1492][CVE-2014-1492] に類似した不具合です。
同種の問題が [Python][python-hostname-bug] でも発見されています。

この脆弱性は [CVE-2015-1855][CVE-2015-1855] として CVE に登録されています。

ユーザーの皆さんには Ruby を更新することを強くお勧めします。

## 詳細

[RFC 6125][RFC-6125] および [RFC 5280][RFC-5280] を確認した結果、ホスト名マッチング、および、特にワイルドカード証明書の扱いについて、複数の仕様違反が見つかりました。

Ruby の OpenSSL 拡張ライブラリでは、これらの RFC で推奨されているような、 __より__ 厳密な振る舞いに従った文字列ベースのマッチングアルゴリズムを提供するようになります。
特に注意すべき点としては、ワイルドカードは一つの subject/SAN ごとに最大で一つしか許されなくなります。
また、これらの値の比較は大文字小文字を区別しなくなります。

この変更は、Ruby の `OpenSSL::SSL#verify_certificate_identity` メソッドの挙動を変化させます。

具体的には:

* ホスト名の一番左のパートでのみ、一つのワイルドカード文字だけが許可されます。
* IDNA 名は単純な形式のワイルドカード ('\*.domain' のような) にのみマッチするようになります。
* subject/SAN に使える文字は ASCII の範囲に制限されます。

この脆弱性の影響を受けるバージョンの Ruby を使用しているユーザーは、速やかに Ruby を更新してください。

## 影響を受けるバージョン

* Ruby 2.0.0 patchlevel 645 より前の全ての Ruby 2.0 系列
* Ruby 2.1.6 より前の全ての Ruby 2.1 系列
* Ruby 2.2.2 より前の全ての Ruby 2.2 系列
* revision 50292 より前の開発版 (trunk)

## クレジット

この脆弱性は Tony Arcieri、Jeffrey Walton、Steffan Ullrich によって報告されました。
元々は [Bug #9644][Bug-9644] として報告され、パッチは Tony Arcieri および Hiroshi Nakamura によって提供されました。

## 更新履歴

* 2015-04-13 21:00:00 (JST) 初版

[CVE-2014-1492]: https://bugzilla.mozilla.org/show_bug.cgi?id=903885
[python-hostname-bug]: https://bugs.python.org/issue17997
[CVE-2015-1855]: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-1855
[RFC-6125]: https://tools.ietf.org/html/rfc6125
[RFC-5280]: https://tools.ietf.org/html/rfc5280
[Bug-9644]: https://bugs.ruby-lang.org/issues/9644
