Lahmer x86-Befehl hebelt triviale Schutzfunktion aus

  1. Lahmer x86-Befehl hebelt triviale Schutzfunktion aus

    • Offene SMM-Lücken

    • Timeout ausgesessen

    • SMM angreifbar

Der besondere CPU-Betriebsmodus System Management Mode (SMM) von x86-Prozessoren beschäftigt Sicherheitsforscher seit Jahrzehnten. Sie fördern immer wieder neue SMM-Schwachstellen zutage. Der SMM ist ein beliebtes Ziel von Angreifern, weil Code, der in diesem Betriebsmodus läuft, maximale Zugriffsrechte hat.

Auf der Def Con 34 führte der Sicherheitsforscher Christopher Domas alias xoreaxeaxeax vor, wie sich eine von mehreren Schutzfunktionen des SMM aushebeln lässt. Dieser Schutz besteht darin, dass stets sämtliche Kerne eines Prozessors gemeinsam in den SMM wechseln müssen. Die Idee dahinter: Wenn entweder alle Kerne oder kein einziger im SMM laufen, dann bleibt kein Kern übrig, auf dem Malware laufen kann, um SMM-Funktionen anzugreifen.

Doch mit einem Proof-of-Concept (PoC) weist Domas die Schwachstelle „smiiiiiiiiiiiiiiii“ nach. Allerdings muss der Angriffscode dabei für unterschiedliche CPU-Typen maßgeschneidert sein.

Offene SMM-Lücken

Die Schwachstelle „smiiiiiiiiiiiiiiii“ ist für sich genommen kein Angriff und hat auch keine CVE-Nummer. Christopher Domas weist jedoch darauf hin, dass mehr als 100 SMM-Schwachstellen bekannt sind, von denen sich manche nun möglicherweise per smiiiiiiiiiiiiiiii für Angriffe missbrauchen lassen. Dafür eignen sich im Prinzip Angriffe nach dem Konzept TOCTOU: Time-of-Check to Time-of-Use.

Der SMM ist unverzichtbar, beispielsweise um Energiesparfunktionen (Power Management) der Hardware zu steuern.

Weil die Risiken des SMM seit Jahren bekannt sind, schränken aktuelle Betriebssysteme und UEFI-BIOS-Versionen den Zugriff darauf ein. Beispielsweise verlangt Microsoft in den Richtlinien für Computer mit Windows-Logo, dass das UEFI-BIOS eine Tabelle mit zulässigen Adressbereichen für SMM-Zugriffe enthält. Andere Zugriffe blockiert das System.

Timeout ausgesessen

Der Code, mit dem das Betriebssystem die CPU in den SMM umschaltet, läuft auf irgendeinem CPU-Kern, beispielsweise Core 1. Damit nun auch alle anderen Kerne in den SMM wechseln, schickt dieser Core 1 eine entsprechende Aufforderung an alle anderen Kerne, beispielsweise auch Core 0. Doch diese SMM-Aufforderung läuft nach 1 Sekunde ab. Diese Wartefrist (Timeout) dient dazu, dass die anderen Kerne aktuelle Aufgaben noch erledigen können.

Die anderen CPU-Kerne dürfen dabei keine neuen Maschinenbefehle annehmen, sondern nur den gerade laufenden zu Ende bringen. Das dauert normalerweise weniger als eine Millisekunde, selbst wenn ein Befehl mehrere Tausend Taktzyklen lang läuft. Denn drei bis vier Gigahertz Taktfrequenz entsprechen drei bis vier Milliarden Taktzyklen pro Sekunde beziehungsweise drei bis vier Millionen pro Millisekunde.

Chris Domas missbraucht diesen Timeout: Er suchte einen Assembler-Befehl, der extrem lange läuft. Dazu rief er den nicht ganz ernstgemeinten Wettbewerb „Hall of Shame der (x86-)Assemblerbefehle“ ins Leben. Spitzenreiter ist der unter bestimmten Randbedingungen aufgerufene Befehl fxrstor64, der auf einem AMD Ryzen 7 5800H mehr als 74 Milliarden CPU-Zyklen fraß, was mehr als 23 Sekunden dauerte.

SMM angreifbar

Der PoC von Domas besteht also grob gesagt darin, dass er zuerst einen beliebigen CPU-Kern mit einem Assemblerbefehl beschäftigt, der mehr als eine Sekunde lang läuft. Sofort danach wird ein anderer CPU-Kern angewiesen, in den SMM zu wechseln, wodurch dieser den erstgenannten Kern auffordert, das ebenfalls zu tun. Der zweite Kern wartet nun auf den ersten.

Nach einer Sekunde beendet der zweite Kern seine Wartezeit, erledigt seine Aufgabe im SMM und wechselt in den normalen Betriebsmodus zurück. Der erste Kern jedoch schaltet in den SMM um, sobald seine „Beschäftigungsaufgabe“ beendet ist. Damit tritt die fatale Situation ein, dass ein Kern im SMM läuft, mindestens ein weiterer jedoch nicht. Auf letzterem könnte nun Malware laufen.

Christopher Domas veröffentlichte 2017 das Fuzzing-Tool Sandsifter zur Untersuchung undokumentierter Befehle von x86-Prozessoren. Damit entdeckte er 2018 in alten VIA-Prozessoren die Sicherheitslücke Rosenbridge. Gemeinsam mit seiner Frau Stephanie Domas betreibt er das Unternehmen Dazzle Cat Duo.

(ciw)