So schützen Sie Ihren Server vor den Sicherheitsanfälligkeiten "Meltdown" und "Spectre"

Was sind Meltdown und Spectre?

Am 4. Januar 2018 wurden mehrere Schwachstellen im Design moderner CPUs aufgedeckt. Diese Schwachstellen mit den Namen * Meltdown * und * Spectre * nutzen bestimmte Optimierungen der Prozessorleistung und ermöglichen es Angreifern, Anwendungen dazu zu zwingen, den Inhalt von System- und Anwendungsspeicher freizulegen, wenn sie ordnungsgemäß manipuliert werden. Diese Angriffe funktionieren, weil das normale Berechtigungsprüfungsverhalten innerhalb des Prozessors durch das Zusammenspiel von Funktionen wie spekulativer Ausführung, Verzweigungsvorhersage, Ausführung außerhalb der Reihenfolge und Zwischenspeicherung unterlaufen wird.

Meltdown wurde in CVE-2017-5754 veröffentlicht. Spectre wurde in CVE-2017-5753 und https://nvd.nist.gov/vuln/detail/CVE-2017-5715 veröffentlicht [CVE-2017-5715].

Weitere Informationen finden Sie in den folgenden Abschnitten unter: # Wie funktioniert Meltdown? [Wie funktioniert Meltdown?] Und unter: # Wie funktioniert Specter? [Wie funktioniert Specter?].

Bin ich von Meltdown und Spectre betroffen?

Meltdown und Spectre betreffen die meisten modernen Prozessoren. Die Prozessoroptimierungen, die in diesen Sicherheitsanfälligkeiten verwendet werden, sind ein zentrales Konstruktionsmerkmal der meisten CPUs. Dies bedeutet, dass die meisten Systeme anfällig sind, bis sie speziell gepatcht werden. Dies umfasst Desktop-Computer, Server und Recheninstanzen, die in Cloud-Umgebungen ausgeführt werden.

Patches zum Schutz vor Meltdown werden von Anbietern von Betriebssystemen veröffentlicht. Auch wenn Updates für Spectre veröffentlicht werden, handelt es sich um eine ganze Klasse von Sicherheitsanfälligkeiten, sodass wahrscheinlich eine umfangreichere laufende Korrektur erforderlich ist.

In Cloud- und virtualisierten Umgebungen müssen Anbieter die zugrunde liegende Infrastruktur aktualisieren, um ihre Gäste zu schützen. Benutzer müssen ihre Server aktualisieren, um die Auswirkungen auf Gastbetriebssysteme zu verringern.

Wie kann ich mich schützen?

Ein vollständiger Schutz vor dieser Sicherheitsanfälligkeitsklasse erfordert wahrscheinlich Änderungen im CPU-Design. + In der Zwischenzeit können Softwareupdates Abhilfe gegen Exploits schaffen, indem einige der optimierten Verhaltensweisen deaktiviert oder umgangen werden, die zu diesen Sicherheitsanfälligkeiten führen.

Da sich diese Patches auf die Optimierungsroutinen im Prozessor auswirken, können Schadensbegrenzungs-Patches die Leistung Ihres Servers beeinträchtigen. Das Ausmaß der Verlangsamung hängt stark von der Art der ausgeführten Arbeit ab, wobei E / A-intensive Prozesse den größten Einfluss haben.

Aktueller Status des Mitigation Patch

Zum Zeitpunkt des Schreibens (9. Januar 2018) haben Linux-Distributionen begonnen, Patches zu verteilen, es sind jedoch noch keine Distributionen vollständig gepatcht.

Zu den Distributionen, die Kernel-Updates mit * partieller Schadensbegrenzung * (für Meltdown * UND * Variante 1 von Spectre gepatcht) veröffentlicht haben, gehören:

  • CentOS 7: Kernel 3.10.0-693.11.6

  • CentOS 6: Kernel 2.6.32-696.18.7

