L'estensione OpenSSL di Ruby soffre di una vulnerabilità causata da un confronto
troppo permissivo degli hostname, che può causare bug simili a
[CVE-2014-1492][CVE-2014-1492]. Problemi simili sono stati rilevati in
[Python][python-hostname-bug].

Questa vulnerabilità è stata identificata con il codice [CVE-2015-1855][CVE-2015-1855].

Vi consigliamo decisamente di aggiornare Ruby.

## Dettagli

Dopo aver esaminato [RFC 6125][RFC-6125] e [RFC 5280][RFC-5280], abbiamo trovato
molte violazioni nel confronto degli hostname e in particolare dei certificati
wildcard.

L'estensione OpenSSL di Ruby fornirà da ora in poi un algoritmo di matching
basato sulle stringhe con un comportamento molto _più_ severo, come consigliato da
questi RFC. In particolare, non sarà più possibile fare il matching di piu' di
una wildcard per ogni SAN. Inoltre, la comparazione di questi valori sarà da ora
in poi case-insensitive.

Questa modifica cambierà il comportamento del metodo `OpenSSL::SSL#verify_certificate_identity`.

In particolare:

* Sarà permesso solo un carattere wildcard nella parte iniziale dell'hostname.
* I nomi IDNA potranno essere confrontati con solo una wildcard semplice (ad
  esempio, '\*.domain').
* Il campo SAN sarà limitato solo a caratteri ASCII.

Tutti gli utenti che utilizzano una release vulnerabile dovrebbero aggiornare
immediatamente.

## Versioni vulnerabili

* Tutte le versioni di Ruby 2.0 precedenti Ruby 2.0.0 patchlevel 645
* Tutte le versioni di Ruby 2.1 precedenti Ruby 2.1.6
* Tutte le versioni di Ruby 2.2 precedenti Ruby 2.2.2
* Tutte le revisioni precenti alla 50292 nel trunk

## Ringraziamenti

Grazie a Tony Arcieri, Jeffrey Walton e Steffan Ullrich per aver segnalato
questo problema. Inizialmente segnalato come [Bug #9644][Bug-9644], le patch
sono state sottomesse da Tony Arcieri e Hiroshi Nakamura.

[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
