CVE-2015-1855: Ruby OpenSSL Hostname Verification

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. Problemi simili sono stati rilevati in Python.

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

Vi consigliamo decisamente di aggiornare Ruby.

Dettagli

Dopo aver esaminato RFC 6125 e 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, le patch sono state sottomesse da Tony Arcieri e Hiroshi Nakamura.