Systemverwaltungsmodus - System Management Mode

System Management Mode ( SMM , manchmal auch als Ring -2 in Bezug auf die Schutzringe ) ist ein Betriebsmodus der x86 Zentralprozessoreinheiten (CPUs) , bei dem alle normalen Ausführung, einschließlich des Betriebssystems , aufgehängt ist. Ein alternatives Softwaresystem, das sich normalerweise in der Firmware des Computers befindet , oder ein hardwareunterstützter Debugger , wird dann mit hohen Privilegien ausgeführt.

Es wurde erstmals mit dem Intel 386SL veröffentlicht . Während für SMM anfangs spezielle SL-Versionen erforderlich waren, integrierte Intel SMM 1993 in seine Mainline-486- und Pentium-Prozessoren. AMD implementierte Intels SMM 1991 mit den Am386- Prozessoren. Es ist in allen späteren Mikroprozessoren der x86- Architektur verfügbar .

Einige ARM- Prozessoren enthalten auch den Verwaltungsmodus für die Systemfirmware (z. B. UEFI ).

Betrieb

SMM ist ein spezieller Betriebsmodus für systemweite Funktionen wie Energieverwaltung, Systemhardwaresteuerung oder proprietärer OEM-Code. Es ist nur für die Verwendung durch die Systemfirmware ( BIOS oder UEFI ), nicht durch Anwendungssoftware oder allgemeine Systemsoftware vorgesehen. Der Hauptvorteil von SMM besteht darin, dass es eine eindeutige und leicht isolierte Prozessorumgebung bietet, die für das Betriebssystem oder die Ausführungs- und Softwareanwendungen transparent arbeitet.

Um Transparenz zu erreichen, erlegt SMM bestimmte Regeln auf. Der SMM kann nur über SMI (System Management Interrupt) eingegeben werden. Der Prozessor führt den SMM-Code in einem separaten Adressraum (SMRAM) aus, der durch die Firmware für andere Betriebsarten der CPU unzugänglich gemacht werden muss .

Der Systemverwaltungsmodus kann bis zu 4 GB Speicher als riesigen Realmodus adressieren . In x86-64- Prozessoren kann SMM >4 GB Speicher als Real-Adress-Modus adressieren.

Verwendungszweck

Ursprünglich wurde der Systemverwaltungsmodus für die Implementierung von Energieverwaltungs- und Hardwaresteuerungsfunktionen wie Advanced Power Management (APM) verwendet. BIOS-Hersteller und OEMs haben sich jedoch bei neueren Funktionen wie Advanced Configuration and Power Interface (ACPI) auf SMM verlassen .

Einige Anwendungen des Systemverwaltungsmodus sind:

Der Systemverwaltungsmodus kann auch missbraucht werden, um hochprivilegierte Rootkits auszuführen , wie bei Black Hat 2008 und 2015 gezeigt wurde.

Eingabe von SMM

SMM wird über den SMI (System Management Interrupt) eingegeben, der aufgerufen wird durch:

  • Signalisierung der Motherboard-Hardware oder des Chipsatzes über einen bestimmten Pin SMI# des Prozessorchips. Dieses Signal kann ein unabhängiges Ereignis sein.
  • Software-SMI, ausgelöst durch die Systemsoftware über einen E/A-Zugriff auf eine von der Motherboard-Logik als speziell erachtete Stelle (Port 0B2h ist gemeinsam).
  • Ein E/A-Schreibvorgang an eine Stelle, an der die Firmware den Prozessorchip zum Handeln aufgefordert hat.

Durch Eingabe von SMM sucht der Prozessor nach dem ersten Befehl an der Adresse SMBASE (SMBASE-Registerinhalt) + 8000H (standardmäßig 38000H) unter Verwendung der Register CS = 3000H und EIP = 8000H. Der CS-Registerwert (3000H) ist auf die Verwendung von Realmodus-Speicheradressen durch den Prozessor im SMM zurückzuführen. In diesem Fall wird der CS intern am rechten Ende mit 0H angehängt.

Probleme

Das Betriebssystem kann das SMI nicht überschreiben oder deaktivieren. Aufgrund dieser Tatsache ist es ein Ziel für bösartige Rootkits, einschließlich der "Implantate" der NSA, die individuelle Codenamen für bestimmte Hardware haben, wie SOUFFLETROUGH für Juniper Networks- Firewalls, SCHOOLMONTANA für J-Serie-Router desselben Unternehmens, DEITYBOUNCE für DELL oder IRONCHEF für HP Proliant- Server.

Unsachgemäß entwickelter und unzureichend getesteter SMM-BIOS-Code kann falsche Annahmen treffen und nicht richtig funktionieren, wenn einige andere x86-Betriebsmodi wie PAE oder 64-Bit- Long-Modus unterbrochen werden . Laut der Dokumentation des Linux-Kernels waren solche fehlerhaften Implementierungen der USB-Legacy-Unterstützung um 2004 eine häufige Ursache für Abstürze, beispielsweise auf Motherboards, die auf dem Intel E7505- Chipsatz basieren .

Da der SMM-Code (SMI-Handler) von der Systemfirmware ( BIOS ) installiert wird , können das Betriebssystem und der SMM-Code Erwartungen bezüglich inkompatibler Hardwareeinstellungen haben, wie z. B. unterschiedliche Vorstellungen davon, wie der Advanced Programmable Interrupt Controller (APIC) sein sollte erstellen.

Operationen in SMM nehmen den Anwendungen, dem Betriebssystemkernel und dem Hypervisor CPU-Zeit weg , wobei die Auswirkungen für Multicore-Prozessoren verstärkt werden, da jedes SMI dazu führt, dass alle Kerne den Modus wechseln. Mit dem Ein- und Ausschalten von SMM ist auch ein gewisser Overhead verbunden, da der CPU-Zustand im Speicher (SMRAM) gespeichert werden muss und alle Write-Back-Caches geleert werden müssen. Dies kann das Echtzeitverhalten zerstören und dazu führen, dass Uhr-Ticks verloren gehen. Die Windows- und Linux-Kernel definieren einen 'SMI-Timeout', der einen Zeitraum festlegt, innerhalb dessen SMM-Handler die Kontrolle an das Betriebssystem zurückgeben müssen, oder es wird ' hängen ' oder ' abstürzen '.

Der SMM kann das Verhalten von Echtzeitanwendungen mit eingeschränkten Timing-Anforderungen stören .

Ein Logikanalysator kann erforderlich sein, um zu bestimmen, ob die CPU in SMM eingetreten ist (Überprüfung des Zustands des SMIACT#-Pins der CPU). Um den SMI-Handler-Code wiederherzustellen, um ihn auf Fehler, Schwachstellen und Geheimnisse zu analysieren, ist ein Logikanalysator oder eine Demontage der Systemfirmware erforderlich.

Siehe auch

Verweise

Weiterlesen