Frage Wie patchen Sie den Heartbleed-Fehler (CVE-2014-0160) in OpenSSL?


Ab heute, a Fehler in OpenSSL hat Auswirkungen auf Versionen gefunden 1.0.1 durch 1.0.1f (inklusive) und 1.0.2-beta.

Seit Ubuntu 12.04 sind wir alle anfällig für diesen Fehler. Um diese Sicherheitsanfälligkeit zu beheben, sollten betroffene Benutzer auf OpenSSL aktualisieren 1.0.1g.

Wie kann jeder betroffene Benutzer dieses Update anwenden? jetzt?


152
2018-04-07 22:17


Ursprung


Haben Sie eine betroffene Version von openssl? - Braiam
Ich habe die gepatchte Version 1.0.1-4ubuntu5.12 und ich habe den Apache-Dienst aber neu gestartet filippo.io/Heartbleed Testen auf meiner Website sagt immer noch, ich bin verletzlich Jede Idee, warum?
@Mat Ich weiß nicht, was diese Website testet, aber vielleicht erkennt es, dass Sie einen alten Schlüssel verwenden. Da der Schlüssel möglicherweise ausgelaufen ist, müssen Sie ihn neu generieren. - Gilles
Sie wollen OpenSSL wirklich nicht auf neue Großversionen aktualisieren, das ist ein unglaublicher Schmerz. Viel einfacher ist es, das aktualisierte Paket zu installieren, das das Problem behebt: ubuntu.com/usn/usn-2165-1 - sarnold
Haben Sie nach dem Upgrade Ihre Dienste neu gestartet? - Axel


Antworten:


Sicherheitsupdates sind für 12.04, 12.10, 13.10 verfügbar und 14.04 sehen Ubuntu Sicherheitshinweis USN-2165-1.

Zuerst müssen Sie die verfügbaren Sicherheitsupdates anwenden, zum Beispiel indem Sie ausführen

sudo apt-get update
sudo apt-get upgrade

von der Befehlszeile aus.

Vergiss nicht Neustart die Dienste (HTTP, SMTP usw.), die die betroffene OpenSSL-Version verwenden, andernfalls sind Sie immer noch anfällig. Siehe auch Heartbleed: Was ist es und welche Möglichkeiten gibt es, es zu mildern? auf Serverfault.com.

Der folgende Befehl zeigt (nach einem Upgrade) alle Dienste an, die neu gestartet werden müssen:

sudo find /proc -maxdepth 2 -name maps -exec grep -HE '/libssl\.so.* \(deleted\)' {} \; | cut -d/ -f3 | sort -u | xargs --no-run-if-empty ps uwwp

Danach, du brauchst Generiere alle Server-SSL-Schlüssel neuÜberprüfen Sie anschließend, ob Ihre Schlüssel möglicherweise ausgelaufen sind. In diesem Fall haben Angreifer möglicherweise vertrauliche Informationen von Ihren Servern abgerufen.


141
2018-04-07 22:46



