Wie können die Spectre- und Meltdown-Schwachstellen auf Linux-Systemen gemindert werden?


34

Sicherheitsforscher haben im Projekt Zero eine neue Sicherheitslücke namens Spectre and Meltdown veröffentlicht, mit der ein Programm Informationen aus einem Speicher anderer Programme stehlen kann. Es betrifft Intel-, AMD- und ARM-Architekturen.

Dieser Fehler kann aus der Ferne ausgenutzt werden, indem Sie eine JavaScript-Website besuchen. Technische Details finden Sie unter Red Hat Website , Ubuntu Security - Team .

Informationsleck durch spekulative Hinrichtungsseitenkanalangriffe (CVE-2017-5715, CVE-2017-5753, CVE-2017-5754 aka Spectre and Meltdown)

Es wurde festgestellt, dass eine neue Klasse von Seitenkanalangriffen die meisten Prozessoren betrifft, einschließlich Prozessoren von Intel, AMD und ARM. Durch den Angriff können böswillige Userspace-Prozesse den Kernel-Speicher und böswilligen Code in den Gastsystemen den Hypervisor-Speicher lesen. Um das Problem zu beheben, sind Updates für den Ubuntu-Kernel und den Prozessor-Mikrocode erforderlich. Diese Updates werden in zukünftigen Ubuntu-Sicherheitsmitteilungen angekündigt, sobald sie verfügbar sind.

Beispielimplementierung in JavaScript

Als Proof-of-Concept wurde JavaScript-Code geschrieben, der es JavaScript ermöglicht, privaten Speicher von dem Prozess zu lesen, in dem es ausgeführt wird, wenn es im Google Chrome-Browser ausgeführt wird.

Mein System scheint von der Spectre-Schwachstelle betroffen zu sein. Ich habe diesen Proof-of-Concept zusammengestellt und ausgeführt ( spectre.c).

System Information:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

Wie können die Schwachstellen in Spectre und Meldown auf Linux-Systemen gemindert werden?

Lesen Sie weiter: Verwenden von Meltdown zum Stehlen von Passwörtern in Echtzeit .

Aktualisieren

Verwenden Sie Spectre & Meltdown Checkernach dem Umstieg auf die 4.9.0-5Kernel-Version die folgende Antwort von @Carlos Pasqualini, da ein Sicherheitsupdate verfügbar ist, um die cve-2017-5754 unter Debian Stretch zu verringern:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

Update 25. Januar 2018

Das spectre-meltdown-checkerSkript wird offiziell von Debian gepackt und ist für Debian Stretch über das Backports-Repository, Buster und Sid verfügbar .

Update 22.05.2008

Speculative Store Bypass (SSB) - auch als Variante 4 bekannt

Systeme mit Mikroprozessoren, die eine spekulative Ausführung und eine spekulative Ausführung von Speicherlesevorgängen verwenden, bevor die Adressen aller früheren Speicherschreibvorgänge bekannt sind, können die unbefugte Weitergabe von Informationen an einen Angreifer mit lokalem Benutzerzugriff über eine Seitenkanalanalyse ermöglichen.

Rogue System Register Read (RSRE) - auch als Variante 3a bekannt

Systeme mit Mikroprozessoren, die eine spekulative Ausführung verwenden und spekulative Lesevorgänge von Systemregistern durchführen, können einem Angreifer mit lokalem Benutzerzugriff über eine Seitenkanalanalyse die unbefugte Offenlegung von Systemparametern ermöglichen.

Bearbeiten 27. Juli 2018

NetSpectre: Beliebigen Speicher über das Netzwerk lesen

In diesem Artikel stellen wir NetSpectre vor, einen neuen Angriff, der auf Spectre-Variante 1 basiert und keinen vom Angreifer gesteuerten Code auf dem Zielgerät erfordert. Dies wirkt sich auf Milliarden von Geräten aus. Ähnlich wie bei einem lokalen Spectre-Angriff erfordert unser Remote-Angriff das Vorhandensein eines Spectre-Gadgets im Code des Ziels. Wir zeigen, dass Systeme, die die erforderlichen Spectre-Gadgets in einer exponierten Netzwerkschnittstelle oder -API enthalten, mit unserem generischen Spectre-Remoteangriff angegriffen werden können, sodass beliebiger Speicher über das Netzwerk gelesen werden kann. Der Angreifer sendet nur eine Reihe von gestalteten Anforderungen an das Opfer und misst die Antwortzeit, um einen geheimen Wert aus dem Speicher des Opfers zu entfernen.



