DE102021109189B4 - Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle - Google Patents

Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle Download PDF

Info

Publication number
DE102021109189B4
DE102021109189B4 DE102021109189.6A DE102021109189A DE102021109189B4 DE 102021109189 B4 DE102021109189 B4 DE 102021109189B4 DE 102021109189 A DE102021109189 A DE 102021109189A DE 102021109189 B4 DE102021109189 B4 DE 102021109189B4
Authority
DE
Germany
Prior art keywords
host processor
verification check
response
page table
notification
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102021109189.6A
Other languages
English (en)
Other versions
DE102021109189A1 (de
Inventor
Geoffrey Ndu
Nigel Edwards
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of DE102021109189A1 publication Critical patent/DE102021109189A1/de
Application granted granted Critical
Publication of DE102021109189B4 publication Critical patent/DE102021109189B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Storage Device Security (AREA)

Abstract

Computersystem (100, 200), das Folgendes umfasst:mindestens einen Host-Prozessor (120, 230);Speicher (234), der mit dem mindestens einen Host-Prozessor (120, 230) verbunden ist; undein von dem mindestens einen Host-Prozessor (120, 230) getrenntes Gerät (160, 220), das auf den Speicher (234) zugreifen kann,wobei der mindestens eine Host-Prozessor (120, 230) ein Seitentabellen-Basisregister (232) enthält, wobei der mindestens eine Host-Prozessor (120, 230) dazu dient:Firmware auszuführen, um dem Gerät (160, 220) eine Benachrichtigung bereitzustellen, dass ein Inhalt des Seitentabellen-Basisregisters (232) geändert wurde, in Reaktion darauf, dass der Inhalt geändert wurde;wobei das Gerät (160, 220) als Reaktion auf den Empfang der Benachrichtigung eine Verifizierungsprüfung durchführen soll,wobei die Firmware von dem mindestens einen Host-Prozessor (120, 230) ausgeführt wird, um den mindestens einen Host-Prozessor (120, 230) so zu konfigurieren, dass er als Reaktion auf eine Verwaltungsunterbrechung eine Vielzahl von Registerinhalten an das Gerät (160, 220) sendet, undwobei die Verifizierungsprüfung das Überprüfen der Registerinhalte umfasst, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht.

Description

  • HINTERGRUND
  • Computergeräte und -systeme können Laufzeitintegritätssoftware verwenden, um bösartige Programme zu erkennen. Die Laufzeit-Integritätssoftware kann im selben Raum wie die überwachten Komponenten ausgeführt werden, so dass die Laufzeit-Integritätssoftware möglicherweise denselben Risiken ausgesetzt ist, die von den bösartigen Programmen ausgehen.
  • Aus MOON, H. [et al.]: Architectural Supports to Protect OS Kernels from Code-Injection Attacks and Their Applications. In: ACM Transactions on Design Automation of Electronic Systems, Vol. 23, 2017, No. 1, Article 10. DOI: 10.1145/3110223 ist es bekannt, einen Hardware-Monitor zu implementieren, der Versuche, Schadsoftware mit Betriebssystem-Privilegien auszuführen, erkennt und verhindert. US 2015 / 0 199 507 A1 betrifft eine Integritätsverifikation für virtuelle Prozessoren, welche in einer sicheren Umgebung ausgeführt werden sollen.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die folgende detaillierte Beschreibung bezieht sich auf die Zeichnungen, in denen:
    • 1 ist ein Blockdiagramm eines Computersystems, das in der Lage ist, eine Verifizierungsprüfung als Reaktion auf eine Benachrichtigung durchzuführen, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel;
    • 2 ist ein Blockdiagramm eines Computersystems, das in der Lage ist, eine Verifizierungsprüfung als Reaktion auf eine Benachrichtigung durchzuführen, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel;
    • 3 ist ein Blockdiagramm einer Vorrichtung zur Durchführung einer Verifizierungsprüfung als Reaktion auf eine Meldung, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel;
    • 4 ist ein Blockdiagramm eines Basisplatinen-Verwaltungscontrollers, der in der Lage ist, eine Verifizierungsprüfung durchzuführen, gemäß einem Beispiel;
    • 5 ist ein Flussdiagramm eines Verfahrens zur Durchführung einer Verifizierungsprüfung als Reaktion auf eine Benachrichtigung, dass sich ein Inhalt eines Seitentabellenbasisregisters geändert hat, gemäß einem Beispiel; und
    • 6 ist ein Flussdiagramm eines Verfahrens zur Durchführung einer Verifikationsprüfung gemäß einem Beispiel.
  • In den Zeichnungen können identische Bezugszahlen ähnliche, aber nicht unbedingt identische Elemente bezeichnen. Eine Indexzahl „N“, die an einige der Bezugszahlen angehängt ist, ist lediglich als Hinweis auf eine Vielzahl zu verstehen und muss nicht unbedingt für jede Bezugszahl mit einer solchen Indexzahl „N“ die gleiche Menge darstellen. Darüber hinaus kann die Verwendung einer Bezugszahl ohne Indexnummer, auf die an anderer Stelle mit einer Indexnummer Bezug genommen wird, eine allgemeine Bezugnahme auf die entsprechenden pluralen Elemente insgesamt oder einzeln sein. In einem anderen Beispiel kann die Indexnummer „I“, „M“ usw. anstelle der Indexnummer N verwendet werden.
  • In den Zeichnungen bezeichnen identische Referenznummern ähnliche, aber nicht unbedingt identische Elemente. Die Abbildungen sind nicht unbedingt maßstabsgetreu, und die Größe einiger Teile kann übertrieben sein, um das gezeigte Beispiel deutlicher zu machen. Darüber hinaus enthalten die Zeichnungen Beispiele und/oder Ausführungsformen, die mit der Beschreibung übereinstimmen; die Beschreibung ist jedoch nicht auf die in den Zeichnungen dargestellten Beispiele und/oder Ausführungsformen beschränkt.
  • DETAILLIERTE BESCHREIBUNG
  • In der vorliegenden Offenlegung schließt die Verwendung des Begriffs „ein“, „ein“ oder „die“ auch die Pluralformen ein, sofern aus dem Kontext nicht eindeutig etwas anderes hervorgeht. Auch der Begriff „umfasst“, „einschließlich“, „umfasst“, „umfasst“, „haben“ oder „haben“, wenn er in dieser Offenlegung verwendet wird, spezifiziert das Vorhandensein der angegebenen Elemente, schließt aber das Vorhandensein oder die Zugabe anderer Elemente nicht aus.
  • In der folgenden detaillierten Beschreibung wird auf die beiliegenden Zeichnungen verwiesen, die einen Teil dieses Dokuments bilden und in denen zur Veranschaulichung spezifische Beispiele dargestellt sind, in denen die vorliegende Offenbarung umgesetzt werden kann. Es versteht sich, dass auch andere Beispiele verwendet werden können und strukturelle oder logische Änderungen vorgenommen werden können, ohne dass der Anwendungsbereich der vorliegenden Offenbarung verlassen wird.
  • Computergeräte können Laufzeit-Integritätssoftware verwenden, um bösartige Programme zu erkennen. Die Laufzeit-Integritätssoftware kann im selben Raum wie die überwachten Komponenten ausgeführt werden, so dass die Laufzeit-Integritätssoftware möglicherweise denselben Risiken ausgesetzt ist, die von den bösartigen Programmen ausgehen.
  • Eine breite Klasse von Cybersicherheitsangriffen besteht darin, dass ein Angreifer Code einschleust oder schreibgeschützte Daten verändert. Diese Angriffe können erkannt und Abhilfemaßnahmen ergriffen werden, da sich kritische Teile eines Produktionskerns nicht oder nur in vorhersehbarer Weise ändern sollten, sobald ein Kernel einen „stabilen Zustand“ erreicht. Eine externe Kernel-Überwachungslösung kann bei der Erkennung eines solchen Angriffs eingesetzt werden.
  • Eine externe Kernel-Überwachung ist möglicherweise nicht in der Lage, Änderungen an einem Page Table Base Register (PTBR) wie dem CR3-Register in der x86-Architektur und dem Translation Table Base Register (TTBR) in der Advanced RISC Machine (ARM)-Architektur zu überwachen. Ohne die Möglichkeit, diese Änderungen zu überwachen, kann es schwierig sein, eine Angriffsklasse zu erkennen, die als Address Translation Redirection (ATR) bezeichnet wird. Es ist daher eine Aufgabe der vorliegenden Erfindung, eine verbesserte Kernel-Überwachung bereitzustellen, welche auch ATR-Angriffe wirksam verhindert. Diese Aufgabe wird durch ein Computersystem gemäß Anspruch 1, ein Verfahren gemäß Anspruch 9 und durch ein nicht-transitorisches maschinenlesbares Speichermedium gemäß Anspruch 16 gelöst.
  • Bei einem ATR-Angriff werden die Zuordnungen von virtuellen zu physischen Adressen im Paging-Mechanismus des Kernels neu definiert, indem die entsprechende physische Adresse der virtuellen Adresse der überwachten Seite geändert wird. Ein Angreifer kann daher Seiten aus dem Blickfeld des externen Monitors verschieben. Ein Relocation-Angriff verschiebt im Grunde den gesamten Kernel oder Teile davon an einen anderen Ort, um außerhalb des überwachten Bereichs zu bleiben. Externe Monitore sind nicht in der Lage, diesen Angriff zu erkennen, wenn die Monitore das Page Table Base Register des Host-Prozessors nicht sehen können. Da jeder Prozess seinen eigenen PTBR-Wert hat, ist es schwierig, die aktiven Paging-Zuordnungen zuverlässig zu verfolgen, ohne den Wert im PTBR zu kennen.
  • Dementsprechend verwenden verschiedene hier offengelegte Beispiele eine Echtzeit-Systemverfolgung, um Änderungen an der PTBR extern zu überwachen. Die Echtzeitverfolgung hat je nach Prozessortyp unterschiedliche Namen, z. B. INTEL Processor Trace (INTEL PT), ARM Core Sight usw. Das Echtzeit-Tracing kann so konfiguriert werden, dass es Informationen über einen Bus wie PCIe liefert, und es kann Industriestandardprotokolle wie das MIPI System Trace Protocol (STP) unterstützen.
  • Darüber hinaus kann das Gerät in verschiedenen Beispielen auch kritische Kernel-Codebereiche und Datenstrukturen kontinuierlich überwachen. Das Gerät kann Abhilfemaßnahmen ergreifen, wie das Herunterfahren des Computersystems, die Protokollierung von Problemen, das Versenden von Warnmeldungen usw., wenn eine Manipulation festgestellt wird.
  • 1 ist ein Blockdiagramm eines Computersystems, das in der Lage ist, eine Verifizierungsprüfung als Reaktion auf eine Benachrichtigung durchzuführen, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel. Das Computersystem 100 kann einen Host-Prozessor (120) mit Systemverwaltungsmodus-Befehlen 122, einen Trace-Hub 124 und ein oder mehrere Trace-Hub-Konfigurationsregister 126 enthalten. Darüber hinaus kann das Computersystem 100 eine Vorrichtung 160, wie z. B. einen BMC oder einen anderen ASIC oder eine Engine, enthalten, die in der Lage ist, die beschriebenen Funktionen auszuführen. Die Vorrichtung 160 kann eine Trace-Dekomprimierungs-Engine 162, einen Trace-Monitor 164, einen Page-Table-Monitor 166 und einen SMM-Monitor 168 umfassen.
  • Obwohl in dem Computersystem 100 ein einzelner Host-Prozessor 120 gezeigt wird, ist es denkbar, dass mehrere Host-Prozessoren 120 durch das System geschützt werden können. Darüber hinaus kann der Host-Prozessor 120 einen einzelnen Kern, mehrere Kerne oder ähnliches umfassen. Außerdem kann derselbe Ansatz auf mehreren Kernen eines Verarbeitungselements ausgeführt werden. Wenn hier von einem Host-Prozessor die Rede ist, kann der Host-Prozessor einen oder mehrere Kerne eines Verarbeitungselements sowie gemeinsam genutzte Funktionen zwischen mehreren Kernen des Verarbeitungselements (z. B. einen Trace-Hub 124) umfassen.
  • In den hier beschriebenen Beispielen verfügt der Prozessor und/oder Chipsatz über einen Hub, wie z. B. einen Trace-Hub 124, der Traces sammelt, vorverarbeitet und über einen Bus oder eine Verbindungsstruktur (z. B. PCIe) an Drittgeräte 160 (z. B. einen Baseboard Management Controller (BMC), eine Verifizierungs-Engine usw.) sendet. Ein Trace-Hub-Konfigurationsregister 126 kann zur Konfiguration des Trace-Hubs 124 verwendet werden. Dies kann z. B. Informationen darüber enthalten, wann eine Benachrichtigung zu senden ist (z. B. wenn eine Kontextänderung auftritt), wohin die Benachrichtigung zu senden ist (z. B. ein Standort des Geräts 160 auf einer Verbindung) usw.
  • Einige Beispiele werden unter Verwendung der Terminologie eines INTEL-Prozessors und/oder -Chipsatzes beschrieben, um die Offenlegung für das Verständnis zu vereinfachen, jedoch werden ähnliche Merkmale und Techniken für die Verwendung mit anderen Technologien (z. B. ARM und andere Prozessorarchitekturen) in Betracht gezogen. Daher kann die Lösung auch auf andere moderne Prozessoren angewendet werden.
  • In den hier beschriebenen Beispielen ist der Trace Hub 124 auf dem Host-Prozessor 120 so konfiguriert, dass er den Inhalt des Page Table Base Register (CR3 in x86, TTBR in ARM usw.) erfasst und bei jeder Änderung an das für die Verifizierung verwendete Gerät 160 (z. B. ein BMC, eine anwendungsspezifische integrierte Schaltung (ASIC) usw.) sendet. Das Gerät 160 muss als Reaktion auf den Empfang des Inhalts eine Verifizierungsprüfung durchführen. Bei der Verifikationsprüfung kann beispielsweise geprüft werden, ob es einen Hinweis darauf gibt, dass ein Benutzerbereichsschutz deaktiviert wurde, ob eine Kernel-Space-Zuordnung eine Speicherseite enthält, die sowohl beschreibbar als auch ausführbar ist, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht usw., wie hier weiter beschrieben.
  • Der Trace-Hub 124 auf dem Host-Prozessor 120 kann so konfiguriert werden, dass er den Inhalt des Page Table Base Register (CR3 in x86, TTBR in ARM usw.) erfasst und bei jeder Änderung an das Gerät 160 sendet. Traces werden häufig komprimiert, um die Bandbreite zu verringern. Dementsprechend kann die Trace-Dekomprimierungs-Engine 162 zur Dekomprimierung von Traces vom Host-Prozessor 120 verwendet werden. Sobald die Spur dekomprimiert ist, wird sie an den Spurmonitor 164 weitergeleitet. Der Trace-Monitor 164 ist für die Aktivierung des Page Table Monitors 166 und des SMM-Monitors 168 zuständig. SMM steht für System Management Mode. Der Seitentabellen-Monitor 166 kann eine Überprüfung der Seitentabellen-Zuordnungen des aktuellen Prozesses durchführen. Außerdem kann der SMM-Monitor 168 den Kontext des Host-Prozessors überprüfen. Dies kann auf der Grundlage von Anweisungen erfolgen, die von der System-Firmware beim Booten konfiguriert werden.
  • Mit diesen Ansätzen kann der Trace-Monitor 164 auf dem Gerät 160 jedes Mal benachrichtigt werden, wenn ein Prozesskontextwechsel stattfindet. Der Prozesskontextwechsel löst dann Verifizierungsprüfungen unter Verwendung des SMM-Monitors 168 und des Seitentabellenmonitors 166 aus. Der Trace-Monitor 164 kann eine Reihe von Strategien zur Aktivierung der Monitore für die Durchführung von Verifikationsprüfungen anwenden.
  • Eine Beispielstrategie kann beinhalten, dass bei jedem Prozesskontextwechsel Prüfungen ausgelöst werden. Eine andere Beispielstrategie kann beinhalten, dass Prüfungen ausgelöst werden, wenn ein „neuer“ Prozess erstellt wird. Dies reduziert den Überprüfungsaufwand. Eine andere Beispielstrategie kann darin bestehen, die weniger störende Seitentabellenüberwachung 166 bei jedem Prozesskontextwechsel auszulösen und die SMM-Überwachung 168 periodisch (z. B. bei jeder n-ten Anzahl von Wechseln) auszulösen. In diesem Beispiel kann „n“ fest oder zufällig sein. Ferner kann ein anderer Mechanismus verwendet werden, um zu bestimmen, wie oft der SMM-Monitor 168 ausgelöst werden soll.
  • In einem typischen Kernel müssen die kritischen Teile eines Kernels unabhängig vom Prozess auf denselben physischen Speicher verweisen. In einem Beispiel prüft die Seitentabellenüberwachung 166 die Seitenzuordnungen jedes Prozesses, um sicherzustellen, dass eine Verletzung dieser Sicherheitsinvariante erkannt und eine Warnung ausgelöst wird.
  • In einem anderen Beispiel vergleicht die Seitentabellenüberwachung 166 die Zuordnung kritischer Teile des Kernels wie Kerneltext (Code), Nur-Kernel-Speicher, LKM-Text (Loadable Kernel Module), Nur-LKM-Speicher usw. mit einer goldenen Referenz. Eine goldene Referenz kann durch die Ausführung eines Treibers im Host-Betriebssystem zu einem frühen Zeitpunkt des Betriebssystem-Boot-Prozesses erhalten werden.
  • In anderen Beispielen kann die Seitentabellenüberwachung 166 auch andere einfache Überprüfungen durchführen. In einem Beispiel kann die Überprüfung beinhalten, dass die Kernel Space Mappings nicht gegen W xor X verstoßen (Betriebssysteme erlauben normalerweise nicht sowohl beschreibbare als auch ausführbare Speicherseiten). In einem anderen Beispiel kann die Überprüfung die Suche nach bösartigen Seitentabellenberechtigungen umfassen, z. B. PML4-Einträge im Systembereich (Page Map Level 4) in Fenstern, die als Benutzerbereich gekennzeichnet sind. In einem anderen Beispiel kann die Überprüfung beinhalten, dass ein Kernel-Prozess keine Userspace-Zuordnungen hat. Ein weiteres Beispiel ist die Bestätigung, dass zwischen den Kernel-Seitentabellen eines Prozesses und den Master-Seitentabellen des Root-Kernels keine Diskrepanz besteht, z. B. ein Unterschied in der Anzahl der ausführbaren Seiten.
  • In einem Beispiel kann die System-Firmware verwendet werden, um ein SMM-Codemodul (System Management Mode) einzusetzen. Das Codemodul kann verwendet werden, um den Host-Prozessor 120 so zu konfigurieren, dass er als Reaktion auf eine Anforderung des Geräts Registerinhalte bereitstellt. In einem Beispiel kann das Codemodul verwendet werden, um den Kontext des Host-Prozessors (z. B. den aktuellen Zustand des Prozessors) zu kopieren und an das Gerät 160 zu senden, wenn ein Systemmanagement-Interrupt (SMI) bzw eine Systemverwaltungsunterbrechung ausgelöst wird. Mit diesem Ansatz kann das Gerät 160 sicherheitskritische Register wie Steuerregister (CR2, CR3, CR4 und CR8), Speicherverwaltungsregister (CS, DS, ES, FS, GS und SS) und modellspezifische Register (SYSENTER_CS_MSR, SYSENTER_EIP_MSR und SYSENTER_ESP MSR) überprüfen.
  • Wie hier verwendet, wird mit einer Verifizierungsprüfung überprüft, ob ein Zustand des Computersystems mit einer Richtlinie oder bestimmten Kriterien übereinstimmt. Das Gerät 160 kann Prüfungen im Prozessorkontext durchführen und eine Warnung auslösen, wenn Registerwerte nicht in erwarteten Bereichen liegen (z. B. außerhalb erwarteter oder gewünschter Parameter oder Werte). So kann die Geräteüberprüfung beispielsweise eine Warnung auslösen, wenn CR4.SMEP und CR4.SMAP deaktiviert sind. Durch die Aktivierung von SMEP und SMAP wird es bösartigen Programmen erschwert, den Kernel zur Verwendung von Anweisungen oder Daten aus dem Benutzerbereich „auszutricksen“. Daher ist ein deaktiviertes SMEP oder SMAP ein Indikator für eine Gefährdung.
  • Eine weitere Prüfung besteht darin, sicherzustellen, dass die MSRs (SYSENTER_CS_MSR, SYSENTER_EIP_MSR und SYSENTER_ESP_MSR), die von Fast System Calls-Anweisungen verwendet werden, konsistent sind. Das heißt, die MSRs können überprüft werden, um sicherzustellen, dass sie in jedem Prozess gleich sind. In diesem Beispiel ist jede Abweichung ein Indikator für eine mögliche Gefährdung.
  • Die Kommunikation zwischen dem SMM-Codemodul und dem Gerät 160 kann über einen Bus oder eine Standardverbindungsleitung wie PCIe erfolgen. Darüber hinaus kann die Kommunikation mit einem Nachrichtenauthentifizierungscode (MAC) und einem geheimen Schlüssel, der nur dem Modul und dem Gerät 160 bekannt ist, integer geschützt werden.
  • In einigen Beispielen kann eine tiefere Introspektion mit Hilfe eines Puffers durchgeführt werden. Das System kann Prozessorkontextinformationen, die während der SMM auf der Seite des Prozessors gesammelt werden, zwischenspeichern. Das Gerät 160 kann dann umfangreichere und zeitaufwändigere Prüfungen asynchron durchführen. In diesem Szenario sind die Monitore 164, 166, 168 nicht mehr erforderlich, um mit der SMI-Rate oder der Rate der Kontextwechsel Schritt zu halten. SMM kann beispielsweise dazu verwendet werden, Sprungtabellen mit Zeigern auf ausführbaren Code zu sammeln und im Systemspeicher zu puffern. Ein Überprüfer auf dem Gerät 160 kann die Informationen asynchron abrufen und prüfen, ob die Zeiger, die Kernel-Invarianten sind, für jeden Prozess gleich sind. Zusätzliche Prüfungen, die zeitaufwändig sein können, wie die Verfolgung der Codezeiger einer Sprungtabelle und die Sicherstellung, dass die Zeiger tatsächlich auf denselben Code zeigen, können so asynchron durchgeführt werden. Die Pufferung ermöglicht es dem System, einfachere Überprüfungen weiterhin synchron und nahezu in Echtzeit durchzuführen, während komplexere Überprüfungen asynchron durchgeführt werden können, z. B. auf der Basis von Best Effort.
  • Die gepufferten Kontextinformationen können mit einem Sicherheits-Coprozessor wie einem Trusted Platform Module (TPM) vor Manipulationen geschützt oder in einer speziellen Speicherenklave gespeichert werden, auf die nur der SMM-Modus des Prozessors und das Gerät 160 Zugriff haben. In einigen Beispielen kann das System Informationen in einem reservierten Bereich des Systemspeichers zwischenspeichern, der mit Hilfe eines Nachrichtenauthentifizierungscodes (MAC) gegen Manipulationen durch das Betriebssystem geschützt ist. In diesem Beispiel sind die Schlüssel zur Erzeugung der MACs nur dem SMM-Code-Modul und dem Gerät 160 bekannt.
  • Die Monitore und Motoren 162, 164, 166, 168 umfassen Hardware und/oder Kombinationen von Hardware und Programmierung, um die hierin vorgesehenen Funktionen auszuführen. Darüber hinaus können die Module (nicht dargestellt) Programmierfunktionen und/oder Kombinationen von Programmierfunktionen enthalten, die von der hier beschriebenen Hardware ausgeführt werden. Bei der Erörterung der Motoren und Module ist zu beachten, dass die einem Motor zugeordnete Funktionalität auch einem entsprechenden Modul zugeordnet werden kann und umgekehrt. Darüber hinaus können Funktionen, die einem bestimmten Modul und/oder einer Engine zugeordnet sind, auch durch ein anderes Modul und/oder eine andere Engine implementiert werden. Wie bereits erwähnt, kann die Vorrichtung 160 mit einem ASIC implementiert werden. In einigen Beispielen kann die Vorrichtung 160 als BMC implementiert werden.
  • 2 ist ein Blockdiagramm eines Computersystems, das in der Lage ist, eine Verifizierungsprüfung als Reaktion auf eine Benachrichtigung durchzuführen, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel. Das Rechensystem 200 kann einen Kernel 202 enthalten, der einen Messtreiber 210, Kernelcode 212, Kerneldaten 216 und Modulcode 218 umfasst. Ferner kann das Computersystem 200 ein Verarbeitungselement 229 enthalten, das einen Host-Prozessor 230 mit einem Seitentabellen-Basisregister 232 umfasst. Obwohl nicht dargestellt, kann das Verarbeitungselement SMM-Anweisungen, einen Trace-Hub und ein Trace-Hub-Konfigurationsregister enthalten. Außerdem können einige dieser Fähigkeiten von mehreren Host-Prozessorkernen gemeinsam genutzt werden. Ein vom Host-Prozessor 230 getrenntes Gerät 220 kann eine Scan-Engine 222 und eine Policy-Engine 224 enthalten. Ferner kann eine Firmware-Engine 260 implementiert werden, um das Computersystem 200 einschließlich des Host-Prozessors 230 zu konfigurieren. Ein Puffer 270 kann unter Verwendung eines Speichers implementiert werden, um asynchrone Verifikationsprüfungen zu ermöglichen.
  • Wie hierin verwendet, kann ein „Computersystem“ ein Speicher-Array, ein Speichergerät, ein Speichergehäuse, ein Server, ein Desktop- oder Laptop-Computer, ein Computer-Cluster, ein Knoten, eine Partition oder ein anderes Gerät oder eine Ausrüstung sein, einschließlich eines Controllers, einer Verarbeitungsressource oder dergleichen, die ein vom Host-Prozessor 230 getrenntes Gerät 220 umfassen kann, das für die hier beschriebene Messung des Speichers 234 verwendet werden kann. In den hier beschriebenen Beispielen kann eine „Verarbeitungsressource“ z. B. einen Prozessor oder mehrere Prozessoren umfassen, die in einem einzigen Computergerät enthalten oder über mehrere Computergeräte verteilt sind. Wie hierin verwendet, kann ein „Prozessor“ mindestens eine Zentraleinheit (CPU), ein Mikroprozessor auf Halbleiterbasis, eine Grafikverarbeitungseinheit (GPU), ein feldprogrammierbares Gate-Array (FPGA) zum Abrufen und Ausführen von Befehlen, andere elektronische Schaltungen, die zum Abrufen und Ausführen von auf einem maschinenlesbaren Speichermedium gespeicherten Befehlen geeignet sind, oder eine Kombination davon sein. Wie hier verwendet, ist der Prozessor oder die Gruppe von Host-Prozessoren 230, die das Betriebssystem (z. B. den Kernel) laden und ausführen sollen, vom Gerät 220 getrennt. Wie bereits erwähnt, kann der Host-Prozessor 230 als ein Kern eines Chips mit mehreren Prozessoren implementiert werden. Jeder dieser Kerne kann ein eigenes Seitentabellen-Basisregister haben.
  • Ein „maschinenlesbares Speichermedium“ kann jedes elektronische, magnetische, optische oder andere physikalische Speichermedium sein, das Informationen wie ausführbare Befehle, Daten und dergleichen enthält oder speichert. Ein hier beschriebenes maschinenlesbares Speichermedium kann beispielsweise ein Random Access Memory (RAM), ein flüchtiger Speicher, ein nichtflüchtiger Speicher, ein Flash-Speicher, ein Speicherlaufwerk (z. B. eine Festplatte), ein Festkörperlaufwerk, eine beliebige Art von Speicherplatte (z. B. eine Compact Disc, eine DVD usw.) und dergleichen oder eine Kombination davon sein. Jedes maschinenlesbare Speichermedium, das hier beschrieben wird, kann ein nicht-übertragbares sein. In einigen Beispielen kann der Speicher 234 oder ein Teil des Speichers 234 RAM enthalten und sowohl für den Host-Prozessor 230 als auch für das Gerät 220 über einen Bus oder eine Verbindung zugänglich sein.
  • Ein „Gerät“ 220 kann ein Mikrocontroller, BMC, ein Schaltkreis, eine CPU, ein Mikroprozessor, eine GPU, ein FPGA, ein Chassis-Manager, ein Rack-Level-Manager, ein Server, ein TPM, ein anderer elektronischer Schaltkreis, der zur Messung von Datenstrukturen im Speicher geeignet ist, oder eine Kombination davon sein. Das Gerät 220 kann zum Beispiel ein BMC eines Servers sein. In einem anderen Beispiel kann die Vorrichtung 220 ein Top-of-Rack-Switch oder ein Verwaltungsmodul sein. In solchen Beispielen kann die Vorrichtung 220 unabhängig von jedem System innerhalb der Betriebssysteme des Racks arbeiten. In solchen Beispielen kann die Vorrichtung 220 die Messungen des Kernelraums jedes Systems in jedem Systemspeicher vornehmen.
  • Ein „Baseboard Management Controller“ oder „BMC“ ist ein spezialisierter Dienstprozessor, der den physischen Zustand eines Servers oder anderer Hardware mithilfe von Sensoren überwacht und über eine unabhängige „Out-of-Band“-Verbindung mit einem Verwaltungssystem kommuniziert. Der BMC kann auch mit Anwendungen auf Betriebssystemebene kommunizieren, und zwar über einen IOCTL-Schnittstellentreiber (Input/Output Controller), eine REST-Anwendungsprogrammschnittstelle (Representational State Transfer) oder einen anderen Systemsoftware-Proxy, der die Kommunikation zwischen BMC und Anwendungen ermöglicht. Die BMC kann auf Hardware-Ebene auf Hardware-Geräte in einem Servergehäuse, einschließlich des Systemspeichers, zugreifen. Die BMC kann in der Lage sein, die Hardware-Geräte direkt zu verändern. Die BMC kann unabhängig vom Betriebssystem des Systems arbeiten, in dem sich die BMC befindet. Die BMC kann sich auf der Hauptplatine oder der Hauptplatine des Servers oder eines anderen zu überwachenden Geräts befinden. Die Tatsache, dass eine BMC auf einer Hauptplatine des verwalteten Servers montiert oder anderweitig mit dem verwalteten Server verbunden oder angebracht ist, verhindert nicht, dass die BMC als „separat“ betrachtet wird. Wie hier verwendet, verfügt ein BMC über Verwaltungsfunktionen für Teilsysteme eines Computergeräts und ist von einer Verarbeitungsressource getrennt, die ein Betriebssystem eines Computergeräts ausführt. Die BMC ist getrennt von einem Prozessor, wie z. B. einer Zentraleinheit, die ein Betriebssystem oder einen Hypervisor auf einem System ausführt.
  • Ein „Betriebssystem“ oder „OS“ ist ein maschinenlesbarer Befehl, der in einem maschinenlesbaren Speichermedium gespeichert und von einer Verarbeitungsressource ausgeführt werden kann. Ein Betriebssystem kann Systemsoftware enthalten, die Computerhardware und Softwareressourcen verwaltet und allgemeine Dienste für Computerprogramme bereitstellt. Das Betriebssystem kann die Kommunikation zwischen der Hardware eines Computergeräts und den Anwendungen erleichtern. Das Betriebssystem kann eine Benutzeroberfläche enthalten, die es dem Benutzer ermöglicht, mit dem Computergerät zu interagieren. Das Betriebssystem kann aus verschiedenen Schichten bestehen, z. B. einer Anwendungsschicht und einer Kernelschicht. Anwendungen auf hoher Ebene (d. h. Anwendungen, mit denen ein Benutzer interagieren kann) können auf der Anwendungsebene eines Betriebssystems ausgeführt werden, während die Kernel-Ebene maschinenlesbare Anweisungen enthalten kann, die die Hardware des Computergeräts steuern. Während der Einrichtung oder Initialisierung eines Computergeräts kann ein Betriebssystem installiert werden. Während des Boot- oder Startvorgangs eines Computergeräts wird das Betriebssystem in ein maschinenlesbares Speichermedium geladen. Wie bereits erwähnt, kann ein Prozessor oder eine Verarbeitungsressource des Computergeräts das Betriebssystem von dem maschinenlesbaren Speichermedium aus ausführen.
  • Der hier verwendete Begriff „Kernel“ kann ein Teil des Betriebssystems sein. Der Kernel kann der Teil des Betriebssystems sein, der die grundlegendste Kontrolle über alle Hardwaregeräte des Computers bietet. Der Kernel kann Speicherzugriffe verwalten, Hardwareressourcen zuweisen, die Betriebszustände der Verarbeitungsressourcen verwalten und Daten verwalten. In einem Beispiel kann das Betriebssystem einen statischen Kernel enthalten. In anderen Beispielen kann das Betriebssystem dynamisch sein, aber bekannte statische Teile können gemessen werden.
  • Ein Kernel-Space kann ein Teil eines virtuellen Speichersystems sein, das Seitentabellen und ein Adressübersetzungssystem eines Computergeräts umfasst. Die Seitentabelle kann virtuelle Adressen eines Programms auf physische Adressen im Computerspeicher eines Computergeräts abbilden, z. B. auf einem maschinenlesbaren Speichermedium oder einem anderen Speichergerät. Ein Prozessor des Computergeräts kann den virtuellen Speicher des Computergeräts in den Kernelraum und einen Benutzerraum unterteilen. Der Kernelbereich kann beispielsweise für die Ausführung des Kernels, der Kernel-Erweiterungen und der Gerätetreiber reserviert sein. Der Benutzerbereich hingegen kann der Speicherbereich sein, in dem Anwendungen und Dienste ausgeführt werden.
  • Ein „Prozess“ ist eine Instanz eines Computerprogramms, die von einem oder mehreren Threads ausgeführt werden soll. Der Prozess umfasst den Programmcode und seine Aktivität. Ein Teil des Prozesses kann im Kernel-Space laufen, während ein anderer Teil des Prozesses im User-Space laufen kann. Der hier verwendete Begriff „Benutzerraum“ bezeichnet eine Reihe von Orten, an denen normale Benutzerprozesse ablaufen (z. B. alles außerhalb des Kernels). Die Aufgabe des Kernels besteht darin, die in diesem Bereich laufenden Anwendungen daran zu hindern, in unangemessener Weise miteinander und mit dem Rechner zu interagieren.
  • Eine „kryptografische Hash-Funktion“ kann eine Funktion sein, die maschinenlesbare Anweisungen enthält. Die kryptografische Hash-Funktion kann maschinenlesbare Befehle enthalten, die, wenn sie von einem Prozessor ausgeführt werden, eine Eingabe erhalten können. Die kryptografische Hash-Funktion kann dann eine hexadezimale Zeichenfolge erzeugen, die mit der Eingabe übereinstimmt. Die Eingabe kann z. B. eine Datenkette umfassen (z. B. die Datenstruktur im Speicher, die durch eine Anfangsspeicheradresse und eine Endspeicheradresse gekennzeichnet ist). In einem solchen Beispiel gibt die kryptografische Hash-Funktion auf der Grundlage der Datenkette eine hexadezimale Zeichenfolge aus. Außerdem kann jede winzige Änderung der Eingabe die ausgegebene hexadezimale Zeichenfolge verändern. In einem anderen Beispiel kann die kryptografische Hash-Funktion eine sichere Hash-Funktion (SHA), eine von den Federal Information Processing Standards (FIPS) genehmigte Hash-Funktion, eine vom National Institute of Standards and Technology (NIST) genehmigte Hash-Funktion oder eine andere kryptografische Hash-Funktion sein. In einigen Beispielen kann anstelle eines hexadezimalen Formats ein anderes Format für die Zeichenfolge verwendet werden.
  • Ein „vertrauenswürdiges Plattformmodul“ oder „TPM“ kann ein integrierter Schaltkreis sein, der in eine Hauptplatine eines Computersystems eingebaut ist. Das TPM kann fälschungssicher oder fälschungssicher sein. Das TPM kann für Dienste auf dem Computersystem verwendet werden. Die Dienste können Geräteidentifizierung, Authentifizierung, Verschlüsselung, Messung, Bestimmung der Geräteintegrität, sichere Erzeugung kryptografischer Schlüssel, Fernbescheinigung und versiegelte Speicherung umfassen. Das TPM kann Plattformkonfigurationsregister (PCRs) enthalten. In den PCRs können sicherheitsrelevante Metriken gespeichert werden. Maschinenlesbare Anweisungen (z. B. ein Kernel) oder Geräte können das PCR um Daten erweitern. Um ein PCR um eine Messung zu erweitern, können die maschinenlesbaren Anweisungen oder das Gerät, das das PCR erweitert, einen neuen Wert an das TPM senden. Das TPM kann einen Hash-Wert aus dem neuen Wert und dem aktuellen Wert im PCR bilden. Das TPM kann das Ergebnis in der PCR speichern.
  • Ein „Root-of-Trust-Gerät“ oder RoT-Gerät kann ein Gerät sein, das sich erwartungsgemäß verhält, da ein Fehlverhalten des RoT-Geräts möglicherweise nicht erkannt werden kann. Mit anderen Worten, das RoT-Gerät kann inhärent vertrauenswürdige Software, Hardware oder eine Kombination davon sein. Ein RoT-Gerät kann Recheneinheiten enthalten. Bei der Compute Engine kann es sich um Software handeln, die mit Hardware im RoT-Gerät arbeitet, um Hardware des RoT-Geräts oder um eine Kombination daraus. Ein RoT-Gerät kann beispielsweise eine Root of Trust for Storage (RTS) enthalten. Das RTS kann eine Rechenmaschine sein, die in der Lage ist, eine genaue Zusammenfassung von Werten zu erstellen. Das RoT kann zum Beispiel ein TPM sein. In solchen Beispielen kann das TPM eine PCR (oder eine Vielzahl von PCRs) enthalten. Ferner kann das RTS ein PCR (oder eine Vielzahl von PCRs) sein. In einem anderen Beispiel kann das RoT eine Root of Trust for Reporting (RTR) umfassen. Der RTR kann eine Rechenmaschine sein, die in der Lage ist, angeforderte Informationen an ein anforderndes Gerät zu senden. Die Informationen können den Inhalt eines Registers des RoT (oder den Inhalt des RTS) und vom Anforderer angegebene Informationen enthalten. Der RoT kann weitere, hier nicht beschriebene Recheneinheiten enthalten, z. B. eine Recheneinheit zur Messung bestimmter Werte oder eine Recheneinheit zur Authentifizierung.
  • Ein „Puffer“ kann ein Bereich des Speichers sein, der zur vorübergehenden Speicherung von Daten verwendet wird, während diese von einem Ort zum anderen verschoben werden. Der Puffer kann eine feste Größe oder eine variable Größe haben. Der Puffer kann sich in dem maschinenlesbaren Speichermedium des Systems befinden. Außerdem kann der Puffer im Speicher des Systems untergebracht sein.
  • Der hier verwendete Begriff „Agent“ kann ein Anwendungsprogramm sein, d. h. maschinenlesbare Anweisungen. Der Agent kann auf dem System oder einem Gerät des Systems installiert werden. Der Agent kann in einem maschinenlesbaren Speichermedium arbeiten. Beispielsweise kann sich ein Agent im maschinenlesbaren Speichermedium eines BMC oder eines Systems befinden. Der Agent kann über eine REST-Anwendungsprogrammschnittstelle (API), IOCTL-Schnittstellen oder ein anderes Kommunikationsverfahren mit anderen Geräten oder Software kommunizieren. Ein Agent kann sich beispielsweise im maschinenlesbaren Speichermedium einer BMC befinden und mit einem Betriebssystem über eine IOCTL-Schnittstelle kommunizieren.
  • Die Firmware-Engine 260 kann durch Anweisungen implementiert werden, die von einem Prozessor und/oder einer Logik ausgeführt werden können. In einigen Beispielen kann die Firmware-Engine 260 als Plattform-Firmware implementiert werden. Die Plattform-Firmware kann eine Schnittstelle wie z. B. ein BIOS (Basic Input/Output System) oder ein UEFI (Unified Extensible Firmware Interface) enthalten, damit sie mit ihr verbunden werden kann. Die Plattform-Firmware kann sich in einem Adressraum befinden, in dem das Verarbeitungselement (z. B. die CPU) des Computersystems hochfährt. In einigen Beispielen kann die Plattform-Firmware für einen Selbsttest beim Einschalten des Computersystems 200 verantwortlich sein. In anderen Beispielen kann die Plattform-Firmware für den Boot-Prozess verantwortlich sein und dafür, welches Betriebssystem, wenn überhaupt, auf das Computersystem 200 zu laden ist. Darüber hinaus kann die Plattform-Firmware in der Lage sein, verschiedene Komponenten des Computersystems 200 zu initialisieren, wie z. B. Peripheriegeräte, Speichergeräte, Einstellungen des Speicher-Controllers, Einstellungen des Speicher-Controllers, Busgeschwindigkeiten, Informationen zur Grafikkarte usw. In einigen Beispielen kann die Plattform-Firmware auch in der Lage sein, verschiedene Low-Level-Funktionen auszuführen, während das Rechensystem 200 ausgeführt wird. Darüber hinaus kann die Plattform-Firmware in einigen Beispielen in der Lage sein, mit einem Betriebssystem auf höherer Ebene zu kommunizieren, das auf einer CPU ausgeführt wird, z. B. über eine erweiterte Konfigurations- und Energieschnittstelle (ACPI).
  • Wie bereits erwähnt, kann der Host-Prozessor ein Seitentabellen-Basisregister 232 enthalten. Wie hierin verwendet, ist ein „Seitentabellen-Basisregister“ ein Register im Host-Prozessor 230 oder der CPU, das Informationen über die Basisadresse für die Seitentabelle des aktuellen Prozesses enthält, der auf dem Host-Prozessor 230 oder der CPU ausgeführt wird. Wie bereits erwähnt, kann ein Verarbeitungselement mehrere Kerne/CPUs/Host-Prozessoren und somit mehrere PTBRs enthalten. Die PTBR 232 kann die Basisadresse der Übersetzungstabelle und Informationen über den von ihr belegten Speicher enthalten. In der INTEL-x86-Architektur ist ein Beispiel für ein solches Register das CR3-Register. In der ARM-Architektur ist ein Beispiel für ein solches Register das Translation Table Base Register.
  • Während eines Bootvorgangs kann die Firmware-Engine 260 von einem Verarbeitungselement 229 ausgeführt werden. Dies kann verwendet werden, um die Konfiguration des Computersystems 200 durchzuführen. Die Firmware-Engine 260 kann zu einem Boot-Zeitpunkt ausgeführt werden, bevor der Betrieb des Computersystems an ein Betriebssystem übergeben wird. Als Teil der Konfiguration kann die Firmware-Engine 260 das Verarbeitungselement 229 einschließlich des Host-Prozessors 230 so konfigurieren, dass es dem Gerät 220 eine Benachrichtigung darüber übermittelt, dass sich ein Inhalt des PTBR 232 geändert hat, wenn der Inhalt geändert wird. Dies kann durch Konfigurieren einer Echtzeit-Systemverfolgungsfunktionalität des Verarbeitungselements 229 implementiert werden. Beispiele für die Echtzeit-Systemverfolgungsfunktionalität sind INTEL ProcessorTrace, ARM Core Sight usw. In einigen Beispielen umfasst die Benachrichtigung den Inhalt des Registers. Im Allgemeinen ändert sich der Inhalt des PTBR 232, wenn ein neuer Prozess ausgeführt wird.
  • Während der Startzeit kann die Firmware-Engine 260 die Konfiguration der Benachrichtigung so sperren, dass das Betriebssystem die gesperrte Konfiguration nicht ändern kann. In modernen Prozessoren kann die Firmware einen Anspruch auf Ressourcen erheben, wobei die Sperrung auch die Erhebung eines Anspruchs auf bestimmte Ressourcen, z. B. die Echtzeitverfolgungsfunktionen, umfassen kann, so dass die zur Konfiguration verwendete Firmware die Ressourcen sperrt. In bestimmten Beispielen kann das Beanspruchen von Ressourcen auch das Beanspruchen von Registern beinhalten, die mit der hier beschriebenen Unterstützungsüberwachung verbunden sind, z. B. die Register, die mit der Konfiguration der Benachrichtigung zusammenhängen. Die Konfiguration kann die Verfolgungsfunktion speziell so einstellen, dass bestimmte Informationen (z. B. Benachrichtigungen, SMM-Informationen usw.) über eine Verbindung (z. B. PCIe) an das Gerät gesendet werden. In einigen Beispielen kann das Gerät 220 zusätzlich mit dem Verarbeitungselement 229 kommunizieren, um ein gemeinsames Geheimnis (z. B. einen Schlüssel) zum Signieren oder Verschlüsseln der Kommunikation zwischen dem Gerät 220 und dem Teil des Verarbeitungselements 229 zu verwenden, der für die Implementierung von Rückverfolgungsfunktionen verwendet wird. Beispielsweise können in der Kommunikation ein Nachrichtenauthentifizierungscode und ein gemeinsames Geheimnis verwendet werden. Darüber hinaus kann die Firmware verwendet werden, um das Verarbeitungselement 229 so zu konfigurieren, dass es den Inhalt bestimmter Register als Reaktion auf eine von der Vorrichtung 220 gesendete Verwaltungsunterbrechung sendet. Dies kann mithilfe einer Richtlinie konfiguriert werden.
  • Sobald der Bootvorgang abgeschlossen ist, kann das Betriebssystem die Arbeit übernehmen. Wie bereits erwähnt, kann das Verarbeitungselement 229 (das mindestens einen Host-Prozessor 230 umfassen kann) so konfiguriert werden, dass es eine Benachrichtigung darüber ausgibt, dass sich ein Inhalt des PTBR 232 geändert hat.
  • In einem Beispiel ändert sich der PTBR 232. Das Verarbeitungselement 229 sendet eine Benachrichtigung an das Gerät 220. Eine Policy Engine 224 des Geräts 220 kann die Benachrichtigung empfangen. In einigen Beispielen kann die Benachrichtigung den Inhalt des PTBR 232 enthalten. In anderen Beispielen kann die Vorrichtung 220 auf einen früheren Inhalt des PTBR 232 zugreifen und somit eine Analyse der Unterschiede durchführen. In anderen Beispielen kann die Benachrichtigung auch Inhalte anderer Register enthalten, die mit dem Host-Prozessor 230 verbunden sind.
  • Als Reaktion auf den Empfang der Benachrichtigung kann die Policy Engine 224 bestimmen, dass eine Verifizierungsprüfung durchgeführt werden soll. Die durchzuführende Verifizierungsprüfung kann auf einer Richtlinie (z. B. einer regelbasierten Richtlinie) basieren.
  • In einem Beispiel wird die Verifizierungsprüfung ausgelöst, wenn es einen Prozesswechsel gibt. In einem anderen Beispiel wird die Verifikationsprüfung ausgelöst, wenn ein neuer Prozess erstellt wird. Dies würde den Aufwand für die Verifikationsprüfung verringern. In einem anderen Beispiel wird eine einfache oder leichtgewichtige Verifizierungsprüfung bei einem Kontextwechsel durchgeführt und eine andere Richtlinie für zusätzliche Verifizierungsprüfungen festgelegt. Beispielsweise kann eine Verifizierungsprüfung, die eine SMM-Anfrage nach zusätzlichen Informationen beinhaltet, regelmäßig durchgeführt werden, z. B. auf der Grundlage einer Zählung von Kontextwechseln, basierend auf einem Zeitgeber usw.
  • In einem Beispiel für eine Verifizierungsprüfung kann eine Scan-Engine 222 zusätzliche Registerinhalte von dem Verarbeitungselement 229 anfordern, indem sie eine Verwaltungsunterbrechung an das Verarbeitungselement 229 sendet. Die Registerinhalte können als kritische Sicherheitsinhalte betrachtet werden, die sich auf bestimmte Sicherheitsüberprüfungen beziehen können. Die Konfigurationen können so eingestellt werden, dass die Inhalte bestimmter Register als Reaktion auf die Verwaltungsunterbrechung bereitgestellt werden. Es sind mehrere Konfigurationen möglich, und in einigen Beispielen kann der Interrupt so konfiguriert werden, dass er die zu sendenden Inhalte auswählt. Wie bereits erwähnt, können bestimmte Steuerregister (z. B. CR2, CR3, CR4, CR8), Speicherverwaltungsregister (CS, DS, ES, FS, GS, SS usw.) und modellspezifische Register (z. B. SYSENTER_CS_MSR, SYSENTER_EIP_MSR, SYSENTER_ESP_MSR usw.) so konfiguriert werden, dass sie als Reaktion auf eine Verwaltungsunterbrechung gesendet werden. Dementsprechend stellt das Verarbeitungselement als Reaktion auf die Verwaltungsunterbrechung eine Vielzahl von Registerinhalten bereit.
  • In einem Beispiel umfasst die Verifizierungsprüfung die Bestimmung auf der Grundlage eines der Registerinhalte, ob ein Hinweis darauf vorliegt, dass ein Schutz des Benutzerbereichs deaktiviert wurde. Beispielsweise kann die Policy Engine 224 eine Sicherheitsmaßnahme auslösen, wenn CR4.SMEP und/oder CR4.SMAP deaktiviert sind. SMEP und SMAP erschweren es bösartigen Programmen, einen Kernel zur Verwendung von Anweisungen oder Daten aus einem Benutzerbereich zu verleiten. Ein weiteres Beispiel ist die Überprüfung der Systemregion Page Map Level 4 (PML4), um sicherzustellen, dass die Einträge nicht als Benutzer gekennzeichnet sind.
  • In einem anderen Beispiel kann die Policy-Engine 224 feststellen, ob Kernel-Space-Mappings bei der Prüfung gegen ein W xor X verstoßen. Betriebssysteme lassen es normalerweise nicht zu, dass eine Speicherseite sowohl beschreibbar als auch ausführbar ist. Ist dies der Fall, stellt sie eine potenzielle Bedrohung dar und kann daher gegen eine vom Gerät 220 festgelegte Richtlinie verstoßen und eine Sicherheitsmaßnahme auslösen.
  • In einem weiteren Beispiel kann das Gerät 220 die Registerinhalte prüfen, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht. Eine Nichtübereinstimmung kann darauf hinweisen, dass die Kernelseitentabelle des Prozesses in böser Absicht verändert wurde.
  • In einem anderen Beispiel kann das Gerät 220 den von einem der Registerinhalte referenzierten Code mit einer goldenen Referenz für den referenzierten Code vergleichen. In einigen Beispielen kann die goldene Referenz beim Hochfahren des Computersystems 200 oder mit anderen Techniken erfasst werden.
  • Zu den Sicherheitsmaßnahmen kann eine Benachrichtigung über die Überprüfung gehören. Dies kann die Protokollierung des Ereignisses, das Senden einer E-Mail, das Senden einer Benachrichtigung an ein Dashboard usw. umfassen. Es können auch andere Sicherheitsmaßnahmen durchgeführt werden, z. B. die Sperrung des Computersystems 200 durch das Abschalten von Kommunikationsanschlüssen usw. In anderen Beispielen können die Daten vor der Quarantäne aus dem Computersystem übertragen werden.
  • Wie bereits erwähnt, kann die Verifizierungsprüfung oder eine zweite, eingehendere Verifizierungsprüfung als Reaktion auf einen zweiten Auslöser erfolgen. Bei dem Auslöser kann es sich um einen Zeitgeber, eine Anzahl von Kontextänderungen usw. handeln. In einigen Beispielen kann die zweite Verifizierungsprüfung die Verifizierung von mehreren gepufferten Kontextinformationen umfassen. In einigen Beispielen können die Überprüfungen eine umfassendere Überprüfung des Kernel-Codes 212, der Kernel-Daten 216, des Modul-Codes 218 usw. umfassen. Beispielsweise kann das Computersystem 200 den Puffer 270 (z. B. einen Puffer im Systemspeicher) verwenden, um Sprungtabellen mit Zeigern auf ausführbaren Code zu sammeln. Diese können asynchron auf der Grundlage des Auslösers verarbeitet werden.
  • In einem Beispiel wird mit diesen Ansätzen das Vertrauen in die Zustandsinformationen eines Computersystems überprüft. In diesem Beispiel umfassen die Zustandsinformationen zumindest den Kernelcode 212 und den Modulcode 218, z. B. Modulcode und/oder Treiber, die im Grundbetrieb des Computersystems 200 verwendet werden. In einem Beispiel kann das Vertrauen zunächst mit Hilfe einer Kette überprüft werden. Wenn beispielsweise das Computersystem 200 initialisiert wird, kann die Firmware-Engine 260 einen Bootloader verifizieren, z. B. durch Verwendung eines Schlüssels. Der Bootloader kann den Kernelcode 212 booten, nachdem er überprüft hat, dass der Kernelcode mit einem zweiten vertrauenswürdigen Schlüssel signiert ist. Der Kernel verifiziert dann den Modulcode 218 zum Laden mit einem dritten vertrauenswürdigen Schlüssel. Der Modulcode 218 kann z. B. den Code des Prozesses enthalten, der in den PTBR 232 ein- oder ausgeschaltet wird. Bei den vertrauenswürdigen Schlüsseln kann es sich um denselben oder einen anderen Schlüssel handeln, der an einem vertrauenswürdigen Ort gespeichert ist (z. B. auf einem BMC, auf dem Gerät 220, auf einem TPM usw.). Dies kann durch einen sicheren Bootvorgang realisiert werden. In anderen Beispielen kann die Verifizierung durch einen gemessenen Bootvorgang aktiviert werden.
  • Das Verarbeitungselement kann den Kernelcode 212 und den Modulcode 218 in den Speicher 234 laden. Auf den Speicher 234 kann das Gerät 220 zugreifen, das vom Verarbeitungselement 229 getrennt ist. Der Messtreiber 210 kann verifiziert und in den Speicher 234 geladen werden.
  • Die Zustandsinformationen können mehreren Symbolen entsprechen. Die Symbole können jeweils einem Speicherabschnitt zugeordnet werden. Die Symbole können verwendet werden, um Abschnitte des Speichers zu identifizieren, z. B. bestimmte Funktionen im Zusammenhang mit Code, Tabellen usw. Ein Messtreiber 210 kann für einen bestimmten Kernelcode, Modulcode und andere Statusinformationen konfiguriert werden, die geladen werden, um zu wissen, welche Symbole zu verfolgen sind. Der Messtreiber 210 kann ferner so konfiguriert werden, dass er den Kernel-Code verwendet, um verschiedene Informationen über die Symbole zu bestimmen, z. B. die Größe des Symbols, den Beginn des Symbols, das Ende des Symbols, den Beginn des nächsten erwarteten Symbols usw. Verschiedene Kernel-Codes können unterschiedliche Funktionen haben, um die Informationen zu sammeln. Die Informationen können zur Bestimmung der Startadresse jedes der Symbole und der Größe des Symbols verwendet werden.
  • Der Messtreiber 210 kann die Zustandsinformationen messen, bevor eine Reihe anderer Module geladen wird. Die den einzelnen Symbolen entsprechenden Zustandsinformationen können verwendet werden, um eine Reihe von Anfangsmessungen zu erzeugen. In einem Beispiel kann der Messtreiber die entsprechenden Zustandsinformationen für jedes Symbol messen. Der Messtreiber 210 oder ein anderer Agent kann dann den Satz von Anfangsmessungen, die mit den jeweiligen Symbolen verbunden sind, dem Gerät 220 zur Integritätsüberwachung zur Verfügung stellen. Die Bereitstellung der Informationen kann über einen Puffer und/oder eine Verbindung, wie oben beschrieben, oder eine andere Kommunikationsmethode erfolgen, auf die das Gerät 220 zugreifen kann und deren Kernel initialisiert ist. Die Zustandsinformationen für die zu diesem Zeitpunkt gemessenen Symbole können sich in einem stabilen Zustand befinden, in dem keine Änderung der Informationen zu erwarten ist.
  • Wie hier verwendet, ist „Zustandsinformation“ ein Satz von Daten, die den jeweiligen Symbolen entsprechen, von denen nicht erwartet wird, dass sie nach der Messung ihren Zustand ändern. Eine Änderung der Informationen kann als Integritätsverletzung angesehen werden, die auf eine böswillige Absicht hinweisen kann.
  • Die ersten Messungen können Hashes der jeweiligen Zustandsinformationen enthalten, die mit den entsprechenden Symbolen verbunden sind. In einigen Beispielen kann eine zwischen dem Messtreiber 210 und dem Gerät übermittelte Nachricht einen Paketkopf, einen Symbolnamen, eine Adresse, eine Größe des Symbols und einen Hash-Digest enthalten, der von einem kryptografischen Hash-Algorithmus mit den von der Adresse für die Größe gespeicherten Informationen erzeugt wird. In einigen Beispielen kann einer Nachricht eine Füllung hinzugefügt werden, um eine einfache Kommunikation zu ermöglichen. So können in einigen Beispielen die anfänglichen Messungen eine Position jedes jeweiligen Symbols, das im Speicher verfolgt wird, und eine Größe der jeweiligen Zustandsinformationen, die mit dem bestimmten Symbol verbunden sind, umfassen.
  • In einigen Beispielen wird der Messtreiber 210, sobald er geladen ist, in eine Funktion (oder mehrere Funktionen) im Kernel-Code eingebunden, die für das Laden anderer Module 218 verantwortlich ist. Dies kann geschehen, bevor die Basislinienmessungen durchgeführt werden. Wenn die anderen Module 218 geladen sind, können die mit den anderen Modulen 218 verbundenen Symbole mit einem ähnlichen Ansatz wie oben beschrieben gemessen werden. So können die jeweiligen Basislinienmessungen, die mit anderen Zustandsinformationen verbunden sind, die mit jedem der anderen Symbole verbunden sind, gemessen werden. Die Basislinienmessungen für die anderen Symbole können an das Gerät 220 gesendet werden.
  • Das Gerät 220 kann die jeweiligen Zustandsinformationen im Speicher 234 überwachen, die mit jedem der Symbole verbunden sind, für die eine Anfangs- oder Grundlinienmessung durchgeführt wurde. Die Überwachung kann durchgeführt werden, indem das Gerät 220 die jedem der Symbole entsprechenden Zustandsinformationen misst, um einen zweiten Satz von Messungen für die jeweiligen Symbole zu bestimmen. Die Vorrichtung 220 kann den zweiten Satz von Messungen mit den Anfangs- oder Basismessungen vergleichen. Der Vergleich kann einzeln erfolgen (z. B. eine aktuelle Messung eines Symbols im Vergleich zur Basislinie oder zur Anfangsmessung für dieses Symbol). In einigen Beispielen stellt das Gerät auf der Grundlage des Vergleichs fest, dass ein Verstoß vorliegt. Dies kann der Fall sein, wenn der Vergleich von zwei Messungen für ein Symbol nicht übereinstimmt. Als Reaktion auf die Feststellung des Verstoßes kann eine Sicherheitsmaßnahme durchgeführt werden. Wie oben erwähnt, kann die Sicherheitsaktion eine oder mehrere der folgenden Maßnahmen umfassen: Protokollierung des Verstoßes, Senden einer Warnung über den Verstoß, Herunterfahren des Computersystems 200, Neuinitialisierung des Computersystems oder eine andere im Voraus festgelegte Maßnahme zur Behebung des festgestellten Verstoßes.
  • 3 ist ein Blockdiagramm einer Vorrichtung zur Durchführung einer Verifikationsprüfung als Reaktion auf eine Benachrichtigung, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel. Die Vorrichtung 300 umfasst ein Verarbeitungselement 310 und ein maschinenlesbares Speichermedium 320 mit Anweisungen 322, 324, 326 zur Durchführung einer Verifikationsprüfung. Bei der Vorrichtung 300 kann es sich zum Beispiel um einen ASIC, einen BMC wie BMC 400, einen anderen Controller usw. handeln.
  • Bei dem Verarbeitungselement 310 kann es sich um eine oder mehrere Zentraleinheiten (CPU), einen oder mehrere Mikroprozessoren auf Halbleiterbasis, eine oder mehrere Grafikverarbeitungseinheiten (GPU), andere Hardwarevorrichtungen, die zum Abrufen und Ausführen von in einem maschinenlesbaren Speichermedium 320 gespeicherten Anweisungen geeignet sind, oder um Kombinationen davon handeln. Das Verarbeitungselement 310 kann ein physisches Gerät sein. Darüber hinaus kann das Verarbeitungselement 310 in einem Beispiel mehrere Kerne auf einem Chip, mehrere Kerne auf mehreren Chips, mehrere Kerne auf mehreren Geräten oder Kombinationen davon umfassen. Das Verarbeitungselement 310 kann Anweisungen 322, 324, 326 abrufen, dekodieren und ausführen, um als Reaktion auf den Empfang einer Benachrichtigung eine Verifizierungsprüfung durchzuführen. Alternativ oder zusätzlich zum Abrufen und Ausführen von Befehlen kann das Verarbeitungselement 310 mindestens einen integrierten Schaltkreis (IC), andere Steuerlogik, andere elektronische Schaltkreise oder Kombinationen davon enthalten, die eine Reihe elektronischer Komponenten zur Ausführung der Funktionalität der Befehle 322, 324, 326 umfassen.
  • Bei dem maschinenlesbaren Speichermedium 320 kann es sich um ein beliebiges elektronisches, magnetisches, optisches oder anderes physisches Speichergerät handeln, das ausführbare Anweisungen enthält oder speichert. Bei dem maschinenlesbaren Speichermedium kann es sich beispielsweise um einen Direktzugriffsspeicher (RAM), einen elektrisch löschbaren, programmierbaren Festspeicher (EEPROM), ein Speicherlaufwerk, einen Compact-Disc-Festspeicher (CD-ROM) oder Ähnliches handeln. Als solches kann das maschinenlesbare Speichermedium nicht-transitory sein. Wie hier im Detail beschrieben, kann das maschinenlesbare Speichermedium 320 mit einer Reihe von ausführbaren Anweisungen zur Durchführung einer Verifikationsprüfung (z. B. zur Durchführung von Verfahren 600) kodiert sein.
  • Das Gerät 300 kann eine Benachrichtigung von einem Host-Prozessor empfangen, dass sich der Inhalt eines PTBR geändert hat. Die Überprüfungsanweisungen 322 können in Übereinstimmung mit der oben erwähnten Richtlinie ausgeführt werden. In einigen Beispielen können Unterbrechungsanweisungen 324 ausgeführt werden, um zusätzliche Informationen vom Host-Prozessor anzufordern und zu empfangen. Sobald eine Verifizierungsprüfung durchgeführt wurde, kann eine Sicherheitsmaßnahme in Übereinstimmung mit den hierin beschriebenen Merkmalen durch die Ausführung von Sicherheitsmaßnahmenanweisungen 326 ergriffen werden.
  • 4 ist ein Blockdiagramm eines Baseboard Management Controllers, der in der Lage ist, eine Verifikationsprüfung gemäß einem Beispiel durchzuführen. Die BMC 400 kann ein maschinenlesbares Speichermedium 420 enthalten, das Überprüfungsanweisungen 422, Unterbrechungsanweisungen 424 und Sicherheitsaktionsanweisungen 426 enthält, die den Anweisungen der Vorrichtung 300 entsprechen. Die BMC 400 kann auch ein Verarbeitungselement 410 zum Ausführen der Anweisungen enthalten. In einigen Beispielen kann die BMC 400 zusätzliche Funktionen wie oben beschrieben bereitstellen.
  • 5 ist ein Flussdiagramm eines Verfahrens zur Durchführung einer Verifizierungsprüfung als Reaktion auf eine Meldung, dass sich ein Inhalt eines Seitentabellen-Basisregisters geändert hat, gemäß einem Beispiel. Obwohl die Ausführung des Verfahrens 500 im Folgenden mit Bezug auf das System 200 beschrieben wird, können auch andere geeignete Komponenten für die Ausführung des Verfahrens 500 verwendet werden. Das Verfahren 500 kann in Form von ausführbaren Anweisungen, die auf einem maschinenlesbaren Speichermedium, wie z. B. einem Speichermedium, gespeichert sind, und/oder in Form von elektronischen Schaltkreisen implementiert werden.
  • Bei 502 kann die Firmware ausgeführt werden, um einen Host-Prozessor so zu konfigurieren, dass er als Reaktion auf die Änderung des Inhalts eines PTBR eine Benachrichtigung über dessen Änderung ausgibt. Außerdem kann die Firmware so ausgeführt werden, dass sie als Reaktion auf eine Verwaltungsunterbrechung, wie oben beschrieben, eine Vielzahl von Registerinhalten an das Gerät sendet. Wie bereits erwähnt, kann die Konfiguration während eines Bootvorgangs erfolgen und gesperrt werden, bevor die Ausführung des Computersystems auf ein Betriebssystem umgestellt wird. Wenn eine Kontextänderung eintritt, sendet der Host-Prozessor die Benachrichtigung an das Gerät 220.
  • Bei 504 führt das Gerät 220 als Reaktion auf den Empfang der Benachrichtigung eine Verifizierungsprüfung durch. Die Verifizierungsprüfung kann leicht oder umfassend sein. In einem Beispiel wird eine leichtgewichtige Prüfung in Echtzeit und eine umfassende Prüfung in einem asynchronen Rhythmus durchgeführt.
  • 6 ist ein Flussdiagramm eines Verfahrens zur Durchführung einer Verifikationsprüfung gemäß einem Beispiel. Obwohl die Ausführung des Verfahrens 600 im Folgenden mit Bezug auf das Gerät 300 beschrieben wird, können auch andere geeignete Komponenten für die Ausführung des Verfahrens 600 verwendet werden (z. B. BMC 400). Das Verfahren 600 kann in Form von ausführbaren Anweisungen, die auf einem maschinenlesbaren Speichermedium, wie dem Speichermedium 320, gespeichert sind, und/oder in Form von elektronischen Schaltkreisen implementiert werden.
  • Das Gerät 300 kann eine Benachrichtigung von einem Host-Prozessor empfangen, dass sich der Inhalt eines PTBR geändert hat. Bei 602 kann das Verarbeitungselement 310 als Reaktion auf den Empfang der Benachrichtigung Verifizierungsanweisungen 322 ausführen, um eine Verifizierungsprüfung durchzuführen.
  • Als Teil der Verifikationsprüfung können bei 604 Unterbrechungsbefehle 324 vom Verarbeitungselement 310 ausgeführt werden, um eine Verwaltungsunterbrechung an den Host-Prozessor zu senden. Der Host-Prozessor kann als Reaktion auf die Verwaltungsunterbrechung eine Vielzahl von Registerinhalten senden, die dem Host-Prozessor zugeordnet sind (z. B. Steuerregister, Speicherverwaltungsregister, modellspezifische Register usw.). Das Gerät 300 kann die Inhalte empfangen (606). Die Inhalte können verwendet werden, um die Verifizierungsprüfung wie oben beschrieben durchzuführen.
  • Eine Sicherheitsmaßnahme kann als Reaktion auf die Untersuchung eines der Registerinhalte durchgeführt werden, die auf ein Benutzerraumproblem hinweisen. Beispielsweise kann eine Sicherheitsmaßnahme als Reaktion auf die Anzeige durchgeführt werden, dass ein Schutz des Benutzerbereichs deaktiviert wurde (608). Wie bereits erwähnt, kann die Sicherheitsmaßnahme eine oder mehrere der folgenden Maßnahmen umfassen: Protokollierung des Verstoßes, Versenden einer Warnung über den Verstoß, Herunterfahren des Computersystems, Neuinitialisierung des Computersystems oder eine andere im Voraus festgelegte Maßnahme zur Behebung des Problems bei Feststellung des Verstoßes.
  • Wie bereits erwähnt, können die mit der Unterbrechung verbundenen Registerinhalte als kritische Sicherheitsinhalte betrachtet werden, die mit bestimmten Sicherheitsüberprüfungen in Zusammenhang stehen können. Die Konfigurationen können so eingestellt werden, dass die Inhalte bestimmter Register als Reaktion auf die Verwaltungsunterbrechung bereitgestellt werden. Es sind mehrere Konfigurationen möglich, und in einigen Beispielen kann der Interrupt so konfiguriert werden, dass er die zu sendenden Inhalte auswählt. Wie bereits erwähnt, können bestimmte Steuerregister (z. B. CR2, CR3, CR4, CR8), Speicherverwaltungsregister (CS, DS, ES, FS, GS, SS usw.) und modellspezifische Register (z. B. SYSENTER_CS_MSR, SYSENTER_EIP_MSR, SYSENTER_ESP_MSR usw.) so konfiguriert werden, dass sie als Reaktion auf eine Verwaltungsunterbrechung gesendet werden.
  • In einem Beispiel umfasst die Verifizierungsprüfung die Feststellung auf der Grundlage eines der Registerinhalte, ob ein Hinweis darauf vorliegt, dass ein Schutz des Benutzerbereichs deaktiviert wurde. So kann beispielsweise eine Sicherheitsmaßnahme ausgelöst werden, wenn CR4.SMEP und/oder CR4.SMAP deaktiviert sind. SMEP und SMAP erschweren es bösartigen Programmen, den Kernel zur Verwendung von Anweisungen oder Daten aus dem Benutzerbereich zu verleiten. Ein weiteres Beispiel ist die Überprüfung der Systemregion Page Map Level 4 (PML4), um sicherzustellen, dass die Einträge nicht als Benutzer gekennzeichnet sind.
  • In einem anderen Beispiel kann eine Sicherheitsmaßnahme ergriffen werden, wenn die Kernel-Space-Mappings bei der Prüfung gegen ein W oder X verstoßen. Betriebssysteme lassen es normalerweise nicht zu, dass eine Speicherseite sowohl beschreibbar als auch ausführbar ist.
  • In einem weiteren Beispiel kann das Gerät 300 die Registerinhalte prüfen, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht. Eine Nichtübereinstimmung kann darauf hinweisen, dass die Kernelseitentabelle des Prozesses in böser Absicht verändert wurde, und es können Sicherheitsmaßnahmen ergriffen werden.
  • In einem anderen Beispiel kann das Gerät 300 den von einem der Registerinhalte referenzierten Code mit einer goldenen Referenz für den referenzierten Code vergleichen. In einigen Beispielen kann die goldene Referenz beim Hochfahren des Computersystems oder mit anderen oben beschriebenen Techniken erfasst werden.
  • Obwohl bestimmte Ausführungen oben gezeigt und beschrieben wurden, können verschiedene Änderungen in Form und Details vorgenommen werden. So können beispielsweise einige Merkmale, die in Bezug auf eine Implementierung und/oder einen Prozess beschrieben wurden, auf andere Implementierungen übertragen werden. Mit anderen Worten: Prozesse, Merkmale, Komponenten und/oder Eigenschaften, die in Bezug auf eine Implementierung beschrieben wurden, können auch in anderen Implementierungen nützlich sein. Darüber hinaus ist zu beachten, dass die hier beschriebenen Systeme und Verfahren verschiedene Kombinationen und/oder Unterkombinationen der Komponenten und/oder Merkmale der verschiedenen beschriebenen Implementierungen umfassen können. So können Merkmale, die unter Bezugnahme auf eine oder mehrere Implementierungen beschrieben werden, mit anderen hier beschriebenen Implementierungen kombiniert werden.

Claims (16)

  1. Computersystem (100, 200), das Folgendes umfasst: mindestens einen Host-Prozessor (120, 230); Speicher (234), der mit dem mindestens einen Host-Prozessor (120, 230) verbunden ist; und ein von dem mindestens einen Host-Prozessor (120, 230) getrenntes Gerät (160, 220), das auf den Speicher (234) zugreifen kann, wobei der mindestens eine Host-Prozessor (120, 230) ein Seitentabellen-Basisregister (232) enthält, wobei der mindestens eine Host-Prozessor (120, 230) dazu dient: Firmware auszuführen, um dem Gerät (160, 220) eine Benachrichtigung bereitzustellen, dass ein Inhalt des Seitentabellen-Basisregisters (232) geändert wurde, in Reaktion darauf, dass der Inhalt geändert wurde; wobei das Gerät (160, 220) als Reaktion auf den Empfang der Benachrichtigung eine Verifizierungsprüfung durchführen soll, wobei die Firmware von dem mindestens einen Host-Prozessor (120, 230) ausgeführt wird, um den mindestens einen Host-Prozessor (120, 230) so zu konfigurieren, dass er als Reaktion auf eine Verwaltungsunterbrechung eine Vielzahl von Registerinhalten an das Gerät (160, 220) sendet, und wobei die Verifizierungsprüfung das Überprüfen der Registerinhalte umfasst, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht.
  2. Computersystem (100, 200) nach Anspruch 1, wobei das Gerät (160, 220) ferner die Verwaltungsunterbrechung als Teil der Verifizierungsprüfung als Reaktion auf den Empfang der Benachrichtigung an den mindestens einen Host-Prozessor (120, 230) senden soll.
  3. Computersystem (100, 200) nach Anspruch 2, wobei die Benachrichtigung den Inhalt enthält.
  4. Computersystem (100, 200) nach Anspruch 1, wobei die Firmware zum Zeitpunkt des Systemstarts ausgeführt wird, bevor der Betrieb des Computersystems (100, 200) an ein Betriebssystem übergeben wird, um die Konfiguration der Benachrichtigung zu sperren, indem Ressourcen in einer Weise beansprucht werden, dass das Betriebssystem nicht in der Lage ist, die beanspruchten Ressourcen zu ändern.
  5. Computersystem (100, 200) nach Anspruch 1, wobei die Verifizierungsprüfung auf der Grundlage eines der Registerinhalte die Feststellung einschließt, dass ein Benutzerraumschutz deaktiviert worden ist.
  6. Computersystem (100, 200) nach Anspruch 1, wobei die Verifikationsprüfung die Feststellung einschließt, ob eine Kernel-Space-Mapping eine Speicherseite enthält, die sowohl beschreibbar als auch ausführbar ist.
  7. Computersystem (100, 200) nach Anspruch 1, wobei die Verifizierungsprüfung den Vergleich von Code, auf den von mindestens einem der Registerinhalte verwiesen wird, mit einer goldenen Referenz für den verwiesenen Code umfasst.
  8. Computersystem (100, 200) nach Anspruch 1, wobei die Verifizierungsprüfung ferner auf einem zweiten Auslöser zusätzlich zu der Benachrichtigung basiert und wobei die Verifizierungsprüfung die Verifizierung mehrerer gepufferter Kontextinformationen umfasst.
  9. Verfahren (500, 600), das Folgendes umfasst: Ausführen (502) von Firmware durch mindestens einen Host-Prozessor (120, 230), um den mindestens einen Host-Prozessor (120, 230) so zu konfigurieren, dass er eine Benachrichtigung, dass sich ein Inhalt eines Seitentabellen-Basisregisters (232) geändert hat, als Reaktion auf den geänderten Inhalt an ein Gerät (160, 220) übermittelt, wobei der mindestens eine Host-Prozessor (120, 230) das Seitentabellen-Basisregister (232) enthält, wobei der mindestens eine Host-Prozessor (120, 230) mit einem Speicher (234) verbunden ist, wobei das Gerät (160, 220) von dem mindestens einen Host-Prozessor (120, 230) getrennt ist und auf den Speicher (234) zugreifen kann; Durchführung (504) einer Verifizierungsprüfung durch das Gerät (160, 220) als Reaktion auf den Empfang der Meldung; Ausführen der Firmware durch den mindestens einen Host-Prozessor (120, 230), um den mindestens einen Host-Prozessor (120, 230) so zu konfigurieren, dass er als Reaktion auf eine Verwaltungsunterbrechung eine Vielzahl von Registerinhalten an das Gerät (160, 220) sendet; und Prüfen der Registerinhalte als Teil der Verifizierungsprüfung, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht.
  10. Verfahren (500, 600) nach Anspruch 9, das ferner umfasst: Senden (604) der Verwaltungsunterbrechung durch das Gerät (160, 220) an den mindestens einen Host-Prozessor (120, 230) als Teil der Verifizierungsprüfung in Reaktion auf den Empfang der Benachrichtigung, wobei die Benachrichtigung den Inhalt enthält.
  11. Verfahren (500, 600) nach Anspruch 9, das ferner umfasst: Ausführen der Firmware zu einem Boot-Zeitpunkt, bevor der Betrieb des Computergeräts an ein Betriebssystem übergeben wird, um die Konfiguration der Benachrichtigung zu sperren, indem Ressourcen in einer Weise beansprucht werden, dass das Betriebssystem nicht in der Lage ist, die beanspruchten Ressourcen zu ändern.
  12. Verfahren (500, 600) nach Anspruch 9, das ferner umfasst: Bestimmung, als Teil der Verifikationsprüfung, ob einer der Registerinhalte anzeigt, dass ein Benutzerraumschutz deaktiviert wurde.
  13. Verfahren (500, 600) nach Anspruch 9, das ferner umfasst: Bestimmen, als Teil der Verifikationsprüfung, ob eine Kernel-Space-Mapping eine Speicherseite enthält, die sowohl beschreibbar als auch ausführbar ist.
  14. Verfahren (500, 600) nach Anspruch 9, das ferner Folgendes umfasst: Vergleichen des von mindestens einem der Registerinhalte referenzierten Codes mit einer goldenen Referenz für den referenzierten Code als Teil der Verifikationsprüfung.
  15. Verfahren (500, 600) nach Anspruch 9, wobei die Verifizierungsprüfung ferner auf einem zweiten Auslöser zusätzlich zu der Benachrichtigung basiert und wobei die Verifizierungsprüfung die Verifizierung mehrerer gepufferter Kontextinformationen umfasst.
  16. Nicht-transitorisches, maschinenlesbares Speichermedium (420), das Befehle speichert, die, wenn sie von einem physischen Verarbeitungselement (410) eines Management Controllers (400) ausgeführt werden, den Management Controller (400) veranlassen: als Reaktion auf den Empfang einer Meldung von mindestens einem Host-Prozessor (120, 230) eines Computersystems (100, 200) eine Verifizierungsprüfung durchführen, wobei das Computersystem (100, 200) den mindestens einen Host-Prozessor (120, 230), einen mit dem mindestens einen Host-Prozessor (120, 230) gekoppelten Speicher (234) und den ebenfalls mit dem Speicher (234) gekoppelten Management-Controller (400) enthält, wobei der Management-Controller (400) von dem mindestens einen Host-Prozessor (120, 230) getrennt ist, wobei der mindestens eine Host-Prozessor (120, 230) ein Seitentabellen-Basisregister (232) enthält, wobei der mindestens eine Host-Prozessor (120, 230) so konfiguriert ist, dass er zur Boot-Zeit die Benachrichtigung an den Management-Controller (400) als Reaktion auf eine Änderung des Inhalts des Seitentabellen-Basisregisters (232) liefert; als Teil der Verifizierungsprüfung eine Verwaltungsunterbrechung an den mindestens einen Host-Prozessor (120, 230) als Reaktion auf den Empfang der Meldung sendet, als Reaktion auf die Verwaltungsunterbrechung eine Vielzahl von Registerinhalten des mindestens einen Host-Prozessors (120, 230) empfängt; eine Sicherheitsmaßnahme als Reaktion auf einen der Registerinhalte, der anzeigt, dass ein Schutz des Benutzerbereichs deaktiviert wurde, durchführt; den Host-Prozessor (120, 230) veranlasst, die Firmware auszuführen, um den mindestens einen Host-Prozessor (120, 230) so zu konfigurieren, dass er als Reaktion auf eine Verwaltungsunterbrechung eine Vielzahl von Registerinhalten an den Management-Controller (400) sendet; und die Registerinhalte als Teil der Verifizierungsprüfung prüft, um festzustellen, ob eine Nichtübereinstimmung in der Anzahl der ausführbaren Seiten zwischen einer Kernel-Seitentabelle eines Prozesses und einer Root-Kernel-Masterseitentabelle besteht.
DE102021109189.6A 2020-06-17 2021-04-13 Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle Active DE102021109189B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/903,946 US11455395B2 (en) 2020-06-17 2020-06-17 Perform verification check in response to change in page table base register
US16/903,946 2020-06-17

Publications (2)

Publication Number Publication Date
DE102021109189A1 DE102021109189A1 (de) 2021-12-23
DE102021109189B4 true DE102021109189B4 (de) 2023-12-14

Family

ID=78823209

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021109189.6A Active DE102021109189B4 (de) 2020-06-17 2021-04-13 Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle

Country Status (3)

Country Link
US (2) US11455395B2 (de)
CN (1) CN113806745B (de)
DE (1) DE102021109189B4 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11455395B2 (en) * 2020-06-17 2022-09-27 Hewlett Packard Enterprise Development Lp Perform verification check in response to change in page table base register
US11893551B2 (en) * 2021-04-15 2024-02-06 Bank Of America Corporation Information security system and method for augmented reality check generation
CN118133737A (zh) * 2024-05-07 2024-06-04 摩尔线程智能科技(北京)有限责任公司 一种上下文切换的验证方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150199507A1 (en) 2012-08-03 2015-07-16 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6446034B1 (en) * 1998-12-16 2002-09-03 Bull Hn Information Systems Inc. Processor emulation virtual memory address translation
US8806224B2 (en) * 2005-06-28 2014-08-12 Intel Corporation Low cost trusted platform
US8090919B2 (en) * 2007-12-31 2012-01-03 Intel Corporation System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
US7917724B2 (en) * 2007-12-28 2011-03-29 Intel Corporation Protection of user-level applications based on page table information
US8060722B2 (en) 2009-03-27 2011-11-15 Vmware, Inc. Hardware assistance for shadow page table coherence with guest page mappings
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US10007784B2 (en) * 2015-03-27 2018-06-26 Intel Corporation Technologies for control flow exploit mitigation using processor trace
US10664181B2 (en) * 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers
US11714910B2 (en) * 2018-06-13 2023-08-01 Hewlett Packard Enterprise Development Lp Measuring integrity of computing system
US11016773B2 (en) * 2019-09-27 2021-05-25 Intel Corporation Processor trace extensions to facilitate real-time security monitoring
US11455395B2 (en) * 2020-06-17 2022-09-27 Hewlett Packard Enterprise Development Lp Perform verification check in response to change in page table base register

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150199507A1 (en) 2012-08-03 2015-07-16 North Carolina State University Methods, systems, and computer readable medium for active monitoring, memory protection and integrity verification of target devices

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Interrupt. In: Wikipedia, the free encyclopedia. Bearbeitungsstand: 02.06.2020. URL: https://en.wikipedia.org/w/index.php?title=Interrupt&oldid=960304240 [abgerufen am 12.04.2023]
MOON, H. [et al.]: Architectural Supports to Protect OS Kernels from Code-Injection Attacks and Their Applications. In: ACM Transactions on Design Automation of Electronic Systems, Vol. 23, 2017, No. 1, Article 10. DOI: 10.1145/3110223

Also Published As

Publication number Publication date
CN113806745B (zh) 2023-08-04
US20220405393A1 (en) 2022-12-22
CN113806745A (zh) 2021-12-17
DE102021109189A1 (de) 2021-12-23
US20210397713A1 (en) 2021-12-23
US11455395B2 (en) 2022-09-27
US11775649B2 (en) 2023-10-03

Similar Documents

Publication Publication Date Title
DE102021109189B4 (de) Verifikationsprüfung durchführen als Antwort auf Änderung im Basisregister der Seitentabelle
DE102011103218B4 (de) Systeme, Verfahren und Vorrichtung zum Virtualisieren von TPM- Zugriffen
US9934376B1 (en) Malware detection appliance architecture
DE112016006003T5 (de) Vertrauenswürdiger Start sicherer Enklaven in virtuellen Umgebungen
US20160191550A1 (en) Microvisor-based malware detection endpoint architecture
US8955104B2 (en) Method and system for monitoring system memory integrity
US6986006B2 (en) Page granular curtained memory via mapping control
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
US11714910B2 (en) Measuring integrity of computing system
US8732824B2 (en) Method and system for monitoring integrity of running computer system
US8694738B2 (en) System and method for critical address space protection in a hypervisor environment
DE102018123817A1 (de) Vorrichtung für den direkten hostzugriff auf den speicherort einer speichervorrichtung
DE112010004885T5 (de) Bereitstellen von Integritätsüberprüfung und -bestätigung in einer verborgenen Ausführungsumgebung
DE10297662T5 (de) Eingebauter Prozessor mit direkter Verbindung von Sicherheitsvorrichtungen für verbesserte Sicherheit
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE102021127631A1 (de) Auf speichersuche basierende prozessüberwachung
DE202014011092U1 (de) Sicherheitsarchitektur für virtuelle Maschinen
US20160232354A1 (en) System memory integrity monitoring
DE102020208234A1 (de) Sichere Adressübersetzungsdienste unter Verwendung von Nachrichtenauthentifizierungscodes und Invalidierungsverfolgung
DE102023202297A1 (de) Wahrung der vertraulichkeit von mandanten in einer cloud-umgebung beim einsatz von sicherheitsdiensten
DE202017007430U1 (de) Erkennen von Bussperrbedingungen und Vermeiden von Bussperren
DE102022108380A1 (de) Verwaltung der speicherung von geheimnissen in speichern von baseboard-management-controller
DE102022108436A1 (de) Server mit netzwerkschnittstellenkarte baseboard-management-controller
CN105049445A (zh) 一种访问控制方法及独立式访问控制器
DE102021101891B4 (de) Computergerät, Speichermedium und Verfahren zum Bestimmen, ob eine Aktion auf einem Computergerät ausgeführt werden soll, basierend auf der Analyse von Endorsement-Informationen eines Sicherheits-Coprozessors

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R012 Request for examination validly filed
R081 Change of applicant/patentee

Owner name: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, SPR, US

Free format text: FORMER OWNER: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP, HOUSTON, TX, US

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final