-
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.