Es wurde eine Sicherheitslücke in Rubys SSL-Client gefunden, die es
einem Man-in-the-middle-Angreifer ermöglicht, SSL-Server trotz eines
validen und von einer vertrauenswürdigen Certificate Authority
ausgestellten Zertifikats zu fälschen.

Dieser Sicherheitslücke wurde die CVE-Kennung CVE-2013-4073
zugewiesen.

## Zusammenfassung

Rubys SSL-Client implementiert eine Hostnamen-Überprüfung, führt diese
allerdings nicht korrekt durch, wenn der Hostname im Zertifikat
NUL-Bytes enthält.

## Details

`OpenSSL::SSL.verify_certificate_identity` implementiert den
RFC2818-Server-Identitätscheck für Rubys SSL-Client. Dieser
Algorithmus arbeitet momentan allerdings nicht korrekt, wenn die
Hostnamen in der X509-Erweiterung _subjectAltName_ NUL-Bytes
enthalten.

Der vorhandene Code in `lib/openssl/ssl.rb` nutzt
`OpenSSL::X509::Extension#value`, um die Identität aus dem
_subjectAltName_ zu extrahieren. `Extension#value` wiederum hängt von
der OpenSSL-Funktion `X509V3_EXT_print()` ab und nutzt für den
_dNSName_ des _subjectAltName_ die Funktion `sprintf()`, die
bekanntermaßen unsicher im Bezug auf NUL-Bytes ist. Ergebnis ist, dass
`Extension#value` `www.ruby-lang.org` zurückgibt, wenn der
_subjectAltName_ auf `www.ruby-lang.org\0.example.com`
lautet. `OpenSSL::SSL.verify_certificate_identity` erkennt daraufhin
das Zertifikat fälschlicherweise für `www.ruby-lang.org` an.

Erlaubt nun eine CA, der der SSL-Client vertraut, NUL-Bytes im
_subjectAltName_, so kann ein Angreifer von der CA ein Zertifikat für
`www.ruby-lang.org\0.example.com` beantragen und damit einen
Man-in-the-middle-Angriff auf Rubys SSL-Client für `www.ruby-lang.org`
durchführen.

## Betroffene Versionen

 * Alle 1.8er-Versionen vor 1.8.7 patchlevel 374
 * Alle 1.9er-Versionen vor 1.9.3 patchlevel 448
 * Alle 2.0er-Versionen vor 2.0.0 patchlevel 247
 * Alle Trunk-Versionen vor Revision 41671

## Lösung

Wir empfehlen allen Nutzern, auf Ruby 2.0.0-p247, 1.9.3-p448 oder
1.8.7-p374 zu aktualisieren.

## Danksagung

Diese Sicherheitslücke wurde von William (B.J.) Snow Orvis entdeckt
und mit security@ruby-lang.org über David Thiel von iSEC Partners
koordiniert.

## Historie

 * Erstmals veröffentlicht am 2013-06-27 11:00:00 (UTC)