Nicht sicher, dass dies auf Ubuntu 12.04.4 LTS funktioniert. Nach dem vollständigen Update openssl version gibt OpenSSL 1.0.1 14 Mar 2012. Das ist nicht die gepatchte Version, oder? Oder irre ich es? - Paul Cantrell
Was macht man mit Ubuntu 13.04? Kein Upgrade von openssl verfügbar :-( - Frodik
Auf Ubuntu 12.04 zeigt sogar die feste OpenSSL-Version an 1.0.1 14 Mar 2012. Lesen Crimis Antwort um herauszufinden, ob Ihre Installation das Update enthält. - dan
Danke, @dan! Resummarizing @ Crimis Antwort hier: Wenn du rennst dpkg -l | grep ' openssl ' und du bekommst 1.0.1-4ubuntu5.12 dann bist du gut zu gehen. - Paul Cantrell
Patching und Neustart ist nicht genug. Sie müssen Schlüssel neu generieren und prüfen, ob Ihre Schlüssel und andere vertrauliche Daten durchgesickert sind. Siehe z.B. Bedeutet Heartbleed neue Zertifikate für jeden SSL-Server? - Gilles


Der Fehler ist bekannt als Heartbleed.

Bin ich verletzlich?

Im Allgemeinen sind Sie betroffen, wenn Sie einen Server ausführen, für den Sie irgendwann einen SSL-Schlüssel generiert haben. Die meisten Endnutzer sind nicht (direkt) betroffen; zumindest verwenden Firefox und Chrome kein OpenSSL. SSH ist nicht betroffen. Die Verteilung von Ubuntu-Paketen ist nicht betroffen (sie beruht auf GPG-Signaturen).

Sie sind verwundbar, wenn Sie einen Server mit OpenSSL-Versionen 1.0-1.0.1f ausführen (mit Ausnahme der Versionen, die seit der Entdeckung des Fehlers gepatcht wurden). Die betroffenen Ubuntu-Versionen sind 11,10 bis 14,04 vertrauenswürdige Pre-Releases. Es ist ein Implementierungsfehler, kein Fehler im Protokoll, daher sind nur Programme betroffen, die die OpenSSL-Bibliothek verwenden. Wenn Sie ein Programm mit der alten 0.9.x-Version von OpenSSL verknüpft haben, ist es nicht betroffen. Betroffen sind nur Programme, die die OpenSSL-Bibliothek zur Implementierung des SSL-Protokolls verwenden. Programme, die OpenSSL für andere Dinge verwenden, sind nicht betroffen.

Wenn Sie einen anfälligen Server mit dem Internet verbunden haben, betrachten Sie ihn als kompromittiert, sofern Ihre Protokolle seit der Ankündigung am 2014-04-07 keine Verbindung mehr aufweisen. (Dies setzt voraus, dass die Sicherheitsanfälligkeit nicht vor ihrer Ankündigung ausgenutzt wurde.) Wenn Ihr Server nur intern verfügbar gemacht wurde, hängt es von den anderen Sicherheitsmaßnahmen ab, ob Sie die Schlüssel ändern müssen.

Was ist der Einfluss?

Der Fehler erlaubt jeder Kunde Wer kann sich mit Ihrem SSL-Server verbinden, um ungefähr 64 KB Speicher vom Server abzurufen? Der Client muss in keiner Weise authentifiziert werden. Durch Wiederholen des Angriffs kann der Client verschiedene Teile des Speichers in aufeinanderfolgenden Versuchen ablegen.

Eine der kritischen Daten, die der Angreifer möglicherweise abrufen kann, ist der private SSL-Schlüssel des Servers. Mit diesen Daten kann der Angreifer Ihren Server imitieren.

Wie kann ich auf einem Server wiederherstellen?

  1. Nehmen Sie alle betroffenen Server offline. Solange sie ausgeführt werden, können potenziell kritische Daten verloren gehen.

  2. Aktualisieren Sie die libssl1.0.0 Paketund stellen Sie sicher, dass alle betroffenen Server neu gestartet werden.
    Mit `` grep 'libssl können Sie prüfen, ob betroffene Prozesse noch laufen.(gelöscht) '/ proc // Karten`

  3. Generiere neue Schlüssel. Dies ist notwendig, da der Fehler es einem Angreifer ermöglicht haben könnte, den alten privaten Schlüssel zu erhalten. Folgen Sie dem gleichen Verfahren, das Sie ursprünglich verwendet haben.

    • Wenn Sie Zertifikate verwenden, die von einer Zertifizierungsstelle signiert wurden, senden Sie Ihre neuen öffentlichen Schlüssel an Ihre Zertifizierungsstelle. Wenn Sie das neue Zertifikat erhalten haben, installieren Sie es auf Ihrem Server.
    • Wenn Sie selbstsignierte Zertifikate verwenden, installieren Sie sie auf Ihrem Server.
    • So oder so, verschieben Sie die alten Schlüssel und Zertifikate aus dem Weg (aber löschen Sie sie nicht, nur sicherstellen, dass sie nicht mehr verwendet werden).
  4. Jetzt, wo Sie neue kompromisslose Schlüssel haben, können Sie Bring deinen Server wieder online.

  5. Widerrufen die alten Zertifikate.

  6. Schadensfeststellung: Möglicherweise sind Daten, die sich im Speicher eines Prozesses befanden, der SSL-Verbindungen bedient, möglicherweise durchgesickert. Dies kann Benutzerkennwörter und andere vertrauliche Daten enthalten. Sie müssen herausfinden, was diese Daten waren.

    • Wenn Sie einen Dienst ausführen, der die Kennwortauthentifizierung ermöglicht, sollten die Kennwörter von Benutzern, die seit der Ankündigung der Sicherheitsanfälligkeit eine Verbindung hergestellt haben, als gefährdet gelten. (Ein wenig vorher, weil das Passwort für einige Zeit im Speicher ungenutzt geblieben ist.) Überprüfen Sie Ihre Protokolle und ändern Sie die Kennwörter aller betroffenen Benutzer.
    • Außerdem werden alle Sitzungscookies ungültig, da sie möglicherweise kompromittiert wurden.
    • Clientzertifikate werden nicht kompromittiert.
    • Alle Daten, die kurz vor der Sicherheitsanfälligkeit ausgetauscht wurden, sind möglicherweise im Speicher des Servers verblieben und daher möglicherweise an einen Angreifer weitergegeben worden.
    • Wenn jemand eine alte SSL-Verbindung aufgezeichnet und die Schlüssel Ihres Servers abgerufen hat, können diese ihr Transkript jetzt entschlüsseln. (Es sei denn PFS wurde sichergestellt - wenn Sie nicht wissen, war es nicht.)

Wie kann ich auf einem Client wiederherstellen?

Es gibt nur wenige Situationen, in denen Clientanwendungen betroffen sind. Das Problem auf der Serverseite ist, dass jeder sich mit einem Server verbinden und den Fehler ausnutzen kann. Um einen Kunden auszunutzen, müssen drei Bedingungen erfüllt sein:

  • Das Client-Programm verwendete eine fehlerhafte Version der OpenSSL-Bibliothek, um das SSL-Protokoll zu implementieren.
  • Der Client ist mit einem böswilligen Server verbunden. (Wenn Sie beispielsweise eine Verbindung zu einem E-Mail-Anbieter hergestellt haben, ist dies kein Problem.) Dies musste geschehen, nachdem der Serverbesitzer auf die Sicherheitsanfälligkeit aufmerksam wurde, vermutlich nach dem 2014-04-07.
  • Der Clientprozess hatte vertrauliche Daten im Arbeitsspeicher, die nicht mit dem Server geteilt wurden. (Also, wenn du gerade gelaufen bist wget um eine Datei herunterzuladen, gab es keine Daten zu verlieren.)

Wenn Sie dies zwischen dem 07.04.2014, dem Abend UTC, und dem Upgrade Ihrer OpenSSL-Bibliothek getan haben, berücksichtigen Sie, dass alle Daten, die sich im Speicher des Client-Prozesses befanden, kompromittiert werden.

Verweise


71
2018-04-08 10:02



Ich glaube nicht "Nur die Server-Seite von SSL / TLS-Verbindungen ist betroffen" ist wahr. openssl.org/news/secadv_20140407.txt sagt, es kann Geheimnisse von Client oder Server offenbaren. ubuntu.com/usn/usn-2165-1 stimmt zu. Die Wahrscheinlichkeit, dass Sie beim Herstellen einer Verbindung mit einem bösartigen Server Clientzertifikate verwenden, ist gering, aber es besteht die Möglichkeit. - armb
@armb Du machst einen guten Punkt. Es spielt keine Rolle, ob Clientzertifikate verwendet werden, der Datenverlust hängt nicht mit der Verwendung von Zertifikaten zusammen. Ich habe holte die Hilfe von Fachleuten ein. - Gilles
Client-Zertifikate sind der Fall, bei dem Sie private Schlüssel verlieren würden, aber ja, Passwörter, Berechtigungs-Cookies usw. könnten trotzdem undicht werden. Mit einem OpenSSL-basierten Client wie curl oder wget in typischer Verwendung, würden Sie jedoch keine Geheimnisse für andere Sites im Speicher haben, während Sie sich mit einem bösartigen Server verbinden. In diesem Fall wäre das einzige Leck, wenn Sie dem Client Geheimnisse geben würden vorwegnehmen, sie einer legitimen Site zu überlassen, und Heartbleed hat sie während des Handshakes durchgesickert, bevor die Zertifikatsüberprüfung zeigt, dass Sie nicht mit der richtigen Site verbunden sind. - armb
@Gilles Sie könnten an den Antworten interessiert sein Welche Kunden sind nachweislich anfällig für Heartbleed?. Ich habe es geschafft, "interessanten" Speicher auf nginx (Proxy-Modus), wget, Links und anderen zu gewinnen. - Lekensteyn
@ MuhamedHuseinbašić Das Paket openssl enthält Befehlszeilentools. Es wird nicht von Anwendungen verwendet, die die OpenSSL-Bibliothek verwenden, um das SSL-Protokoll (z. B. Apache) zu implementieren. Sie sollten jedoch nur die Sicherheitsupdates der Distribution anwenden. - Gilles


Um zu sehen, welche OpenSSL-Version auf Ubuntu installiert ist, führen Sie Folgendes aus:

dpkg -l | grep openssl

Wenn Sie die folgende Ausgabe der Version sehen, sollte Patch für CVE-2014-0160 enthalten sein.

ii  openssl      1.0.1-4ubuntu5.12      Secure Socket Layer (SSL)...

Anschauen https://launchpad.net/ubuntu/+source/openssl/1.0.1-4ubuntu5.12zeigt an, welche Art von Bugs behoben sind:

...
 SECURITY UPDATE: memory disclosure in TLS heartbeat extension
    - debian/patches/CVE-2014-0160.patch: use correct lengths in
      ssl/d1_both.c, ssl/t1_lib.c.
    - CVE-2014-0160
 -- Marc Deslauriers <email address hidden>   Mon, 07 Apr 2014 15:45:14 -0400
...

40
2018-04-08 06:40



Ich habe aktualisiert und Version 5.12 bekommen, aber dieses Tool sagt mir immer noch, dass ich verletzlich bin filippo.io/Heartbleed Gedanken? - toxaq
Ich habe unsere aktualisierten Server über diese Seite getestet und es hat mir gesagt, dass ich nicht betroffen bin. Haben Sie Ihr System neu gestartet oder sind Sie sicher, dass alle notwendigen Prozesse neu gestartet wurden? - crimi
Nach der Aktualisierung von OPENSSL musste ich nur noch den Apache-Dienst neu starten, aber anmutig hat nicht geholfen. Ich musste gehen und neu starten mit sudo service apache2 restart - Tom Hert
Ich habe gerade die Ursache meiner Schwachstelle gefunden: Ich hatte mod-spdy-beta installiert. Nach dem Entfernen und dem Neustart von Apache sind nun alle Tests grün. - Andreas Roth
Aktualisierung openssl repariert keine Anwendungen wie Apache, Nginx oder Postfix. Sie müssen aktualisieren libssl1.0.0 und starte sie wie in anderen Posts beschrieben. - tnj


Wenn dein apt-get-Repositories enthält keine vorkompilierten 1.0.1g OpenSSL Version, also einfach Quellen von der offiziellen Website herunterladen und kompilieren.

Unterhalb der einzelnen Befehlszeile zum Kompilieren und Installieren der letzten OpenSSL-Version.

curl https://www.openssl.org/source/openssl-1.0.1g.tar.gz | tar xz && cd openssl-1.0.1g && sudo ./config && sudo make && sudo make install

Ersetzen Sie die alte openssl-Binärdatei durch die neue über einen Symlink.

sudo ln -sf /usr/local/ssl/bin/openssl `which openssl`

Sie sind alle gut!

# openssl version should return
openssl version
OpenSSL 1.0.1g 7 Apr 2014

Vgl. Dies Blogeintrag.

NB: Wie in dem Blogpost angegeben, wird diese Problemumgehung "Nginx und Apache Server, die mit 1.0.1g OpenSSL-Quellen neu kompiliert werden müssen" nicht beheben.


17
2018-04-08 02:18



Wie üblich stellt Ubuntu die neue Upstream-Version nicht zur Verfügung, sondern patcht die Versionen für alle unterstützten Versionen, um die Änderungen minimal zu halten. - Florian Diesch
Hinweis: Stellen Sie sicher, dass Sie Ihren Server nach der Aktualisierung von OpenSSL neu starten. Apache und Nginx haben die neue lib aufgenommen und die Schwachstelle wurde geschlossen. - dAngelov
He, jetzt, wo ich mir die Zeit nehme, die Einzelheiten von diesem Posting bin ich noch entsetzter - einen Tarball von einem beliebigen Ort aus dem Internet herunterzuladen, auszupacken und Teile davon als root auszuführen ist einfach rücksichtsloses Verhalten. Es wäre etwas besser, wenn die Tarball-Signaturen heruntergeladen und überprüft würden, aber sicherzustellen, dass Sie die Signaturen validieren, die mit dem richtigen Schlüssel signiert wurden, ist selbst eine schwierige Frage. Distributionen haben sich bereits darum bemüht, die sichere Herkunft von Tarballs und Patches sicherzustellen. Vielen Dank. - sarnold
Es könnte eine gute Idee sein, von der Quelle JETZT zu kompilieren und später eine neuere Version von apt zu installieren, auf diese Weise ist Ihre Sicherheit sicherer als ohne auf älteren Versionen von Ubuntu zu erwarten, jedenfalls nur meine zwei Cent - nwgat
@sarnold openssl.org scheint nicht wie ein zufälliger Ort, um die Quelle für openssl herunterzuladen. Canonical sollte dies überflüssig machen, aber openssl.org sollte der autoritative Upstream sein, von dem aus gearbeitet wird. - Rustavore


Für diejenigen, die kein serverweites Paket-Upgrade durchführen möchten. Ich lese heute einige dieser Guides apt-get upgrade openssl === apt-get upgrade Dadurch werden alle von Ihrem Computer benötigten Sicherheitsupdates angewendet. Wunderbar, es sei denn, Sie lehnen sich explizit an eine alte Paketversion an.

Dies ist die minimale Aktion, die für Ubuntu 12.04 LTS mit Apache 2 erforderlich ist:

  • Gehe zu diese Adresse und beweise, dass du die Schwachstelle hast. Sie sollten die DIREKTE EXTERNE ADRESSE IHRES WEBSERVERS verwenden. Wenn Sie einen Loadbalancer (z. B. ELB) verwenden, kontaktieren Sie möglicherweise Ihren Webserver nicht direkt.

  • Führen Sie den folgenden 1 Liner aus, um die Pakete zu aktualisieren und neu zu starten. Ja, ich habe alle Guides gesehen, die sagen, dass du einen Zeitstempel später als am 4. April 2014 haben solltest, das scheint mir nicht der Fall zu sein.

    apt-get update && apt-get installieren openssl libssl1.0.0 && /etc/init.d/apache2 neustarten

  • Stellen Sie sicher, dass Sie geeignete Paketversionen installiert haben, und überprüfen Sie Ihren Webserver erneut auf die Sicherheitsanfälligkeit.

Die Schlüsselpakete sind wie folgt, ich habe diese Informationen mit dem unten stehenden Befehl bestimmt und dann die Datei gelöscht (Sie müssen nicht viel über den Zustand meiner Maschinen wissen).

$ dpkg -l | grep ssl

ii  libssl-dev                       1.0.1-4ubuntu5.12          SSL development libraries, header files and documentation
ii  libssl1.0.0                      1.0.1-4ubuntu5.12          SSL shared libraries
ii  openssl                          1.0.1-4ubuntu5.12          Secure Socket Layer (SSL)* binary and related cryptographic tools

1.0.1-4ubuntu5.12 sollte die Sicherheitsanfälligkeit NICHT enthalten. Stellen Sie sicher, dass dies der Fall ist, indem Sie erneut auf die unten stehende Website gehen und Ihren Webserver testen.

http://filippo.io/Heartbleed/


12
2018-04-08 21:56



Die Verwendung einer externen Website, um eine Sicherheitslücke auf einem Server nachzuweisen, scheint für mich der falsche Ansatz zu sein. - Rinzwind
Externe Schwachstellen-Testskripte werden heutzutage immer alltäglicher. Es macht genau das, was ein internes Skript macht, die Verbindung wird gerade von einem externen Webserver initiiert. Sie können Websites wie WhiteHatSecurity.com für ein Beispiel eines Programms suchen, das alle Verbindungen remote initiiert. Es gibt Fälle, in denen dies nicht möglich wäre, z. B. Netzwerk-Schwachstellen-Tests, aber zum Testen eines vorwärts gerichteten Webservers (der im Allgemeinen ein SSL-Server sein wird) ist dies fast ideal. - Adrian
Warum sollte das Paket installiert werden, wenn es aktualisiert wird? - Braiam
apt-get install openssl libssl1.0.0 habe es für mich getan. Laufen openssl version -a zeigt jetzt: built on: Mon Apr 7 20:33:29 UTC 2014 - topher
"Externe Schwachstellen-Test-Skripte werden heutzutage immer alltäglicher." Das eröffnet die Möglichkeit, dass diese externe Seite mein System missbraucht: Alles, was sie wissen müssen, scheitert und hackt mein System, bevor ich es patche. Nein, das ist nicht der richtige Weg. (und ja ich host meine eigenen Seiten mit Apache und openssl). - Rinzwind


Ich habe hier viele Kommentatoren gesehen, die dringend Hilfe brauchen. Sie befolgen die Anweisungen und aktualisieren und starten neu und sind weiterhin anfällig, wenn sie einige der Test-Websites verwenden.

Sie müssen sicherstellen, dass Sie keine Pakete wie zB libssl haben.

:~$ sudo apt-get upgrade -V
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
  libssl-dev (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  libssl1.0.0 (1.0.1-4ubuntu5.10 => 1.0.1-4ubuntu5.12)
  linux-image-virtual (3.2.0.31.34 => 3.2.0.60.71)
  linux-virtual (3.2.0.31.34 => 3.2.0.60.71)
0 upgraded, 0 newly installed, 0 to remove and 4 not upgraded.

Um diese zu verbessern apt-mark unhold libssl1.0.0 (beispielsweise). Dann aktualisiere: apt-get upgrade -V. Starten Sie dann betroffene Dienste neu.


11
2018-04-08 17:51