Umgehung von Hostname-Check im SSL-Client (CVE-2013-4073)
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)
Aktuelle Neuigkeiten
Ruby 3.4.2 veröffentlicht
Ruby 3.4.2 wurde veröffentlicht.
Geschrieben von k0kubun am 14.2.2025
Ruby 3.2.7 veröffentlicht
Ruby 3.2.7 wurde veröffentlicht.
Geschrieben von nagachika am 4.2.2025
Ruby 3.3.7 veröffentlicht
Ruby 3.3.7 wurde veröffentlicht.
Geschrieben von k0kubun am 15.1.2025
Ruby 3.4.0 veröffentlicht
Wir freuen uns, die Veröffentlichung von Ruby 3.4.0 bekannt zu geben. Ruby 3.4 führt den it-Blockparameter ein, ändert Prism zum Standardparser, bietet Happy Eyeballs Version...
Geschrieben von naruse am 25.12.2024