1
Ich habe das Debian-Tag entfernt, damit dieses Q auf alle Linux-Betriebssysteme angewendet werden kann (laut Titel). kehren Sie zurück, wenn Sie beabsichtigen, dies nur auf Debian zu konzentrieren.
Jeff Schaller

Antworten:


12

Alan Cox hat einen Link von AMDs Blog geteilt: https://www.amd.com/en/corporate/speculative-execution

Variante Eins: Bounds Check Bypass

Gelöst durch Software / Betriebssystem-Updates, die von Systemherstellern und -herstellern zur Verfügung gestellt werden. Vernachlässigbare Auswirkung auf die Leistung erwartet.

Variante Zwei: Branch Target Injection

Unterschiede in der AMD-Architektur bedeuten, dass das Risiko einer Ausnutzung dieser Variante nahezu Null ist. Auf AMD-Prozessoren wurde bisher keine Sicherheitsanfälligkeit für Variante 2 nachgewiesen.

Variante Drei: Laden des Rogue-Datencaches

Keine AMD-Schwachstelle aufgrund von Unterschieden in der AMD-Architektur.

Eine Bestätigung dieser Äußerungen von AMD durch Dritte wäre jedoch gut.

Die "Minderung" der Auswirkungen auf betroffene Systeme würde einen neuen Kernel und einen Neustart erfordern. Bei vielen Distributionen sind jedoch noch keine Pakete mit den folgenden Korrekturen veröffentlicht worden:

Debian:

Andere Informationsquellen, die ich gefunden habe:


12
Eine ganze Reihe von AMD-Informationen wird einem Fragesteller, dessen CPU ein Intel Core ist, nicht weiterhelfen.
JdeBP


Gemäß den oben verlinkten Debian-Seiten (und den darin verlinkten Seiten) scheint es, dass Kernel-Patches verteilt werden, wenn die verantwortlichen Anbieter ihren Mikrocode veröffentlichen. Aus security-tracker.debian.org/tracker/CVE-2017-5754 (dem einzigen Fix, der bisher behoben wurde) geht jedoch hervor, dass Fixes nur für stabile und instabile Releases verfügbar gemacht wurden. Weiß jemand, ob wir Korrekturen für Oldstable ("Jessie") erwarten können? Ich konnte keine Aussage von Debian oder dem Debian-Sicherheitsteam zu dieser Angelegenheit finden ...
Shevek

11

27. Januar 2018 Intel Microcode bricht einige Systeme

Das Intel Microcode Update 2018-01-08 zur spekulativer Sicherheitslücken bei der Ausführungsverzweigung hat einige Systeme . Dies betraf viele Ubuntu-Systeme vom 8. bis 21. Januar. Am 22. Januar 2018 veröffentlichte Ubuntu ein Update, das älteren Microcode vom 07.07.2017 zurückbringt.

Wenn Sie Probleme mit Updates hatten, Ubuntu neu installiert und die Updates zwischen dem 08.01.2018 und dem 22.01.2018 deaktiviert haben, möchten Sie möglicherweise die automatischen Updates von Ubuntu erneut versuchen.

16. Januar 2018 Update Spectre in 4.14.14 und 4.9.77

Wenn Sie bereits Kernel-Versionen 4.14.13 oder 4.9.76 verwenden, ist die Installation ein Kinderspiel 4.14.14 und 4.9.77wenn sie in ein paar Tagen herauskommen, um die Spectre-Sicherheitslücke zu schließen. Der Name dieses Fixes ist Retpoline und hat nicht die zuvor spekulierten schwerwiegenden Leistungseinbußen:

Greg Kroah-Hartman hat die neuesten Patches für Linux 4.9 und 4.14 veröffentlicht, die jetzt die Retpoline-Unterstützung enthalten.

Diese X86_FEATURE_RETPOLINE ist für alle AMD / Intel-CPUs aktiviert. Für eine vollständige Unterstützung müssen Sie den Kernel auch mit einem neueren GCC-Compiler erstellen, der -mindirect-branch = thunk-extern-Unterstützung enthält. Die GCC-Änderungen sind gestern in GCC 8.0 gelandet und werden möglicherweise auf GCC 7.3 zurückportiert.

