OpenSSL lässt sich gefälschte Zertifikate unterschieben [Update]
Ein Update auf Version 0.9.8j behebt das Problem. Auch der Hersteller des Nameservers BIND hat ein Update veröffentlicht, um Spoofing in DNSSEC-gesicherten Zonen zu verhindern.
- Daniel Bachfeld
Ein Fehler in der weit verbreiteten SSL/TLS-Bibliothek OpenSSL lässt sich von Angreifern ausnutzen, um Anwendern vorzugaukeln, dass eine gefälschte Signatur in einem Zertifikat gültig sei. Damit wäre es unter anderem möglich, mit einer Man-in-the-Middle-Attacke eine SSL-Verbindung aufzubrechen, ohne das ein auf OpenSSL aufbauender Client eine Warnung erhält. Dadurch ließe sich die Kommunikation belauschen.
Das Problem basiert auf der fehlerhaften Überprüfung von DSA- und ECDSA-Schlüsseln. Der Digital Signature Algorithm (DSA) ist ein reines Signaturverfahren und beruht auf diskreten Logarithmen. ECDSA ist eine Variante auf Basis von Elliptischen Kurven. Beide Algorithmen lassen sich alternativ zum RSA-System einsetzen.
Laut Bericht wird der von der Funktion EVP_VerifyFinal zurückgegebene Wert von anderen OpenSSL-Funktionen nicht korrekt ausgewertet. Gleiches soll nach Angaben des oCERT auch für die Funktionen DSA_verify und DSA_do_verify gelten. Bei Zertifikaten mit RSA-Schlüsseln tritt das Problem nicht auf. Zudem ist der Fehler auch nicht in der Validierung von Client-Zertifikaten auf der Server-Seite enthalten, egal welcher Schlüssel verwendet wird. Betroffen sind alle OpenSSL-Versionen bis einschließlich 0.9.8i. In Version 0.9.8j ist der Fehler behoben.
Der Fehler betrifft laut Bericht des oCERT auch den Nameserver BIND, den NTP-Client von ntp.org sowie Suns GridEngine. Der Hersteller von BIND hat bereits ein Update herausgebracht, ohne das sogar in DNSSEC-gesicherten Infrastrukturen das Einschleusen gefälschter Namensanfragen möglich wäre. Als Workaround schlägt der Hersteller ISC vor, die Algorithmen DSA und ECDSA in der Konfiguration zu deaktivieren.
[Update]Nach Angaben von Sun sind nur GridEngines bis Version 5.3 betroffen. Die Nachfolgeversionen ab SGE 6.0 sollen der Fehler nicht mehr enthalten. [/Update]
Siehe dazu auch:
- Incorrect checks for malformed signatures, Fehlerbericht von OpenSSL
- Multiple OpenSSL signature verification API misuse, Fehlerbericht von oCERT
- BIND Security Vulnerability - EVP_VerifyFinal() and DSA_do_verify() return checks 7Jan2009, Bericht des ISC
(dab)