루비 OpenSSL 확장은 호스트 이름을 지나치게 관대하게 매칭하는 취약점을 겪고
있습니다. 이는 [CVE-2014-1492][CVE-2014-1492] 같은 버그가 될 수 있습니다.
[파이썬][python-hostname-bug]에서도 비슷한 문제가 발견되었습니다.

이 취약점은 CVE ID [CVE-2015-1855][CVE-2015-1855]에 할당되었습니다.

루비를 업그레이드하시길 강력히 권합니다.

## 상세

[RFC 6125][RFC-6125]와 [RFC 5280][RFC-5280]를 검토한 후, 호스트 이름 매칭과 특정
와일드 카드의 인증에 여러 위반 사항을 발견했습니다.

루비 OpenSSL 확장은 이제 문자열 기반 매칭 알고리즘을 제공합니다. 이는 위의
RFC에서 권장한, _보다_ 엄격한 행동을 합니다. 특히, subject/SAN당 하나 이상의
와일드 카드를 매칭하는 것은 더 이상 허용하지 않습니다. 뿐만 아니라, 이 값의
비교는 이제 대소문자를 구별하지 않습니다.

이 변경은 루비의 `OpenSSL::SSL#verify_certificate_identity` 동작을 변경합니다.

구체적으로 말하면,

* 호스트 이름의 왼쪽 끝 부분의 한 와일드 카드 문자만 허용됨.
* IDNA 이름은 이제 간단한 와일드 카드만 매칭함. (예를 들어 '\*.domain')
* Subject/SAN은 ASCII 문자로만 제한되어야 함.

영향받는 릴리스를 사용하시는 모든 분은 즉시 업그레이드하셔야 합니다.

## 영향받는 버전

* 루비 2.0.0 패치레벨 645 이전의 모든 루비 2.0 버전
* 루비 2.1.6 이전의 모든 루비 2.1 버전
* 루비 2.2.2 이전의 모든 루비 2.2 버전
* 리비전 50292 이전의 트렁크

## 참여자

이 이슈를 보고해주신 Tony Arcieri 님, Jeffrey Walton 님, Steffan Ullrich 님께
감사드립니다. 최초 보고는 [버그 #9644][Bug-9644]에서 이루어졌고, Tony Arcieri
님과 Hiroshi Nakamura 님이 수정하셨습니다.

## 수정 이력

* 2015-04-13 12:00:00 (UTC) 최초 공개

[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