Zu den Distributionen, die Kernel-Updates mit * partieller Schadensbegrenzung * (für Meltdown gepatcht) veröffentlicht haben, gehören:

  • Fedora 27: Kernel 4.14.11-300

  • Fedora 26: Kernel 4.14.11-200

  • Ubuntu 17.10: Kernel 4.13.0-25-generic

  • Ubuntu 16.04: Kernel 4.4.0-109-generic

  • Ubuntu 14.04: Kernel 3.13.0-139-generic

  • Debian 9: Kernel 4.9.0-5-amd64

  • Debian 8: Kernel 3.16.0-5-amd64

  • Debian 7: Kernel 3.2.0-5-amd64

  • Fedora 27 Atomic: Kernel 4.14.11-300.fc27.x86_64

  • CoreOS: Kernel 4.14.11-Coreos

Wenn Ihr Kernel mindestens auf die oben angegebene Version aktualisiert wurde, wurden einige Updates angewendet.

Zu den Betriebssystemen, auf denen * noch keine Kernel mit Schadensbegrenzung * veröffentlicht wurden, gehören:

  • FreeBSD 11.x.

  • FreeBSD 10.x

Ubuntu 17.04, das am 13. Januar 2018 sein Lebensende erreicht, * erhält keine Patches *. Benutzern wird dringend empfohlen, zu aktualisieren oder zu migrieren.

Aufgrund des Schweregrads dieser Sicherheitsanfälligkeit empfehlen wir, Updates anzuwenden, sobald sie verfügbar sind, anstatt auf einen vollständigen Patch-Satz zu warten. Möglicherweise müssen Sie den Kernel in den kommenden Tagen und Wochen mehrmals aktualisieren und neu starten.

Wie wende ich die Updates an?

Um Ihre Server zu aktualisieren, müssen Sie Ihre Systemsoftware aktualisieren, sobald Patches für Ihre Distribution verfügbar sind. Sie können ein Update durchführen, indem Sie Ihren regulären Paket-Manager ausführen, um die neueste Kernel-Version herunterzuladen, und dann Ihren Server neu starten, um auf den gepatchten Code umzuschalten.

Für * Ubuntu * - und * Debian * -Server können Sie Ihre Systemsoftware aktualisieren, indem Sie Ihren lokalen Paketindex aktualisieren und anschließend Ihre Systemsoftware aktualisieren:

sudo apt-get update
sudo apt-get dist-upgrade

Für * CentOS * -Server können Sie aktualisierte Software herunterladen und installieren, indem Sie Folgendes eingeben:

sudo yum update

Verwenden Sie für * Fedora * -Server stattdessen das Tool + dnf +:

sudo dnf update

Unabhängig vom Betriebssystem starten Sie Ihren Server nach dem Anwenden der Updates neu, um auf den neuen Kernel zu wechseln:

sudo reboot

Sobald der Server wieder online ist, melden Sie sich an und überprüfen Sie den aktiven Kernel anhand der obigen Liste, um sicherzustellen, dass Ihr Kernel aktualisiert wurde. Suchen Sie regelmäßig nach neuen Updates, um sicherzustellen, dass Sie weitere Patches erhalten, sobald diese verfügbar sind.

Zusätzlicher Kontext

Die Schwachstellenfamilie Meltdown and Spectre nutzt leistungssteigernde Funktionen in modernen Prozessoren. Eine Kombination von Prozessorfunktionen wie spekulative Ausführung, Berechtigungsprüfung, Ausführung außerhalb der Reihenfolge und CPU-Zwischenspeicherung ermöglicht den Lesezugriff auf Speicherorte, die außerhalb der Grenzen liegen sollten. Das Ergebnis ist, dass nicht privilegierte Programme dazu gezwungen werden können, vertrauliche Daten aus ihrem Speicher freizugeben oder über den Kernel oder andere Anwendungen auf privilegierten Speicher zuzugreifen.

Wie funktioniert Meltdown?

Die Meltdown-Sicherheitsanfälligkeit führt dazu, dass ein Prozessor dazu verleitet wird, einen Speicherort außerhalb der Grenzen zu lesen, indem Fehler in einer als spekulative Ausführung bezeichneten CPU-Optimierung ausgenutzt werden. Die allgemeine Idee funktioniert folgendermaßen:

  • Es wird ein ungültiger Speicherort angefordert.

  • Eine zweite Anforderung wird gemacht, um einen gültigen Speicherort bedingt zu lesen, wenn die erste Anforderung einen bestimmten Wert enthielt.

  • Bei der spekulativen Ausführung schließt der Prozessor die Hintergrundarbeit für beide Anforderungen ab, bevor er überprüft, ob die ursprüngliche Anforderung ungültig ist. Sobald der Prozessor versteht, dass die Anforderungen einen Speicher außerhalb der Grenzen beinhalten, lehnt er beide Anforderungen korrekt ab. Obwohl die Ergebnisse nicht vom Prozessor zurückgegeben werden, nachdem der Berechtigungsprüfcode den Speicherzugriff als ungültig identifiziert hat, verbleiben beide Speicherorte im Cache des Prozessors.

  • Es wird nun eine neue Anfrage für den gültigen Speicherort gestellt. Wenn es schnell zurückkommt, befand sich der Speicherort bereits im CPU-Cache, was darauf hinweist, dass die bedingte Anforderung zuvor ausgeführt wurde. Die iterative Verwendung dieser Bedingungen kann verwendet werden, um den Wert in Speicherorten außerhalb der Grenzen zu verstehen.

Meltdown stellt eine bestimmte Sicherheitsanfälligkeit dar, gegen die ein Patch ausgeführt werden kann.

Wie funktioniert Spectre?

Spectre täuscht auch einen Prozessor vor, spekulative Ausführung zum Lesen von eingeschränkten Werten zu missbrauchen. Die Bekanntmachungen beschreiben * zwei Varianten * mit unterschiedlicher Komplexität und Wirkung.

Bei * Variante 1 * von Spectre wird der Prozessor dazu verleitet, spekulativ einen Lesevorgang durchzuführen, bevor eine Begrenzungsprüfung erzwungen wird. Erstens ermutigt der Angreifer den Prozessor, spekulativ nach einem Speicherort zu greifen, der über seine gültigen Grenzen hinausgeht. Dann lädt ein zusätzlicher Befehl wie Meltdown bedingt eine gültige Adresse auf der Grundlage des Grenzwerts in den Cache. Das Timing, wie lange es dauert, um die legale Adresse danach abzurufen, zeigt an, ob sie in den Cache geladen wurde. Dies kann wiederum den Wert des Speicherorts außerhalb der Grenzen anzeigen.

  • Variante 2 * von Spectre ist am kompliziertesten auszunutzen und zu mildern. Prozessoren führen Anweisungen oft spekulativ aus, selbst wenn sie auf eine bedingte Anweisung stoßen, die noch nicht ausgewertet werden kann. Dazu schätzen sie das wahrscheinlichste Ergebnis der Bedingung mithilfe eines Mechanismus, der als Verzweigungsvorhersage bezeichnet wird.

Die Verzweigungsvorhersage verwendet den Verlauf früherer Durchläufe durch einen Codepfad, um einen Pfad auszuwählen, der spekulativ ausgeführt werden soll. Dies kann von Angreifern verwendet werden, um einen Prozessor für eine falsche spekulative Entscheidung vorzubereiten. Da im Zweigauswahlverlauf keine absoluten Verweise auf die Entscheidung gespeichert sind, kann ein Prozessor dazu verleitet werden, einen Zweig in einem Teil des Codes auszuwählen, selbst wenn er in einem anderen trainiert wurde. Dies kann ausgenutzt werden, um Speicherwerte außerhalb des akzeptablen Bereichs zu ermitteln.

Fazit

Spectre und Meltdown sind schwerwiegende Sicherheitslücken. Das volle Potenzial ihrer möglichen Auswirkungen entfaltet sich noch.

Um sich zu schützen, aktualisieren Sie Ihre Betriebssystemsoftware aufmerksam, wenn Patches von Anbietern veröffentlicht werden, und überwachen Sie weiterhin die Kommunikation im Zusammenhang mit den Sicherheitsanfälligkeiten Meltdown und Spectre.