Im Linux-Kernel wurde ein Flag angezeigt, das den Schutz vor Spectre v4-Schwachstellen in allen untergeordneten Prozessen auf dem Server deaktiviert. Mehr zum neuen Parameter - unter dem Schnitt.
/ Flickr / Rie H / CC BY / Foto geändertWarum mussten Sie den Schutz deaktivieren?
Die Schwachstellengruppe der Spectre-Prozessoren wurde erstmals Anfang 2018 bekannt, und in den nächsten Monaten wurde diese Familie mit neuen „Sicherheitslücken“ aufgefüllt. Sicherheitslücken sind mit dem Betrieb von Systemen verbunden, die die Prozessorleistung steigern -
spekulatives Schreiben und Lesen sowie
Vorhersagen von Übergängen - und
es Angreifern
ermöglichen , Speicherisolationsmechanismen in Prozessoren von Intel und AMD zu umgehen.
Um die Sicherheitslücken zu schließen, geben Entwickler von Betriebssystemen Patches heraus. Die Installation dieser Patches führt jedoch häufig zu einer Verringerung der Servergeschwindigkeit. Auf Linux-Computern
reduzieren beispielsweise einige Spectre-Patches
die Leistung um 30 bis 50%.
Die Systemadministratoren waren mit dem Problem insbesondere in großen Rechenzentren unzufrieden. Sie baten Linux-Kernel-Entwickler, den Spectre-Schutz selektiv zu deaktivieren. Einige der entdeckten Schwachstellen sind nur theoretischer Natur und können in einer Reihe von Systemen grundsätzlich keinen Schaden anrichten. Beispielsweise werden Renderfarmen und Offline-Supercomputer vom Internet getrennt, sodass sie
keine Angst vor schädlichen Code-Injektionen haben.
Das Linux-Team traf Benutzer und führte verschiedene Funktionen ein, die den Schutz vor Schwachstellen Spectre v1, v2 (wir werden später mehr darüber sprechen) und v4 deaktivieren. Die letzte davon wurde Anfang Februar für alle aktuellen Kernelversionen eingeführt - dies ist das neue Flag PR_SPEC_DISABLE_NOEXEC.
Was und warum deaktiviert die Funktion
Die Sicherheitsanfälligkeit von Spectre v4 wird als Speculative Store Bypass bezeichnet. Es ermöglicht Malware, auf spekulative Computerergebnisse zuzugreifen, die der Prozessor zuvor als unnötig verworfen hat.
Diese Situation tritt auf, wenn die CPU abwechselnd mit indirekter Adressierung liest und schreibt. Das Lesen erfolgt häufiger als das Schreiben, und der Prozessor kann Daten aus dem Speicher verwenden, um die Leseadresse zu bestimmen, ohne auf die Berechnung des Versatzes der indirekten Adressierung zu warten. Wenn nach der Berechnung des Versatzes ein Schnittpunkt der Speicherbereiche zum Schreiben und Lesen erkannt wird (dh das Lesen wurde aus dem falschen Bereich durchgeführt), wird die zweite Operation erneut ausgeführt und das spekulative Ergebnis verworfen.
Theoretisch stellt sich heraus, dass ein Angreifer, wenn er die Adressen und die Struktur von Speicherzellen kennt, Daten daraus extrahieren kann, beispielsweise Verschlüsselungsschlüssel.
Der Patch für Spectre v4 erschien einige Tage nach der Veröffentlichung von Informationen über die Sicherheitsanfälligkeit im Linux-Kernel. Standardmäßig
wurde die
Speicherdisambiguierungsfunktion deaktiviert , die eine außergewöhnliche Ausführung von Befehlen ermöglichte. Dies
verlangsamte jedoch die Prozessor-E / A-Operationen um 10–40%.
/ Flickr / Rie H / CC BY-SAAnfang Juni 2018 ermöglichte die Kernel-Version 4.17 die Deaktivierung dieses Schutzes. Es gab ein Problem: Der Parameter wurde nicht vom übergeordneten an den untergeordneten Prozess übergeben. Für sie musste der Schutz manuell deaktiviert werden, was den Systemadministratoren Unannehmlichkeiten bereitete. Anfang Februar implementierten Kernel-Entwickler das Flag
PR_SPEC_DISABLE_NOEXEC . Es ergänzt die vorherige Funktion und kopiert den Betriebsmodus des Patches von Spectre v4 aus dem übergeordneten Prozess in die untergeordneten. PR_SPEC_DISABLE_NOEXEC ist Teil von prctl und kann beim Start eines neuen Prozesses aktiviert werden.
Was Experten sagen
In der Mailingliste der Linux-Kernel-Entwickler wurde die Einführung des neuen Flags
von Waiman Long von Red Hat geschrieben. Ihm zufolge wirkt sich der Schutz vor Spectre v4 erheblich auf die Leistung von Anwendungen aus, die viele Schreibvorgänge ausführen, z. B. Datenbanken. PR_SPEC_DISABLE_NOEXEC hilft dabei, die Überprüfung zum Deaktivieren des Patches zu automatisieren und Server mit einer großen Anzahl gleichzeitig laufender Prozesse zu beschleunigen.
Gleichzeitig stellen die Teilnehmer der IT-Community fest, dass der unachtsame Umgang mit einer neuen Flagge in bestimmten Situationen zu unangenehmen Konsequenzen führen kann.
„Es ist erwähnenswert, dass es in einigen Umgebungen nicht sicher ist, den Schutz vor Spectre v4 zu deaktivieren“, sagt Sergey Belkin, Leiter der Entwicklungsabteilung des IaaS-Anbieters 1cloud.ru . - Dazu gehören beispielsweise Webdienste mit Java und JavaScript. Die Offenlegung des Inhalts des Steuerungsprozesses durch verwalteten Code kann für die Anwendungssicherheit schwerwiegend sein. “
Informationen zu anderen Spectre-Patches im Linux-Kernel
Zusätzlich zum PR_SPEC_DISABLE_NOEXEC-Flag verfügt der Linux-Kernel über weitere Parameter, die den Spectre-Schutz deaktivieren.
Der erste ist
nospectre_v2 . Die Funktion deaktiviert den Schutz vor Spectre v2, wodurch Angreifer
den Übergangsvorhersageblock verwenden können, um den Prozessor zu zwingen, eine Operation in einem bestimmten Speichermodul spekulativ auszuführen. Zum Schutz
deaktiviert der Patch
die Funktion zur indirekten Vorhersage von Übergängen und verhindert die Übertragung empfangener Informationen zwischen Threads im selben CPU-Kern.
Das Deaktivieren des Schutzes führt zu einer Steigerung der Prozessorleistung um 30%. Dies ist der
Fall, nachdem ein Patch von Spectre v2 installiert wurde. Sogar der Linux-Entwickler Linus Torvalds unterstützte die neue Funktion. Ihm zufolge bedroht die Sicherheitsanfälligkeit nur Prozessoren mit der
SMT- Funktion. In diesem speziellen Fall ist es rentabler, sie zu deaktivieren.
Der zweite Parameter -
nospectre_v1 - deaktiviert den Schutz vor der ersten Spectre-Option. Mithilfe von Malware können Hacker dazu führen, dass der Prozessor das Ergebnis eines bedingten Übergangs falsch vorhersagt und die Ergebnisse spekulativer Berechnungen im von Hackern benötigten Speicherbereich verwirft. Obwohl der Patch von Version 1 die Leistung nicht wesentlich beeinträchtigt (einigen
Berichten zufolge kann die Reduzierung der Prozessorgeschwindigkeit überhaupt vernachlässigt werden),
baten die Entwickler
darum, die Möglichkeit hinzuzufügen, diesen Schutz für den Kernel zu deaktivieren. Dies ermöglichte es uns, die Struktur von Netzwerken zu vereinfachen, die vom externen Zugriff isoliert sind.
Die Linux-Kernel-Community bleibt der Idee der freien Wahl treu, die Linus Torvalds zu Beginn festgelegt hat: Die Benutzer selbst sind dafür verantwortlich, die Sicherheit und Leistung von Linux-Systemen in Einklang zu bringen. Es ist daher zu erwarten, dass beim Erkennen neuer Schwachstellen, die Spectre im Kernel ähneln, sowohl ein Patch als auch die Möglichkeit zum Deaktivieren angezeigt werden.
Beiträge aus unserem Unternehmensblog: