Geschrieben von nahi am 27.6.2013
Übersetzt von Marvin Gülker
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)