Massive Sicherheitslücke in Intel-CPUs (Update: AMD, ARM, Bugfixes)
Seit der Meldung am Dienstag haben sich die Ereignisse zu diesem Thema überschlagen. Dem Vernehmen nach ist die Nachricht über “den Bug” zu früh an die Öffentlichkeit gelangt – mutmaßlich über die offen betriebene Linux Kernel-Entwicklung. Stattdessen sollte es erst am 9.1.2018 eine gemeinsame Stellungnahme von Intel, AMD und ARM geben. Daher wollten wir eigentlich keine auf Spekulationen fußende Meldung mehr dazu schreiben bis dahin, jedoch sahen sich die Beteiligten wegen des Bekanntwerdens offenbar dazu gezwungen, früher aktiv zu werden. Daher haben wir hier nun alle wichtigen Fakten zusammengetragen.
1. Was ist das für ein Bug?
Bei dem bekannt gewordenen Fehler handelt es sich genau genommen um zwei, die sogar Namen erhalten haben: Meltdown und Spectre. Von letzterem sind zwei Szenarien möglich, weshalb es sich insgesamt um drei separat zu betrachtende Fehler handelt.
- Variant 1 “Spectre 1” : bounds check bypass (CVE-2017–5753)
- Variant 2 “Spectre 2” : branch target injection (CVE-2017–5715)
- Variant 3 “Meltdown” : rogue data cache load (CVE-2017–5754)
Inzwischen haben die beiden sogar eine Webseite erhalten, auf der Informationen gesammelt werden.
Gemein ist allen dreien, dass durch leistungssteigernde Features der CPU – Out-of-Order-Execution, Branch Prediction und Speculative-Execution – die Trennung der Daten zwischen Prozessen und gar Rings nicht mehr 100-prozentig gewährleistet ist. Mit trickreichen Ansätzen ist es möglich, Daten eines anderen Prozesses auszulesen, was selbstredend insbesondere bei Anbietern von Cloud-Diensten ein GAU ist, wo sich viele VMs auf einer Maschine tummeln, denn der Trick funktioniert über VM-Grenzen hinweg. Da in modernen Betriebssystemen Kernel-Speicher in den User-Space gemappt wird – ebenfalls zur Leistungssteigerung – kann so auch in den höher privilegierten Systemspeicherbereich vorgedrungen werden, um Rechte zu ergattern, Passwörter auszulesen oder Daten zu stehlen.
2. Wer hat die Bugs entdeckt und wann?
Ein Forscherteam bei Google ist offenbar bereits im Juni 2017 auf die Probleme gestoßen und hat die Hardware- und Betriebssystem-Hersteller informiert. Eine sehr ausführliche Analyse ist hier zu finden. In Hackerkreisen ist das Problem mit den Side-Channel-Attacken über Cache und TLB allerdings schon weit länger bekannt, wie eine Veröffentlichung auf der Black Hat USA 2016 zeigt.
3. Welche Hersteller sind betroffen?
Intel ist mit seinen Prozessoren im Grunde seit der Core-Reihe von allen drei Fehlern betroffen und im Atom-Segment, seit mit Baytrail auf OoO-Execution umgestellt wurde. Interessanterweise möchte Intel jedoch nicht von einem Bug sprechen:
“No. This is not a bug or a flaw in Intel products. These new exploits leverage data about the proper operation of processing techniques common to modern computing platforms, potentially compromising security even though a system is operating exactly as it is designed to. Based on the analysis to date, many types of computing devices — with many different vendors’ processors and operating systems — are susceptible to these exploits. ”
Laut Intel sind folgende Produkte betroffen:
Intel® Core™ i3 processor (45nm and 32nm)
Intel® Core™ i5 processor (45nm and 32nm)
Intel® Core™ i7 processor (45nm and 32nm)
Intel® Core™ M processor family (45nm and 32nm)
2nd generation Intel® Core™ processors
3rd generation Intel® Core™ processors
4th generation Intel® Core™ processors
5th generation Intel® Core™ processors
6th generation Intel® Core™ processors
7th generation Intel® Core™ processors
8th generation Intel® Core™ processors
Intel® Core™ X‑series Processor Family for Intel® X99 platforms
Intel® Core™ X‑series Processor Family for Intel® X299 platforms
Intel® Xeon® processor 3400 series
Intel® Xeon® processor 3600 series
Intel® Xeon® processor 5500 series
Intel® Xeon® processor 5600 series
Intel® Xeon® processor 6500 series
Intel® Xeon® processor 7500 series
Intel® Xeon® Processor E3 Family
Intel® Xeon® Processor E3 v2 Family
Intel® Xeon® Processor E3 v3 Family
Intel® Xeon® Processor E3 v4 Family
Intel® Xeon® Processor E3 v5 Family
Intel® Xeon® Processor E3 v6 Family
Intel® Xeon® Processor E5 Family
Intel® Xeon® Processor E5 v2 Family
Intel® Xeon® Processor E5 v3 Family
Intel® Xeon® Processor E5 v4 Family
Intel® Xeon® Processor E7 Family
Intel® Xeon® Processor E7 v2 Family
Intel® Xeon® Processor E7 v3 Family
Intel® Xeon® Processor E7 v4 Family
Intel® Xeon® Processor Scalable Family
Intel® Xeon Phi™ Processor 3200, 5200, 7200 Series
Intel® Atom™ Processor C Series
Intel® Atom™ Processor E Series
Intel® Atom™ Processor A Series
Intel® Atom™ Processor x3 Series
Intel® Atom™ Processor Z Series
Intel® Celeron® Processor J Series
Intel® Celeron® Processor N Series
Intel® Pentium® Processor J Series
Intel® Pentium® Processor N Series
Prinzipiell sind jedoch alle Hersteller “verdächtig”, die sich der Features Speculative Execution und Out-of-Order-Execution bedienen. Die Aussage eines Entwicklers vom ersten Tag, AMD sei nicht betroffen, bezog sich nur auf einen der drei Fehler. Inzwischen hat AMD in einer offiziellen Stellungnahme eingeräumt, dass auch die eigenen Prozessoren teilweise betroffen sind, insbesondere von Spectre 1. Bei Google hat man in diesem Zusammenhang einen AMD PRO A8-9600 als betroffen identifiziert, allerdings nur bei non-Default-Einstellungen (eBPF JIT is on; siehe Google-Dokument). Salopp gesprochen muss man den Bug durch Änderung der Standardeinstellungen mutwillig aktivieren. Bei Spectre 2 hingegen läge die Wahrscheinlichkeit einer Ausnutzung bei “nahe Null”, von Meltdown sei man aufgrund der von Intel unterschiedlichen Architektur gar nicht betroffen.
4. Wie geht es weiter?
Microsoft hat sein Kumulatives Updates für Januar 2018 um eine Woche vorgezogen. In KB4056892 (für Windows 10) bzw. KB4056897 (für Windows 7) und KB4056898 (für Windows 8.1) sind bereits erste Fixes enthalten. Allerdings werden sie noch nicht allen Windows-Nutzern angeboten, da einige Antiviren-Scanner von Drittherstellern inkompatibel sind mit dem Kernel-Fix. Hier wird das Update erst eingespielt wenn eine aktualisierte Version des Virenschutzes gefunden wurde, weshalb Microsoft davon abrät, das Update manuell einzuspielen wenn es nicht automatisch über das Windows-Update angeboten wurde.
Bei Linux wird der Kernel 4.15 offiziell mit Fixes veröffentlicht werden. Es gibt jedoch auch Backports in den Reihen 4.14 und 4.4. Bei Apple wird seit macOS 10.13.2 an der Problematik gearbeitet, für 10.13.3 sind weitere Fixes geplant. Die großen Cloud-Anbieter sind derzeit dabei, ihre Systeme abzusichern, was allerdings nicht immer reibungslos zu funktionieren scheint.
Allerdings gilt das offenbar derzeit nur für Meltdown; relativ leicht auszunutzen, aber auch relativ leicht auf Kernel-Ebene und damit an zentraler Stelle zu beheben. Spectre ist anscheinend hartnäckiger. Zwar sei eine Ausnutzung schwieriger, jedoch müssen hier auch die Programme angepasst werden. Letztendlich behoben werden können die Lücken hier wohl nur durch Änderungen in künftiger Hardware.
5. Wie wirken sich die Bugfixes auf die Leistung aus?
Bei den bisher veröffentlichten Fixes, die vorwiegend Meltdown adressieren, ist der Effekt abhängig vom Einsatz. Spiele in UHD sind so gut wie nicht betroffen, da das System im GPU-Limit hängt. Bei niedrigerer Auflösung, wo sich die Last hin zu CPU und Plattform verschiebt, können die Unterschiede größer werden. ComputerBase und HardwareLuxx haben bei Full-HD in niedrigen Presets bis zu 5 % Leistungsverlust gemessen; auf Intel-Systemen wohlgemerkt. Auf AMD-Systemen wird das Kumulative Update zwar ebenfalls eingespielt, soll sich auf die Leistung jedoch nicht auswirken.
Stärker betroffen sind offenbar Serverbetreiber, insbesondere Datenbanken. Hier kann der Leistungsverlust durch die Gegenmaßnahmen bis zu 25 % betragen.
Originalmeldung vom 03.01.2018
Bereits in den letzten Wochen musste Intel Negativschlagzeilen wegen Sicherheitslücken im Management Engine Interface über sich ergehen lassen. Doch gestern hat The Register eine Welle an Nachrichten angestoßen, die weit über die MEI-Problematik hinausreichen. In Intel-Prozessoren mit Support für x86-64 befindet sich offenbar eine gravierende Sicherheitslücke, die es Angreifern erlaubt, auf prozessfremde Speicherbereiche zuzugreifen. Da es sich dem Vernehmen nach um einen Hardware-Bug handeln soll, der nicht mit einem Microcode-Update gefixt werden kann, ist die Bedrohungssituation potenziell erheblich, schließlich stecken in der überwiegenden Mehrzahl der x86-64-Systeme Intel-Prozessoren. Der Bug ist unabhängig vom Betriebssystem – Windows, Linux und MacOS sind betroffen.
PostgreSQL SELECT 1 with the KPTI workaround for Intel CPU vulnerability https://t.co/N9gSvML2Fo
Best case: 17% slowdown
Worst case: 23%— The Register (@TheRegister) 2. Januar 2018
AMD-Prozessoren sind laut Aussage eines AMD-Entwicklers nicht betroffen:
AMD processors are not subject to the types of attacks that the kernel page table isolation feature protects against. The AMD microarchitecture does not allow memory references, including speculative references, that access higher privileged data when running in a lesser privileged mode when that access would result in a page fault.
Indirekt betrifft der Bug weit mehr als die PC-Nutzer mit Intel-Prozessoren, schließlich stecken auch in den meisten Cloud-Servern Intel-Prozessoren, auf denen Smartphone-Nutzer ihre Konten hinterlegen, ebenso wie in den Cloud-Computing-Diensten bei Amazon, Microsoft (Azure) und vergleichbaren Angeboten. Auch die meisten Firmenserver dürften von Intel Xeon-Prozessoren befeuert sein.
Bekannt ist der Bug anscheinend schon länger, da die Linux Kernel-Entwickler ebenso wie die Fast-Ring-Entwickler bei Microsoft bereits einen Patch parat haben. Bei Microsoft ist der Patch anscheinend seit 19. Dezember im Fast-Ring ab Version 17035 aktiv. Bei Linux ist der (K)PTI-Fix ab Linux-Kernel 4.14.11 aktiv, allerdings wird der Fix hier auch bei AMD-Prozessoren aktiviert. Ab 4.14.12 soll er korrekterweise nur bei Intel-Prozessoren aktiviert werden, denn der Fix kostet ein wenig Leistung, da der TLB (Translation-Lookaside-Buffer) nicht mehr so effizient arbeiten kann; je nach Workload werden mal 7 Prozent, mal 25 Prozent Leistungseinbuße vermeldet. Neben dem Workload an sich ist der Grad der Leistungseinbuße offenbar auch davon abhängig, ob der Prozessor den TLB leeren muss bei einem Wechsel der Pagetable oder nicht. Neuere Intel-Prozessoren müssen das dank process-context identifiers (PCIDs) nicht, ältere wie Sandy Bridge schon.
Windows 17035 Kernel ASLR/VA Isolation In Practice (like Linux KAISER). First screenshot shows how NtCreateFile is not mapped in the kernel region of the user CR3. Second screenshot shows how a ’shadow’ kernel trap handler, is (has to be). pic.twitter.com/7PriLIJHe1
— Alex Ionescu (@aionescu) 14. November 2017
Da AMD von dem Bug nicht betroffen ist, obwohl x86-64 seinerzeit von AMD entwickelt worden war, lässt darauf schließen, dass der Fehler nicht im Befehlssatz an sich steckt, sondern in der speziellen Implementierung durch Intel.
Quellen: