Downfall-Angriff
(downfall.page)- Eine Schwachstelle CVE-2022-40982 in Intel-Prozessoren, die weit verbreitet in privaten und Cloud-Computern eingesetzt werden, ermöglicht es, Daten anderer Nutzer zu stehlen, die denselben Computer gemeinsam nutzen
- Der Kern der Schwachstelle besteht darin, dass der Gather-Befehl während der spekulativen Ausführung Inhalte der internen Vektorregisterdatei im Zuge einer Speicheroptimierung offenlegt
- Der Angriff wird mit den Techniken GDS und GVI umgesetzt; die Demo zeigt dabei Leaks über Isolationsgrenzen hinweg, darunter AES-Schlüssel, Linux-Kernel-Daten und das Überwachen druckbarer Zeichen
- Betroffen sind Intel Core-Prozessoren von der 6. Generation Skylake bis zur 11. Generation Tiger Lake; auch Cloud-Nutzer können betroffen sein, ohne selbst ein Intel-Gerät zu besitzen
- Das Microcode-Update von Intel blockiert die transienten Ergebnisse von Gather, aber einige Workloads können nach der Aktivierung der Gegenmaßnahme einen Overhead von bis zu 50 % haben
Die von Downfall angegriffene Schwachstelle
- Downfall zielt auf eine kritische Schwäche aktueller Prozessoren ab, die in Personal Computern und Cloud-Computern eingesetzt werden
- Diese Schwachstelle wird durch CVE-2022-40982 identifiziert
- Dadurch kann auf Daten anderer Nutzer zugegriffen und diese gestohlen werden, wenn sie denselben Computer gemeinsam nutzen
- Eine bösartige App aus dem App Store könnte sensible Informationen wie Passwörter, Verschlüsselungsschlüssel, Bankdaten, private E-Mails und Nachrichten stehlen
- In der Cloud könnte ein bösartiger Kunde die Daten und Zugangsdaten anderer Kunden stehlen, die sich denselben Cloud-Computer teilen
Technische Ursache der Schwachstelle
- Die Speicheroptimierungsfunktion von Intel-Prozessoren legt interne Hardware-Register unbeabsichtigt gegenüber Software offen
- Nicht vertrauenswürdige Software kann auf Daten anderer Programme zugreifen, auf die sie eigentlich keinen Zugriff haben sollte
- Der Gather-Befehl, der verstreute Daten im Speicher schneller lesen soll, leakt während der spekulativen Ausführung Inhalte der internen Vektorregisterdatei
- Zur Ausnutzung werden Gather Data Sampling (GDS) und Gather Value Injection (GVI) verwendet
- Technische Details sind im Downfall-Paper zusammengefasst
In Demos bestätigte Leak-Fälle
- Die Downfall-Demo zeigt, dass sensible Daten über verschiedene Isolationsgrenzen hinweg abfließen können
Betroffene Systeme und Angriffsbedingungen
- Betroffen sind Computing-Geräte auf Basis von Intel Core-Prozessoren von der 6. Generation Skylake bis zur 11. Generation Tiger Lake
- Eine umfassendere Liste betroffener Prozessoren soll in Intels Liste betroffener Prozessoren bereitgestellt werden
- Auch ohne ein physisches Intel-basiertes Gerät können Cloud-Nutzer betroffen sein
- Intel hat einen Marktanteil von über 70 % im Servermarkt
- Angreifer können es auf hochwertige Zugangsdaten wie Passwörter und Verschlüsselungsschlüssel absehen
- Der Diebstahl von Zugangsdaten kann über eine Verletzung der Vertraulichkeit hinaus zu weiteren Angriffen führen, die Verfügbarkeit und Integrität von Systemen beeinträchtigen
- GDS ist vergleichsweise leicht in reale Angriffe umzusetzen
- Die Entwicklung eines End-to-End-Angriffs zum Diebstahl von Verschlüsselungsschlüsseln aus OpenSSL dauerte zwei Wochen
- Angreifer und Opfer müssen sich lediglich denselben physischen Prozessorkern teilen
- In modernen Computern mit präemptivem Multitasking und simultanem Multithreading kommt eine solche gemeinsame Nutzung häufig vor
Isolationsgrenzen, SGX und Browser-Auswirkungen
- Downfall betrifft auch gängige Isolationsgrenzen
- Virtuelle Maschinen
- Prozesse
- User-Kernel-Isolation
- Intel SGX ist ebenfalls betroffen
- Intel SGX ist eine Hardware-Sicherheitsfunktion in Intel-CPUs zum Schutz von Nutzerdaten vor bösartiger Software
- Eine Remote-Ausnutzung über Webbrowser ist theoretisch möglich
- Um in der Praxis einen erfolgreichen Angriff im Browser zu demonstrieren, sind jedoch zusätzliche Forschung und Engineering-Arbeit nötig
Expositionsdauer und Schwierigkeit der Erkennung
- Nutzer waren dieser Schwachstelle mindestens 9 Jahre lang ausgesetzt
- Die betroffenen Prozessoren existieren seit 2014
- Downfall-Angriffe sind schwer zu erkennen
- Ihr Ausführungsverhalten ähnelt größtenteils normalen Anwendungen
- Theoretisch ließe sich ein System bauen, das mit Hardware-Performance-Countern ungewöhnliches Verhalten wie übermäßige Cache-Misses erkennt
- Übliche kommerzielle Antivirensoftware kann diesen Angriff nicht erkennen
Gegenmaßnahmen und Performance-Overhead
- Intel hat ein Microcode-Update veröffentlicht
- Dieses Update blockiert die transienten Ergebnisse des Gather-Befehls
- Es verhindert, dass Angreifercode die aus Gather stammenden spekulativen Daten beobachten kann
- Der Overhead der Gegenmaßnahme hängt davon ab, ob Gather im kritischen Ausführungspfad eines Programms vorkommt
- Laut Intel können einige Workloads einen Overhead von bis zu 50 % erfahren
- Es ist nicht sicher, die Gegenmaßnahme zu deaktivieren, nur weil ein Workload Gather nicht direkt verwendet
- Moderne CPUs nutzen Vektorregister zur Optimierung allgemeiner Aufgaben wie Speicherkopien und Registerinhaltswechsel
- In diesem Prozess können Daten durch nicht vertrauenswürdigen Code abfließen, der Gather missbraucht
Offenlegungszeitplan und Reproduktionscode
- Für diese Schwachstelle galt fast ein Jahr lang ein Embargo
- Sie wurde Intel am 24. August 2022 gemeldet
- Downfall wurde am 9. August 2023 auf der BlackHat USA und am 11. August 2023 beim USENIX Security Symposium vorgestellt
- Reproduktionscode ist im GitHub POC veröffentlicht
Worauf andere Prozessorentwickler achten sollten
- Auch andere Prozessoren besitzen gemeinsam genutzte SRAM-Speicher wie Hardware-Registerdateien und Fill Buffers innerhalb des Kerns
- Hersteller sollten gemeinsam genutzte Speichereinheiten sorgfältiger entwerfen, damit keine Daten zwischen unterschiedlichen Sicherheitsdomänen abfließen
- Es sollte mehr in Sicherheitsverifikation und Tests investiert werden
Name und verwandte Schwachstellen
- Der Name Downfall bezieht sich darauf, dass die grundlegenden Sicherheitsgrenzen der meisten Computer zum Einsturz gebracht werden
- Downfall kann als Nachfolger früherer CPU-Datenleck-Schwachstellen wie Meltdown und Fallout gesehen werden
- In diesem Verlauf umgeht Downfall frühere Gegenmaßnahmen erneut
Empfehlungen der Anbieter und technische Dokumentation
- Sicherheitshinweise:
- MITRE: CVE-2022-40982
- Intel: INTEL-SA-00828
- AWS: AWS-2023-007
- GCP: GCP-2023-024
- Debian: CVE-2022-40982
- Ubuntu: CVE-2022-40982
- Red Hat: CVE-2022-40982
- VMware: Reaktion auf Gather Data Sampling
- Technische Dokumentation von Intel:
1 Kommentare
Meinungen auf Hacker News
Es fühlt sich merkwürdig an, dass externe Forschende auch nach den ersten Spectre-Angriffen weiterhin ähnliche Angriffe finden und die Chip-Hersteller sie erst später patchen.
Im Prinzip müssten die Chip-Hersteller die besten Voraussetzungen haben: Sie sind Experten für spekulative Ausführung, kennen das Verhalten ihrer Chips genau und verfügen über Verifikations-Suites, Simulatoren und sogar maschinenlesbare interne Spezifikationen.
Externe Forschende müssen dagegen eine Blackbox untersuchen und mit deutlich schlechteren Quellen wie Patenten Reverse Engineering betreiben; trotzdem finden Einzelpersonen oder externe Gruppen selbst Jahre später noch solche Schwachstellen.
Vor Spectre mag man solche Angriffsvektoren nicht bedacht haben, aber nachdem der allgemeine Mechanismus bekannt war, hätten die Chip-Hersteller doch ihre klügsten Leute zusammentrommeln und sagen müssen: „Durchkämmt alles und findet weitere Spectre-artige Angriffe.“
Vielleicht wissen sie das alles schon, begraben es aber in der Hoffnung, dass es nicht öffentlich wird, um Gesichtsverlust und Performance-Einbußen zu vermeiden.
Wenn etwas von Milliarden Menschen genutzt wird, werden diese vermutlich mehr Probleme, Defekte und Exploits finden als die Hersteller selbst. Allein die Existenz solcher Probleme stützt oder widerlegt keine weitergehenden Schlüsse über die Gründe dafür.
Sicherheitsforschende haben einen Anreiz, etwas zu finden, um sich einen Ruf aufzubauen. Häufig stellen sie Dinge als weltbewegende Sicherheitslücken dar, obwohl sie für reale Angreifer kaum Bedeutung haben.
Wurden Angriffe über spekulative Ausführung jemals in realen Umgebungen gefunden? Vielleicht nicht. Dann gibt es für Chip-Anbieter wenig Grund, enorme Summen dafür auszugeben.
Reale Kunden nehmen keinen Schaden, außer wenn externe Forschende Maßnahmen erzwingen und dadurch neuer Microcode veröffentlicht wird, der die Performance senkt.
Auffällig ist auch, dass die Gegenmaßnahmen für solche Angriffe immer mit einem Abschalter versehen sind. Das ist bei Sicherheitsfixes nicht die übliche Form, liegt aber oft daran, dass diese Angriffe nicht besonders wichtig sind.
Software, die auf demselben physischen Core oder derselben physischen CPU läuft, hat entweder dasselbe Vertrauensniveau oder ist so stark sandboxed, dass sie den Angriff nicht ausführen kann.
Intel baut seine Chips zweifellos „so clever wie möglich“, und damit sind sie per Definition nicht vollständig debugbar.
Wichtig ist auch: Das sind keine Bugs. Das Design funktioniert wie beabsichtigt. Man verstand, dass die Performance einer CPU davon abhängt, welcher Code zuvor ausgeführt wurde, und akzeptierte das, weil die Kosten der Alternativen bei Energieverbrauch, Performance und Fläche als zu hoch galten. Das ist Engineering: Alternativen abwägen und auswählen.
In diesem Fall wurden CPUs schnell genug, dass ein kleiner Bruchteil eines Bits pro Iteration zu angreifbarer Bandbreite wurde; aber die Branche musste es erst von jemandem demonstriert bekommen, um es zu verstehen. Das hat die Engineering-Abwägung verändert.
Der Intel-Paper-Link ist tot; der korrekte Link scheint dieser zu sein: https://www.intel.com/content/www/us/en/developer/articles/t...
Als allgemeiner Hinweis: Gibt es wirklich noch viele Clouds, die Workloads verschiedener Nutzer auf demselben physischen Core ausführen? Ich dachte, die meisten hätten vor einigen Jahren ihre Scheduler geändert, um Cross-Domain-Leaks zwischen Hyperthreads zu verhindern
Die Behauptung, das betreffe alle Nutzer des Internets, wirkt wie eine starke Übertreibung. Ich habe auch keinen browserbasierten Exploit gesehen, und selbst wenn es einen gäbe, würde er wohl nur eine winzige Zahl gezielt angegriffener Nutzer betreffen. Seit Spectre sind viele Jahre vergangen; ich frage mich, ob in der Praxis je Angriffe über spekulative Ausführung entdeckt wurden
Interessanter ist, dass sich solche Bugs in der spekulativen Ausführung offenbar weiterhin per Microcode patchen lassen. Als sie erstmals auftauchten, gab es die Sorge, man müsse physische Chips in großem Umfang entsorgen und ersetzen; aber war das jemals tatsächlich nötig?
Soweit ich weiß, ließen sich alle Bugs mit einer Kombination aus Software- und Microcode-Änderungen entschärfen, teils mit gewissen Performance-Kosten. Keiner der Bugs erforderte neues Silizium. Eine Ausnahme wären Fälle wie frühe AMD-SEV-Versionen, die tatsächlich nicht patchbar ausgebrochen werden konnten
Natürlich gibt es auch geteilte Varianten wie die T-Serie von AWS, und andere Clouds dürften Ähnliches haben, aber ich nehme an, dass man zusätzliche „Flushes“ zwischen Nutzern einbauen kann, um Leaks zwischen Tenants zu verhindern
Natürlich sind Leaks zwischen Prozessen innerhalb eines einzelnen Tenants ein Problem, ob in der Cloud oder on-premises; letztlich muss man entscheiden, wie sehr man darauf vertraut, dass Prozesse auf der eigenen Maschine nicht bösartig werden
Code aus unterschiedlichen Sicherheitsdomänen auf demselben physischen Prozessorkern auszuführen, scheint nicht zuverlässig machbar zu sein, und wir sollten damit wohl aufhören
Die üblichen Fälle sind im Grunde nur zwei: VMs und JavaScript
VMs müssen aufgegeben werden. Bestimmte Cores müssen bestimmten VMs oder zumindest bestimmten Kunden dediziert zugewiesen werden
JavaScript ist etwas schwieriger
In keinem Fall sollte man im Normalfall Performance opfern
Die IOPU würde die übrige Hardware des Systems koordinieren und müsste nicht besonders leistungsfähig sein
Die SPU wäre auf schnell laufenden skalaren Code und verzweigungsreichen Code optimiert
Die SPU bräuchte nur minimale Sicherheit, etwa um beim Laden aus dem RAM kein beliebiges Memory lesen zu können. Da immer nur ein Programm gleichzeitig läuft, wäre spekulative Ausführung kein Problem
Auf meinem System gibt es nur wenige Programme, die viel Rechenleistung brauchen, und selbst dann nur sporadisch, sodass es auf der SPU wohl nicht viele Task-Wechsel gäbe
Solche CPU-Angriffe zeigen, dass sichere Timesharing-Systeme, bei denen Nutzer beliebigen Maschinencode ausführen, nicht mehr realistisch sind
Timesharing wird dort weiter bestehen, wo man einander vertraut, etwa wenn Mitarbeitende desselben Projekts eine Build-Maschine teilen
Die Vorstellung, man könne verhindern, dass zwei auf einem Computer ausgeführte Programme einander ausspähen, ist auf einem ähnlichen Niveau
Intel-Sicherheitshinweis: https://www.intel.com/content/www/us/en/developer/articles/t...
Linux-Kernel-Merge: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
Dass nur bis zur 11. Generation betroffen ist, lässt mich zweifeln, dass Intel zum Zeitpunkt der Offenlegung dieser Schwachstelle noch früh genug dran war, um sie in der 12. Generation gezielt zu beheben. Vielleicht wurde sie also zufällig mitbehoben, als etwas anderes geändert wurde.
Im Paper steht: „Intel hat erklärt, dass neuere CPUs wie Alder Lake, Raptor Lake und Sapphire Rapids nicht betroffen sind. Das scheint allerdings eher ein Nebeneffekt der deutlich veränderten Architektur zu sein als eine Sicherheitsmaßnahme.“
Am Ende wurde es also zufällig behoben, oder zumindest funktioniert dieser konkrete Exploit nicht mehr.
Laut FAQ waren Nutzer mindestens 9 Jahre lang dieser Schwachstelle ausgesetzt, weil betroffene Prozessoren seit 2014 existierten.
Erstaunlich ist, dass so eine Schwachstelle jahrelang unbemerkt bleiben kann, es dann aber nur zwei Wochen dauert, bis jemand einen Exploit codet.
Siehe auch den LWN-Artikel: https://lwn.net/Articles/940783/
Unter Linux wird als Gegenmaßnahme für dieses Problem auf CPUs ohne aktualisierten Microcode AVX vollständig deaktiviert. Nach meinem Maßstab ist das ziemlich drastisch und dürfte deutlich spürbar sein. Jetzt möchte ich herausfinden, ob ich aktualisierten Microcode bekommen kann.
gather_data_sampling=forceverwendet wird. Standardmäßig bleibt AVX aktiv, und das System wird als verwundbar markiert.Aus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin... geht hervor:
Wenn
gather_data_sampling=forceangegeben wird, wird, sofern möglich, die Microcode-Gegenmaßnahme verwendet; auf betroffenen Systemen, deren Microcode nicht so aktualisiert wurde, dass diese Gegenmaßnahme enthalten ist, wird AVX deaktiviert.Zur Einordnung: Ich arbeite bei Intel an Linux. Es ist gut möglich, dass ich die Dokumentation und Changelogs, die Leute verwirren, geschrieben oder überarbeitet habe.
[ 0.000000] microcode: updated early: 0x27 -> 0x28, date = 2019-11-12Ich nutze Haswell. Gibt es eine Liste, welche CPUs aktualisierten Microcode erhalten? Schade.
Erwähnenswert ist auch, dass GCP dieses Problem gepatcht hat: https://cloud.google.com/support/bulletins#gcp-2023-024
Daten und Instanzen von AWS-Kunden sind von diesem Problem nicht betroffen, und Kunden müssen nichts unternehmen.
AWS hat eine Infrastruktur entworfen und implementiert, die Schutz vor dieser Problemklasse bietet. Amazon-EC2-Instanzen, einschließlich Lambda, Fargate und anderer von AWS verwalteter Compute- und Container-Services, schützen Kundendaten durch Microcode- und softwarebasierte Gegenmaßnahmen vor GDS.
Der Performance-Einbruch ist enorm. Es werden bis zu 50 % behauptet, und 70 % der aktuellen Intel-Prozessoren sollen betroffen sein.
https://access.redhat.com/solutions/7027704
Die Performance-Auswirkungen beschränken sich auf Anwendungen, die die von Intel Advanced Vector Extensions (AVX2 und AVX-512) bereitgestellten Gather-Instruktionen sowie die CLWB-Instruktion verwenden. Die tatsächliche Performance-Auswirkung hängt davon ab, wie stark eine Anwendung diese Instruktionen nutzt.
Wenn Nutzer nach einer gründlichen Risikoanalyse entscheiden, die Gegenmaßnahmen abzuschalten, etwa weil das System nicht mandantenfähig ist und keinen nicht vertrauenswürdigen Code ausführt, können sie die Gegenmaßnahmen deaktivieren.
Nach dem Einspielen der Microcode- und Kernel-Updates kann man die Gegenmaßnahme abschalten, indem man
gather_data_samping=offzur Kernel-Kommandozeile hinzufügt. Alternativ kann man mitmitigations=offalle Gegenmaßnahmen gegen spekulative CPU-Ausführung, einschließlich GDS, deaktivieren.„Bis zu“-Behauptungen sollte man immer mit Skepsis betrachten.
Im NES steckte ein Chipsatz, in dem ein kompletter 6502 begraben war, und für den Preis einer Pizza kann man einen Rockchip-ARM-Chip kaufen, der gemischte Kerne auf dem Die hat. Vielleicht müssen Chip-Hersteller nicht jeden Edge Case für immer lösen, und könnten diese Abmilderung von Seitenkanalangriffen an uns zurückgeben, die wir die Chips verschlingen.
Statt SMT zu einer Alles-an-oder-alles-aus-Entscheidung zu machen: Wie wäre es, nicht vertrauenswürdigen Code auf die „schlechten Kerne“ zu schicken und Kunden „beweisen“ zu lassen, dass er auf Kerne mit SMT hochgestuft werden darf?
Niemand will einen Chip kaputtmachen, auf dem extrem kritische Payroll-Jobs laufen, bei denen niemand etwas anderes aufs Board setzen kann. Aber dazu gezwungen zu werden, Dinge zu taggen, die sicher unter SMT laufen dürfen, und andernfalls an sicherere Kerne gebunden zu werden, wäre in Ordnung.
Ein Praktikant, der überhaupt keine Ahnung hat, was das ist, könnte bei der Suche lernen, worum es bei diesem Angriffsvektor wirklich geht, und einen Abwehrplan ausarbeiten.
Bin ich der Komische?
Performance-Kerne × Effizienz-Kerne sind möglich.
Aber niemand wird derjenige sein wollen, der vertrauenswürdige Kerne × „schlechte“ nicht vertrauenswürdige Kerne vorschlägt. Egal wie viele Vorteile es hat, es wird im Diskurs von „das schürt Verunsicherung“ untergehen. So ist das Leben.