Wer die Retpoline-Unterstützung deaktivieren möchte, kann die gepatchten Kernel mit booten noretpoline booten .

Ohne auf Details von JavaScript eingehen zu müssen, erfahren Sie hier, wie Sie das Meltdown-Loch sofort umgehen (und ab 10. Januar 2018 Spectre-Schutz).

Update vom 12. Januar 2018

Anfänglicher Schutz vor Spectre ist da und wird in den kommenden Wochen und Monaten verbessert.

Linux-Kernel 4.14.13, 4.9.76 LTS und 4.4.111 LTS

Aus diesem Softpedia-Artikel :

Die Linux-Kernel 4.14.13, 4.9.76 LTS und 4.4.111 LTS können jetzt von kernel.org heruntergeladen werden. Sie enthalten weitere Korrekturen für die Sicherheitslücke in Spectre sowie einige Regressionen von Linux 4.14.12, 4.9 .75 LTS- und 4.4.110 LTS-Kernel, die letzte Woche veröffentlicht wurden, da einige kleinere Probleme gemeldet haben.

Diese Probleme scheinen jetzt behoben zu sein. Daher können Sie Ihre Linux-basierten Betriebssysteme sicher auf die heute veröffentlichten neuen Kernel-Versionen aktualisieren. Dazu gehören weitere x86-Updates, einige PA-RISC-, s390- und PowerPC-Korrekturen (PPC) sowie verschiedene Verbesserungen Treiber (Intel i915, Crypto, IOMMU, MTD) und die üblichen mm- und Kernel-Änderungen.

Viele Benutzer hatten Probleme mit Ubuntu LTS-Updates am 4. Januar 2018 und 10. Januar 2018. Ich benutze 4.14.13seit ein paar Tagen ohne Probleme jedoch YMMV .


Update vom 7. Januar 2018

Greg Kroah-Hartman hat gestern ein Status-Update zu den Sicherheitslücken im Meltdown- und Spectre Linux-Kernel geschrieben. Einige nennen ihn vielleicht den zweitmächtigsten Mann in der Linux-Welt direkt neben Linus. Der Artikel befasst sich mit stabilen Kerneln (siehe unten) und LTS-Kerneln, über die die Mehrheit der Ubuntu-Benutzer verfügt.


Linux-Kernel 4.14.11, 4.9.74, 4.4.109, 3.16.52 und 3.2.97 Fehler beim Zusammenschmelzen von Patches

Aus diesem Artikel :

Benutzer werden aufgefordert, ihre Systeme sofort zu aktualisieren

4. Januar 2018 01:42 GMT · Von Marius Nestor

Die Linux-Kernel-Betreuer Greg Kroah-Hartman und Ben Hutchings haben neue Versionen der Linux-Kernel-Serien 4.14, 4.9, 4.4, 3.16, 3.18 und 3.12 LTS (Long Term Support) veröffentlicht, die anscheinend eine der beiden kritischen Sicherheitslücken der neuesten Generation beheben Prozessoren.

Die Linux-Kernel 4.14.11, 4.9.74, 4.4.109, 3.16.52, 3.18.91 und 3.2.97 können jetzt von der kernel.org-Website heruntergeladen werden. Benutzer werden aufgefordert, ihre GNU / Linux-Distributionen zu aktualisieren auf diese neuen Versionen, wenn sie eine dieser Kernel-Serien sofort ausführen. Warum aktualisieren? Weil sie offenbar eine kritische Schwachstelle namens Meltdown ausbessern.

Wie bereits erwähnt, sind Meltdown und Spectre zwei Exploits, die nahezu alle Geräte betreffen, die mit modernen Prozessoren (CPUs) betrieben werden, die in den letzten 25 Jahren auf den Markt gebracht wurden. Ja, das bedeutet fast alle Handys und PCs. Meltdown kann von einem nicht privilegierten Angreifer ausgenutzt werden, um in böswilliger Absicht vertrauliche Informationen aus dem Kernelspeicher abzurufen.

Patch für Spectre-Schwachstelle ist noch in Arbeit

