Open Source im professionellen Einsatz

OpenSSL: Zahlreiche Schwachstellen gefunden und korrigiert

Anfang Januar hat ein längeres offizielles Advisory auf mehrere Schwachstellen in OpenSSL hingewiesen. Dabei handelt es sich um verschiedene Sicherheitslücken, die im Dezember letzten Jahres und Januar bekannt wurden. Anfällig für diese gemeldeten Schwachstellen sind OpenSSL-Versionen vor 0.9.8s sowie 1.x-Versionen vor 1.0.0f, für die Patches bereitgestellt werden.

DTLS Klartext-Attacke (CVE-2011-4108)

Ein von von Nadhem Alfardan und Kenny Paterson (Universität London) entdecktes Krypto-Sicherheitsleck erlaubt Klartext-Attacken gegen Datagram Transport Layer Security (DTLS). Diese Schwachstelle ist eine Erweiterung der von Serge Vaudenay vorgestellten Padding Oracle Krypto-Attacke auf Cipher-Block-Chaining (CBC) Verschlüsselungen. Die ursprüngliche Padding Oracle Attacke wurde 2002 vorgestellt und wurde in jüngster Vergangenheit erfolgreich gegen verschlüsselte HTTP-Cookies in verschiedenen Web Application Frameworks angewendet (beispielsweise ASP.NET und Ruby on Rails). Sie beruht darauf, dass ein Angreifer herausfinden kann, ob das Padding einer verschlüsselten Nachricht korrekt ist. Wie Vaudenay demonstrierte, ist CBC anfällig für eine solche Attacke. Bei CBC wird ein Nachrichtenblock vor dem Verschlüsseln mit dem vorhergehenden Chiffratblock via XOR verknüpft, wobei für den ersten Block ein Initialisierungsvektor verwendet wird. Durch die nun vorgestellte OpenSSL-Attacke ist ein Angreifer in der Lage, an den Klartext der verschlüsselt übertragenen Daten zu gelangen. Dazu nutzt er Zeit-Unterschiede beim Decryption-Prozess aus.

Double-free in Policy Checks (CVE-2011-4109)

Einen weniger komplexen Fehler hat Ben Laurie gefunden. Ist X509_V_FLAG_POLICY_CHECK in OpenSSL 0.9.8 aktiviert, so kann ein doppelter "free()"-Aufruf im Code auftreten, falls ein Policy-Check fehlschlägt. Dies kann ein Angreifer für Denial-of-Service-Attacken ausnutzen, um Server-Prozesse zum Absturz zu bringen. Die verantwortlichen Programmierfehler befinden sich in den Quelltextdateien "openssl/crypto/x509v3/pcy_map.c" und "openssl/crypto/x509v3/pcy_tree.c-Dateien", wobei der doppelte "free()"-Aufruf via "ASN1_OBJECT_free()" in der Funktion "policy_map_free()" ausgelöst wird.

Nicht-Initialisiertes SSL-3.0-Padding (CVE-2011-4576)

Eine weitere Sicherheitslücke bei der Initialisierung von SSL hat zur Folge, dass ein SSL-Benutzer unter Umständen unbewusst sensitive Daten im Client-Speicher an seinen Kommunikationspartner sendet. Das Problem besteht darin, dass OpenSSL vor Version 1.0.0f und 0.9.8s allozierten Speicher, der für das Padding in SSL-Records verwendet wird, nicht initialisiert. Das heißt, dieser Speicher ist zwar korrekt für OpenSSL alloziert, enthält aber möglicherweise Daten des zuvor freigegebenen Speichers auf dem Client-Rechner. Dabei handelt es sich jedoch nur um 15 Bytes Speicher, so dass die Wahrscheinlichkeit recht gering ist, dass signifikant sensitive Daten übertragen werden.

Fehler beim Verarbeiten von RFC-3779-Daten (CVE-2011-4577)

Ein weiteres Problem beim Verarbeiten von RFC-3779-Daten (X.509 Extensions for IP Addresses and AS Identifiers) kann dazu führen, dass ein entfernter Angreifer Denial-of-Service-Attacken ausführen kann. Genauer gesagt kann er das Fehlschlagen einer Assertion im Server-Code provozieren. Dazu muss er ein geschickt konstruiertes X.509-Zertifikat mit Erweiterungsdaten an sein Opfer schicken. Das Risiko hierfür ist allerdings gering, da die RFC-3779-Unterstützung in OpenSSL standardmäßig nicht aktiviert ist. Lediglich Systeme mit "enable-rfc3779" sind anfällig.

Fehler in SGC Restart (CVE-2011-4619)

Adam Langley hat in der Unterstützung für Handshake-Restarts für Server Gated Cryptograpy (SGC) eine weitere Schwachstelle entdeckt. Dadurch kann ein entfernter Angreifer ebenfalls Denial-of-Service-Attacken auslösen. Der Programmierfehler befindet sich in der Datei "openssl/ssl/s3_srvr.c", wo es möglich ist, mehrere Restarts per Negotiations durchzuführen. Damit kann der Angreifer den Code in eine Endlosschleife bringen, was ihn unbrauchbar macht.

Fehler beim Verarbeiten von GOST-Parametern (CVE-2012-0027)

Auch im Code zum Verarbeiten von GOST-Parametern findet sich ein Fehler. Hier kann ein Angreifer mit Hilfe spezieller TLS-Client-GOST-Parameter Denial-of-Service-Attacken gegen Server ausführen. Der Programmierfehler tritt in der Datei "openssl/engines/ccgost/gost2001_keyx.c" beziehungsweise "openssl/engines/ccgost/gost94_keyx.c" auf. Dort wird die Rückgabe von

param = get_encryption_params(gkt->key_agreement_info->cipher);

nicht auf den Fehlerfall kontrolliert, wodurch ungültige Parameter nicht abgefangen werden. Das Patch fügt hier einfach eine Fehlerbehandlung hinzu:

if(!param){
  goto err;
}
comments powered by Disqus

Ausgabe 06/2014

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.

Insecurity Bulletin

Insecurity Bulletin

Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...

Linux-Magazin auf Facebook