Schwere Sicherheitslücke in TLS-Heartbeat-Erweiterung von OpenSSL (CVE-2014-0160)

In der OpenSSL-Implementation der Heartbeat-Erweiterung (RFC6520) von TLS/DTLS (Protokolle zum Verschlüsseln der Transportschicht) wurde eine kritische Sicherheitslücke entdeckt. Es handelt sich hierbei um ein schwerwiegendes Sicherheitsproblem, dem die CVE-Kennung CVE-2014-0160 zugewiesen wurde.

Seine Ausnutzung kann das Auslesen des Serverspeichers durch den Client und umgekehrt ermöglichen; ein Angreifer kann auf diese Weise sensible Daten wie beispielsweise — aber nicht nur — die für die SSL-Verschlüsselung genutzen geheimen Schlüssel und Authentifizierungs-Tokens erhalten.

Weitere Informationen zu den Angriffen finden Sie auf heartbleed.com.

In wiefern ist Ruby betroffen?

Ruby ist dann betroffen, wenn es über die OpenSSL-C-Extension in der Standard Library statisch gegen eine verwundbare Version von OpenSSL gelinkt wurde.

Von diesem Angriff betroffen sind die OpenSSL-Versionen 1.0.1 bis 1.0.1f (eingeschlossen). Sie können wie folgt herausfinden, mit welcher Version der OpenSSL-Bibliothek Ruby gelinkt wurde:

ruby -v -ropenssl -rfiddle -e 'puts Fiddle::Function.new(Fiddle.dlopen(nil)["SSLeay_version"], [Fiddle::TYPE_INT], Fiddle::TYPE_VOIDP).call(0)'

Um herauszufinden, welche Version von OpenSSL momentan mit Ruby installiert ist, gehen Sie so vor:

ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'

Mit emboss’ Skript können Sie überprüfen, ob Ihre Client-Software oder ein Service verwundbar ist.

Lösungen

Zur Aktualisierung auf OpenSSL Version 1.0.1g oder jünger sollten Sie den Paketmanager Ihres Betriebssystems darauf hin überprüfen, ob ein aktuelles OpenSSL angeboten wird. Möglicherweise müssen Sie, um die Frage zu beantworten, ob die angebotene Version von OpenSSL unabhängig von der verfügbaren Versionsnummer gepatched wurde, Ihren Betriebssystem-Distributor kontaktieren.

Wenn eine Aktualisierung keine Möglichkeit darstellt, kompilieren Sie ein korrigiertes OpenSSL mit der Option -DOPENSSL_NO_HEARTBEATS.

Bei einem aktualisierten OpenSSL wird empfohlen, Ruby neu zu kompilieren um sicherzustellen, dass keine Links zu einer verwundbaren OpenSSL-Version mehr zurückbleiben.

Das bedeutet auch, dass alle Werkzeuge, mit denen Ruby gebaut werden kann, also etwa RVM oder ruby-build, ebenfalls aktualisiert werden müssen. Wenn Sie Ruby selbst kompilieren, benutzen Sie die --with-openssl-dir-Option, um gegen das aktualisierte OpenSSL-Installationsverzeichnis zu linken.

$ ./configure --with-openssl-dir=/path/to/openssl
$ make
$ make install

Nachdem Sie OpenSSL und Ruby aktualisiert haben, ist es erforderlich, alle Programme, die noch die verwundbare Version benutzen, neu zu starten.

Zahlreiche Betriebssystemdistributionen bieten bereits korrigierte Versionen und neu gebaute Pakete für die von diesem Angriff betroffenen Bibliotheken an (oder werden es in naher Zukunft tun). Es ist daher für die Aufrechterhaltung Ihrer Sicherheit unerlässlich, Ihren Betriebssystem-Distributor im Auge zu behalten.