Während Meltdown eine schwerwiegende Sicherheitsanfälligkeit ist, die Ihre geheimen Daten, einschließlich Kennwörter und Verschlüsselungsschlüssel, offenlegen kann, ist Spectre noch schlimmer und nicht einfach zu beheben. Sicherheitsforscher sagen, es wird uns noch einige Zeit verfolgen. Spectre nutzt bekanntermaßen die spekulative Ausführungstechnik moderner CPUs, um die Leistung zu optimieren.

Bis der Spectre-Fehler ebenfalls behoben ist, wird dringend empfohlen, mindestens Ihre GNU / Linux-Distributionen auf eine der neu veröffentlichten Linux-Kernel-Versionen zu aktualisieren. Durchsuchen Sie also die Software-Repositorys Ihrer Lieblingsdistribution nach dem neuen Kernel-Update und installieren Sie es so bald wie möglich. Warten Sie nicht bis es zu spät ist, machen Sie es jetzt!


Ich hatte Kernel 4.14.10 für eine Woche benutzt, also Ubuntu Mainline Kernel Version 4.14.11 heruntergeladen und gebootet für mich kein großes .

Benutzer von Ubuntu 16.04 sind möglicherweise mit Kernel-Versionen 4.4.109 oder 4.9.74, die zur gleichen Zeit wie 4.14.11 veröffentlicht wurden, zufriedener.

Wenn Ihre regulären Updates die gewünschte Kernel-Version nicht installieren, können Sie dies manuell tun. Befolgen Sie dazu die folgende Frage an Ubuntu: https://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version / 879920 # 879920


4.14.12 - Was für einen Unterschied macht ein Tag

Weniger als 24 Stunden nach meiner ersten Antwort wurde ein Patch veröffentlicht, um die Kernel-Version 4.14.11 zu reparieren, die sie möglicherweise herausgebracht haben. Ein Upgrade auf 4.14.12 wird für alle 4.14.11-Benutzer empfohlen. Greg-KH sagt :

Ich kündige die Veröffentlichung des Kernels 4.14.12 an.

Alle Benutzer der 4.14-Kernel-Serie müssen ein Upgrade durchführen.

Es sind noch einige kleinere Probleme mit dieser Version bekannt, auf die die Leute gestoßen sind. Hoffentlich werden sie dieses Wochenende gelöst, da die Flecken nicht in Linus 'Baum gelandet sind.

Testen Sie vorerst wie immer Ihre In-Umgebung.

Mit Blick auf dieses Update wurden nicht sehr viele Quellcodezeilen geändert.


1
Die Lösung für Meltdown ist jetzt verfügbar über apt-get dist-upgrade.
Luchonacho

1
Auf meinem Handy verursacht jetzt aber Update auf LTS Kernel-Panik am 10.01.2008. Siehe Ubuntu fragen.
WinEunuuchs2Unix

1
Zum Glück habe ich es mit 109 aktualisiert (108 bringt den Kernel in Panik). Hatte also dieses Problem nicht. Es funktioniert gut.
Luchonacho

1
@ WinEunuuchs2Unix gibt es hier ein Update USN-3531-2: Intel Microcode Regression
GAD3R

1
@ GAD3R Vielen Dank für den Link. Es hilft mir, eine Antwort in Ask Ubuntu zu posten
WinEunuuchs2Unix

6

Dieser Fehler kann aus der Ferne ausgenutzt werden, indem Sie eine JavaScript-Website besuchen.

Tatsächlich. Eine sinnvolle Lösung besteht darin, JavaScript in Ihren Webbrowsern zu deaktivieren oder Webbrowser zu verwenden, die kein JavaScript unterstützen.

Die meisten Browser, die JavaScript unterstützen, haben eine Einstellung zum Deaktivieren. Wenn Sie alternativ eine Whitelist mit Websites oder Domänen verwalten möchten, für die JavaScript zulässig ist, stehen verschiedene Add-Ons zur Verfügung, z. B. uBlock Origin und NoScript .

NB Es sollte selbstverständlich sein, dass das Deaktivieren / Einschränken von JavaScript nicht Ihre einzige Minderung sein sollte. Sie sollten außerdem alle relevanten Kernel-Fixes und andere Sicherheitsupdates überprüfen (und möglicherweise anwenden), sobald sie geschrieben, getestet und veröffentlicht wurden. Auf Debian abgeleitete Verteilungen Verwendung Befehle wie sudo apt update , sudo apt list-upgradableundsudo apt upgrade .

Update: Nimm nicht mein Wort dafür. Alan Cox sagt ähnlich:

