iX 3/2019
S. 130
Praxis
CPU-Sicherheit
Aufmacherbild

Microcode-Updates als Schutz vor Spectre & Co.

Nachimpfung

Der Schutz vor Seitenkanalangriffen wie Spectre v2, v3a/v4 oder L1TF erfordert neben Betriebssystem-Patches auch ein Update des CPU-Microcodes. Die Aktualisierung des Microcodes über das Betriebssystem ist dabei einfacher als über ein BIOS-Update.

Eine neue Art von Prozessorsicherheitslücken erschütterte 2018 die IT-Welt. Seitenkanalangriffe wie Spectre und Meltdown ermöglichen Prozessen das Auslesen von Speicherbereichen, auf die sie keinen Zugriff haben sollten [1]. Die Ursache liegt im Design der modernen, performanceoptimierten CPUs, die zu Idle-Zeiten spekulativ Code ausführen. Manche der Bugs lassen sich per Software-Update lösen. Andere, wie Spectre v2/v3a/v4 oder L1TF (Level 1 Terminal Fault), erfordern jedoch neue CPU-Funktionen wie IBRS (Indirect Branch Restricted Speculation) und IBPB (Indirect Branch Prediction Barrier). Neue Software alleine reicht hier nicht aus.

Glücklicherweise hatte Intel in den 90er-Jahren nach dem berühmten FDIV-Bug im Pentium mit dem Pentium Pro (P6) die Möglichkeit eingeführt, den Microcode – vereinfacht die Firmware der CPU – nachträglich zu aktualisieren. Da Prozessoren nur über flüchtigen Speicher verfügen, muss man ein solches Microcode-Update möglichst früh bei jedem Bootvorgang erneut einspielen. Dazu bieten sich auf den ersten Blick zwei Wege an, die dieser Artikel für unterschiedliche Plattformen beleuchtet: über das BIOS oder über das Betriebssystem.

Sag mir, CPU, wie du heißt

Abhängig vom jeweiligen Prozessortyp ist immer ein eigener Microcode erforderlich. Umgangssprachlich wird ein Prozessortyp über dessen CPUID identifiziert. Genau genommen handelt es sich dabei um die „Processor Signature“, die sich über den CPUID-Opcode abfragen lässt. Für einen Intel Xeon E3-12xx v6 lautet diese ID beispielsweise 0x906e9. Weitere Details zur CPUID und zur Abfrage unter den verschiedenen Betriebssystemen liefert der gleichnamige Textkasten.

In der Microcode Revision Guidance gibt Intel eine Übersicht der aktuellen Microcode-Versionen für die unterschiedlichen CPUs (Abb. 1).

Intel pflegt seit dem Bekanntwerden der ersten Seitenkanalgefahren eine Übersicht aktueller Versionen für die jeweiligen CPUIDs in der Microcode Revision Guidance (Abbildung 1, [2]). Für die CPUID 0x906e9 ist die neueste Microcode-Update-Revision beispielsweise 0x8E. Im Vorjahr gab es (abgesehen von den ersten Updates, die Intel kurz nach Veröffentlichung aufgrund von Kompatibilitätsproblemen wieder zurückzog) zwei relevante Microcode-Releases: eine erste im März zum Schutz vor Spectre v2 (INTEL-SA-00088) sowie eine zweite im August zum Schutz vor Spectre v3a und v4 (INTEL-SA-00115) und L1TF (INTEL-SA-00161).

Immer wenn neue Microcodes verfügbar sind, haben Mainboard-Hersteller die Möglichkeit, BIOS-Updates mit den Neuerungen bereitzustellen. Welche Versionen ein BIOS-Image enthält, kann man als Anwender einfach mit dem MC Extractor von Plato Mavropoulos überprüfen [2]. Jedoch stellen nicht immer alle Mainboard-Hersteller sofort BIOS-Updates bereit. Derartige Aktualisierungen erfordern außerdem bei Integratoren ausführliche Tests, etwa um Kompatibilitätsprobleme mit Erweiterungskarten wie RAID-Controllern oder Netzwerkkarten auszuschließen. Zudem ist das Einspielen eines BIOS-Updates für den Anwender aufwendiger als das Einspielen von Aktualisierungen für das Betriebssystem. Genügend Argumente also, den Weg über Letzteres zu favorisieren.

Linux

Intel stellt Microcode-Updates für Linux-Umgebungen im Download-Center bereit [2]. Die Entwickler von Distributionen wie Debian, Ubuntu, SUSE, Red Hat et cetera integrieren diese in ihre Repositories und liefern sie damit wie andere Betriebssystem-Updates aus. Im Vorjahr änderte Intel die Lizenzbedingungen und untersagte die Veröffentlichung von Benchmark-Ergebnissen im Zusammenhang mit den Microcode-Updates. Während die meisten Linux-Distributoren die Updates dennoch übernahmen, weigerten sich die Debian-Entwickler, sie unter dieser Lizenz zu verteilen. Intel lenkte am 23. August ein und vereinfachte die Lizenz. Seither gibt es die Updates als Paket intel-microcode auch wieder bei Debian und Ubuntu.