Was Sie brauchen, um Zeit zu sparen, ist Javascript, da der Exploit von Javascript auf Webseiten aus der Ferne verwendet werden kann, um Daten aus Ihrem Systemspeicher zu stehlen. ... Dinge wie Adblocker und Erweiterungen wie Noscript in Betracht ziehen, die das Laufen von Junk an erster Stelle stoppen können. Mach das SO SCHNELL WIE MÖGLICH. Wenn Betriebssystem-Updates angezeigt werden, wenden Sie diese an. ( Quelle )


5
Entschuldigen Sie, obwohl dies gegen den Angriff hilft, ohne JS hätten Sie die Antwort hier nicht hinterlassen können. Dieser Hinweis ähnelt dem Hinweis "Internet nicht mehr verwenden" (2018).
Moritz Both

4
@MoritzBoth, zum Glück funktionieren viele Sites auch ohne JS. Leider benötigt StackExchange JS zum Posten, wie Sie betonen. Das ist ein (ernstes!) Manko in SE :(
sampablokuper

3
Für FireFox könnte ein noScript- ähnliches Addon dazu beitragen, die Verwendung von JavaScript auf zweifelhaften Websites zu reduzieren - obwohl die jüngsten Änderungen durch FF Quantum (V57) einen großen Teil des gesamten FF-Addon-Pools getroffen haben ...
SlySven

2
Seit der Veröffentlichung von Quantum bin ich aus genau diesem Grund zu Pale Moon gewechselt. Funktioniert für mich sehr gut, einschließlich NoScript und Cookie Masters (einst Cookie Monster).
Murphy

2
@MoritzBoth Ich glaube wirklich nicht, dass das Deaktivieren von JS bedeutet, das Internet nicht mehr zu benutzen, geschweige denn , das Internet nicht mehr zu benutzen. Dies ist jedoch ein guter Zeitpunkt, um das Bewusstsein für die Probleme zu schärfen, die mit der allgemeinen Abhängigkeit von JS von einigen Anbietern von Webinhalten verbunden sind.
Tobia Tesan

5

Die Tatsache, dass dies mithilfe von JavaScript ausgenutzt werden kann, ist nicht das Hauptanliegen und sollte auch nicht das Hauptanliegen sein (obwohl dies ein wichtiges Anliegen ist, da auf diese Weise Remotecode leicht auf Ihrem System ausgeführt werden kann, aber dies ist nicht das einzige wie das passieren kann).

Ihr Fokus sollte nicht auf Javascript und / oder Ihrem Browser liegen. Idealerweise sollte Ihre CPU gepatcht sein. Leider scheint dies für die meisten der aktuellen Fehlerwellen nicht möglich zu sein. Zusammen mit Debian werden alle anderen Betriebssystemanbieter also den einzig möglichen Weg gehen, um eine CPU zu empfehlen, die nicht fehlerhaft ist: Sie zwingen das System, den Fehler in der CPU zu umgehen. Diese Patches beheben die Probleme nicht. Stattdessen verbirgt das Betriebssystem sie so gut es geht vor jedem Programm, das ein Benutzer auf dem Computer ausführt (und damit auch vor Ihrem Browser).

Dieses Verstecken ist eine zusätzliche Rechenarbeit und daher ist Ihre Gesamtsystemleistung geringer als ohne. Wie viel niedriger hängt wahrscheinlich stark davon ab, was genau diese Programme tun.

Zurück zu Ihrer Frage: Was Sie tun können, um Ihr Debian-System zu schützen, ist die Installation von Sicherheitsupdates. Ich vertraue darauf, dass Debian angesichts dieser Fehler alles in seiner Macht Stehende tun wird, um Debian trotz der inhärenten CPU-Mängel so sicher wie möglich laufen zu lassen.

Alle möglichen großen Unternehmen arbeiten bereits an diesem Problem, ebenso zahlreiche Hardware- und Linux-Gurus. Ich möchte Sie nicht unbedingt davon abhalten, etwas selbst auszuprobieren oder der allgemeinen Anstrengung zu helfen. Wenn Sie sich jedoch nur für Ihre eigene Sicherheit und eine zeitnahe Fehlerbehebung interessieren, werden sie höchstwahrscheinlich in kürzerer Zeit eine bessere Lösung finden als Sie.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.