DE112017004962T5 - Steuerflussintegrität - Google Patents

Steuerflussintegrität Download PDF

Info

Publication number
DE112017004962T5
DE112017004962T5 DE112017004962.8T DE112017004962T DE112017004962T5 DE 112017004962 T5 DE112017004962 T5 DE 112017004962T5 DE 112017004962 T DE112017004962 T DE 112017004962T DE 112017004962 T5 DE112017004962 T5 DE 112017004962T5
Authority
DE
Germany
Prior art keywords
address
control flow
cfg
static
run
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.)
Pending
Application number
DE112017004962.8T
Other languages
English (en)
Inventor
Salmin Sultana
Stanislav Bratanov
David M. Durham
Beeman C. Strong
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE112017004962T5 publication Critical patent/DE112017004962T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3804Instruction prefetching for branches, e.g. hedging, branch folding
    • G06F9/3806Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30054Unconditional branch instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30061Multi-way branch instructions, e.g. CASE
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/3016Decoding the operand specifier, e.g. specifier format
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Eine Ausführungsform stellt eine Vorrichtung bereit. Die Vorrichtung weist Sammlerschaltungen auf, um Prozessor-Trace- (PT) -Daten von einem PT-Treiber zu erfassen. Die PT-Daten weisen ein erstes Zielbefehlszeiger- (TIP) -Paket einschließlich einer ersten Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung auf. Die Vorrichtung weist ferner Decoderschaltungen auf, um das erste TIP-Paket aus den PT-Daten zu extrahieren und das erste TIP-Paket zu decodieren, um die erste Laufzeitzieladresse hervorzubringen. Die Vorrichtung weist ferner Steuerflussvalidiererschaltungen auf, um basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) .zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht. Die CFG weist mehrere Knoten auf, wobei jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Steuerfluss und insbesondere Steuerflussintegrität.
  • ALLGEMEINER STAND DER TECHNIK
  • Rücksprungorientierte Programmierung (ROP) und sprungorientierte Programmierung (JOP) sind jeweils eine Form eines Steuerfluss-Hijacking-Angriffs. Diese Angriffe nutzen Speicherbeschädigungsfehler, wie z. B. Pufferüberlauf aus, um Steuerfluss zu einem bereits existierenden im Speicher gespeicherten ausführbaren Code umzulenken. Die Angriffe vertrauen auf Kurzbefehlfolgen genannt „Gadgets“, die mit einem indirekten Verzweigungsbefehl enden (z. B. Return, Springen*, Aufruf*, wobei * einer indirekten Adressierung entspricht) und von einem Angreifer ausgewählte Operationen ausführen. Steuerflussintegrität- (CFI) -Validierungstechniken können eine Abwehr gegen Steuerfluss-Hijacking-Angriffe bereitstellen. CFI-Validierungstechniken sind konfiguriert, legitime Steuerflussübergänge in einer Anwendung zu garantieren. Vorhandene CFI-Validierungstechniken können eine Quellcodemodifikation und/oder binäre Reinstrumentierung erfordern, um Laufzeit-CFI-Prüfungen in eine binäre Anwendung einzufügen. Ferner können vorhandene CFI-Validierungstechniken eine Leistungseinbuße verursachen und/oder nur eine begrenzte Historie bereitstellen und daher die Genauigkeit begrenzen.
  • Figurenliste
  • Merkmale und Vorteile des beanspruchten Gegenstandes werden aus der folgenden ausführlichen Beschreibung von Ausführungsformen offensichtlich, deren Beschreibung unter Bezugnahme auf die begleitenden Zeichnungen in Betracht gezogen werden sollte:
    • 1 veranschaulicht ein Funktionsdiagramm eines Systems, das mit mehreren Ausführungsformen der vorliegenden Offenbarung konsistente Steuerflussintegritätsschaltungen aufweist;
    • 2 ist ein Ablaufdiagramm von Vorverarbeitungsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung; und
    • 3 ist ein Ablaufdiagramm von Steuerflussintegritätsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • Obwohl die folgende ausführliche Beschreibung unter Bezugnahme auf veranschaulichende Ausführungsformen erfolgt, werden für einen Fachmann viele Alternativen, Modifikationen und Variationen davon offensichtlich.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ein Befehls-Trace-Tool (PT-Schaltungen), wie z. B. Intel Prozessor-Trace (PT), das von der Intel Corp. erhältlich ist, kann konfiguriert sein, Informationen (d. h., PT-Daten), die mit der Ausführung einer Zielanwendung in Zusammenhang stehen, mehrere Anwendungen, ausgewählte Speicherbereiche und/oder ein vollständiges System zu erfassen. Die PT-Daten werden in Datenpaketen gesammelt und, können z. B. Timing-Informationen, Programmablaufinformationen (z. B. Verzweigungsziele, Verzweigung Indikatoren genommen/nicht genommen, Funktionsrücksprungadressen) usw. aufweisen. Die Datenpakete können durch PT-Schaltungen zwischengespeichert werden und dann zur Analyse an Speicher und/oder anderen Speicher bereitgestellt werden. Die PT-Daten können dann für steuerflussorientierte Analyseoperationen verwendet werden, um z. B. den Programmablauf zu rekonstruieren.
  • Eine grafische Steuerflussdarstellung (CFG) ist eine Darstellung unter Verwendung von grafischer Aufzeichnung eines Steuerflusses, d. h., Ausführung, Pfade, die von einer Anwendung während der Ausführung der Anwendung durchlaufen werden können. In einer grafischen Steuerflussdarstellung entspricht jeder Knoten in der grafischen Darstellung einem Basisblock. Ein Basisblock ist eine Befehlsfolge, bei dem das Steuern nur am Anfang der Sequenz eintritt und das Steuern nur am Ende der Sequenz austritt. Es gibt kein Verzweigen hinein oder heraus in der Mitte eines Basisblocks. Eine Zieladresse kann beispielsweise einem Start eines Basisblocks entsprechen und ein indirekter Sprungbefehl kann einem Ende des Blocks entsprechen. Eine Adresse des indirekten Verzweigungsbefehls kann einer Quelladresse entsprechen. Eine Zieladresse des indirekten Verzweigungsbefehls kann einer nächstmöglichen Adresse eines nächsten Basisblocks in der CFG entsprechen, d. h., einer beginnenden Adresse eines nächsten/erreichbaren Basisblocks in der CFG entsprechen. Grenzen zwischen zwei Basisblocks (z. B. ein erster Block und ein zweiter Block) stellen einen Steuerflussübergang vom Ende des ersten Blocks zum Beginn des zweiten Blocks dar. Ein Knoten kann daher eine Startadresse des Basisblocks, eine Endadresse des Basisblocks und eine nächstmögliche Startadresse eines nächsten Basisblocks, d. h., einer beginnenden Adresse eines nächsten/erreichbaren Basisblocks aufweisen. Eine grafische Steuerflussdarstellung kann beispielsweise durch Analyse des Quellcodes, binäre Analyse, statische binäre Analyse, Ausführungsprofilerstellung usw. erzeugt werden. Die grafische Steuerflussdarstellung kann dann eine Vielzahl von legitimen Ausführungspfaden aufweisen. Jeder legitime Ausführungspfad kann mehrere durch einen oder mehrere Grenzen verbundene Knoten aufweisen.
  • Steuerflussintegritäts- (CFI) -Validierungstechniken sind konfiguriert, eine CFI-Sicherheitsrichtlinie zu erzwingen, sodass die Ausführung einer Anwendung einem legitimen Weg einer CFG folgt. CFI-Validierungstechniken können daher verwendet werden, um Steuerfluss-Hijack-Angriffe abzuschwächen. Generell ist CFI-Validierung konfiguriert, einen Steuerflussübergang und/oder einen Ausführungspfad bei indirekten oder bedingten Verzweigungen, die zu der Laufzeit bestimmt werden, gegen eine legitime CFG, die vor der Laufzeit bestimmt wurde, zu überprüfen. Wie hierin verwendet, weisen indirekte Verzweigungsbefehle Sprungbefehle, Funktionsaufrufe, Funktionsrückkehrungen, Interrupts usw. auf, die ein Aktualisieren des Befehlszeigers von einem Register oder einer Speicherstelle einbeziehen, sind aber nicht darauf beschränkt. Einige CFI-Validierungstechniken vertrauen auf Quellcodemodifikation oder binäre Reinstrumentierung, um Laufzeit-CFI-Prüfungen in die binäre Anwendung einzufügen.
  • CFI-Validierungstechniken können als grob oder fein kategorisiert werden. Generell sind grobe Steuerflussintegritätstechniken konfiguriert, nur Ziel-(d. h., Bestimmungs) -Adressen, die mit indirekten Verzweigungsbefehlen verknüpft sind, zu validieren. Mit anderen Worten kann ein Pfad von einer Quelladresse (d. h., der die Quelladresse aufweist) zur Zielbestimmungsadresse nicht überprüft werden. Feine Steuerflussintegritätstechniken sind konfiguriert, den Pfad zwischen der Quelle eines indirekten Verzweigungsbefehls und der Zieladresse des Abzweigs zu überprüfen. Feine Steuerungsintegritätstechniken können auch das Überprüfen eines Ausführungspfads zwischen der Zieladresse eines vorhergehenden indirekten Verzweigungsbefehls und der Quelladresse eines gegenwärtigen indirekten Verzweigungsbefehls aufweisen. Grobkörnige Steuerflussintegritätstechniken können verhältnismäßig einfacher zu implementieren sein, können aber nicht alle Steuerflussangriffe detektieren. Feine Steuerflussintegritätstechniken können generell die meisten Steuerflussangriffe detektieren, können aber verhältnismäßig schwieriger zu implementieren sein und/oder können in Leistungseinbußen resultieren.
  • Eine Zieladresse eines indirekten Verzweigungsbefehls kann identifizierbar oder nicht identifizierbar sein. Eine identifizierbare Zieladresse kann von der binären Anwendung (d. h., dem Anwendungsbinärcode) vor der Laufzeit bestimmt werden. Eine nicht identifizierbare Zieladresse kann nicht vor der Laufzeit identifiziert werden. Eine identifizierbare Zieladresse kann eindeutig identifizierbar sein oder kann nicht eindeutig identifizierbar sein. Eine eindeutig identifizierbare Zieladresse entspricht einem Verzweigungsbefehl mit einer nächstmöglichen Adresse. Daher kann eine nächstmögliche Adresse für einen ausgewählten Knoten einer nächstmöglichen Adresse eines nächsten Basisblocks entsprechen. Eine identifizierbare Zieladresse, die nicht eindeutig identifizierbar ist, entspricht mehreren identifizierten nächstmöglichen Adressen, die vor der Laufzeit z. B. während der statischen Analyse wie hierin beschrieben identifiziert werden können. Daher kann eine Zieladresse eines indirekten Verzweigungsbefehls eines ausgewählten Knotens irgendeinem von einem Satz von nächstmöglichen Adressen entsprechen. Daher kann jeder in einem CFG beinhaltete Knoten eine nächstmögliche Adresse eines nächsten Basisblocks oder ein Nicht-gefunden-Tag aufweisen.
  • Generell betrifft diese Offenbarung Steuerflussintegrität (CFI). Eine Vorrichtung, ein Verfahren und/oder System sind konfiguriert, Prozessor-Trace- (PT) -Daten, die aus PT-Schaltungen erfasst sind, und eine grafische Steuerflussdarstellung (CFG) zu verwenden, um in Echtzeit zu bestimmen, ob eine Steuerflussverletzung in einer ausführenden Zielanwendung existiert. PT-Schaltungen und PT-Daten sind konfiguriert, Laufzeitsteuerflussinformationen bereitzustellen (d. h., eine Ausführungs-Trace), die dann verwendet werden kann, um Steuerflussintegrität zu erzwingen. Steuerflussintegrität, welche die Ausführungs-Trace verwendet, ist konfiguriert, Malware zu detektieren, die unter Verwendung logikbasierter Techniken verhältnismäßig schwieriger zu detektieren sein kann. Die CFG kann während der Vorverarbeitungsoperationen, wie z. B. statische Analyse, vor der Ausführung der Zielanwendung bestimmt werden und/oder kann während der gutartigen Ausführung (d. h., Training) der Zielanwendung, wie z. B. dynamische Analyse, aktualisiert werden.
  • Die Vorrichtung, das Verfahren und/oder das System sind konfiguriert, Steuerflussintegritätsverletzungen in Echtzeit z. B. vor dem Starten einer bösartigen Anwendung zu detektieren. Mindestens anfänglich können Angreifer-Gadgets verhältnismäßig gutartig sein und ein Fenster, in dem Steuerflussverletzungen identifiziert werden können, bereitstellen, und daher kann der Angriff vor dem Starten der bösartigen Anwendung detektiert werden.
  • Steuerflussintegritätsschaltungen weisen Sammlerschaltungen, Decoderschaltungen und Steuerflussvalidiererschaltungen auf, wie sie nachfolgend ausführlicher beschrieben werden. Die Sammlerschaltungen sind konfiguriert, Prozessor-Trace-(PT) -Daten von einem PT-Treiber zu erfassen, der konfiguriert ist, PT-Pakete aus den PT-Schaltungen zu erfassen. Die PT-Daten können ein Zielbefehlszeiger-(TIP) -Paket aufweisen, das eine Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Die Decoderschaltungen sind konfiguriert, das TIP-Paket aus den PT-Daten zu extrahieren und das TIP-Paket zu decodieren, um die Laufzeitzieladresse des Verzweigungsbefehls hervorzubringen. Die Steuerflussvalidiererschaltungen sind konfiguriert, basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht.
  • Wie hierin verwendet ist eine Laufzeitzieladresse eine Zieladresse, die während der Laufzeit basierend mindestens teilweise auf PT-Daten bestimmt wird. Eine statische Zieladresse ist eine in einer CFG beinhaltete Zieladresse. Jede statische Zieladresse kann durch CFG-Erzeugerschaltungen während CFG-Erzeugungsoperationen und/oder durch PT-Schaltungen vor einer gegenwärtigen Laufzeit bestimmt werden, wie z. B. während Vorverarbeitungsoperationen. Daher können die mehreren statischen Zieladressen über mehrere Durchläufe der Zielanwendung während Vorverarbeitungsoperationen bestimmt werden. Während Steuerungsintegritätsvalidierungsoperationen kann eine statische Zieladresse basierend mindestens teilweise auf der CFG statisch bestimmt werden, d. h., sie kann von der CFG abgerufen werden.
  • Beispielsweise können die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket enthalten, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Die Decoderschaltungen können das erste TIP-Paket aus den PT-Daten extrahieren und das erste TIP-Paket decodieren, um die erste Laufzeitzieladresse hervorzubringen. Die Steuerflussvalidiererschaltungen können dann basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht. Die CFG kann mehrere Knoten aufweisen. Jeder Knoten kann eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweisen.
  • Bei einem weiteren Beispiel können die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist. Das erste TIP-Paket und das zweite TIP-Paket können in den PT-Daten sequenziell sein. Die Decoderschaltungen können ferner konfiguriert sein, das zweite TIP-Paket zu codieren, um die zweite Laufzeitzieladresse hervorzubringen. Das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, kann das Bestimmen aufweisen, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht. Die Steuerflussvalidiererschaltungen können ferner konfiguriert sein, zu bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
  • Daher können Steuerflussintegritätsschaltungen konfiguriert sein, PT-Daten, die aus PT-Schaltungen erfasst sind, und eine CFG zu verwenden, um zu bestimmen, ob eine Steuerflussverletzung in einer ausführenden Zielanwendung in Echtzeit existiert.
  • 1 veranschaulicht ein Funktionsdiagramm eines Systems 100, das mit mehreren Ausführungsformen der vorliegenden Offenbarung konsistente Steuerflussintegritätsschaltungen 102 aufweist. Das System 100 kann ferner einen Prozessor 110, einen Speicher 112, eine Kommunikationsschnittstelle 114, ein Betriebssystem (OS) 116, eine Zielanwendung 118 und eine Bibliothek 119 aufweisen. Beispielsweise kann der Prozessor 110 einem Einzelkern- oder einem Mehrkern-Universalprozessor, wie denjenigen, die von der Intel Corp. usw. bereitgestellt werden, entsprechen. Bei einer Ausführungsform kann der Prozessor 110 die Prozessor-Trace- (PT) -Schaltungen 124 aufweisen, wie es nachfolgend ausführlicher beschrieben wird. Die Kommunikationsschnittstelle 114 kann konfiguriert sein, das System 100, verdrahtet und/oder drahtlos, mit einem oder mehreren Kommunikationspartnern (nicht gezeigt) zu koppeln. Die Kommunikationsschnittstelle 114 kann einem oder mehreren Kommunikationsprotokollen entsprechen und/oder damit kompatibel sein. Die Bibliothek 119 kann beispielsweise einer Programmbibliothek entsprechen, die eine oder mehrere Bibliotheksfunktionen aufweist, die konfiguriert sind, von der Zielanwendung 118 verwendet zu werden.
  • Das System 100 kann Folgendes aufweisen, ist aber nicht beschränkt darauf, ein Mobiltelefon einschließlich, aber nicht beschränkt auf, ein Smartphone (z. B. iPhone®, Android®-basiertes Telefon, BlackBerry®, Symbian®-basiertes Telefon, Palm®-basiertes Telefon usw.); eine tragbare Vorrichtung (wie z. B. ein tragbarer Computer, „intelligente“ Uhren, intelligente Brillen, intelligente Kleidung usw.) und/oder ein System; eine vernetzte Internet der Dinge- (IoT) - Vorrichtung; einschließlich, aber nicht beschränkt auf, ein Sensorsystem (z. B. Umgebung, Position, Bewegung usw.) und/oder ein Sensornetzwerk (verdrahtet und/oder drahtlos); ein Computersystem (z. B. ein Server, ein Workstation-Computer, ein Desktop-Computer, ein Laptop, ein Tablet-Computer (z. B. iPad®, GalaxyTab® und dergleichen), ein ultraportabler Computer, ein ultramobiler Computer, ein Netbook-Computer und/oder ein Subnotebook-Computer; usw.
  • Das System 100 kann ferner eine grafische Steuerflussdarstellung- (CFG) -Erzeugerschaltungen 120 und einen CFG-Speicher 122 aufweisen. Bei einigen Ausführungsformen kann das System 100 Disassembler-(DA) -Logik 121 aufweisen. Die DA-Logik 121 ist konfiguriert, Binärcode in Assemblercode, d. h., Assemblersprachbefehle umzuwandeln (d. h., zu disassemblieren). Die CFG-Erzeugerschaltungen 120 sind konfiguriert, eine Anwendungs-CFG, wie z. B. die Anwendungs-CFG 128, für die Zielanwendung 118 basierend mindestens teilweise auf Anwendungsassemblercode zu erzeugen. Die CFG-Erzeugerschaltungen 120 können ferner konfiguriert sein, eine Bibliotheks-CFG, wie z. B. Bibliotheks-CFG 129, für die Bibliothek 119 basierend mindestens teilweise auf Bibliotheksbinärcode zu erzeugen. Die Bibliotheks-CFG 129 ist konfiguriert, Steuerflussintegritätsvalidierungsoperationen zu verbessern. Beispielsweise sind die CFG-Erzeugerschaltungen 120 konfiguriert, eine CFG für den Zielanwendungsbinärcode (d. h., ausführbarer Code) und jeglichen von dem Zielanwendungsbinärcode verwendeten Bibliotheksbinärcode zu erzeugen. Wenn eine Anwendung ausführt, werden Anwendungsbefehle und zugehörige Bibliotheksfunktionen usw. ausgeführt. Während der Anwendungsausführung kann mit anderen Worten der Steuerflussübergang in der Anwendung sowie bei Bibliotheksbefehlen erfolgen.
  • Daher sind die CFG-Erzeugerschaltungen 120 konfiguriert, grafische Steuerflussdarstellungen für die Anwendung 118 und die Bibliotheken, wie z. B. die Bibliothek 119, die durch die Anwendung 118 verwendet wird, zu erzeugen. Die CFGs 128, 129 können dann im CFG-Speicher 122 gespeichert werden. Die CFGs (d. h., Anwendungs-CFG 128 und Bibliotheks-CFG 129) können über statische Analyse des Anwendungsbinärcodes und Bibliotheksbinärcodes erzeugt werden. Die CFGs 128, 129 können generell in einem Offline-Prozess erzeugt werden. Die von der statischen Analyse der Binärdateien extrahierten indirekten Verzweigungszieladressen sind in Bezug auf die statische Startadresse des Binärcodes. Während der Laufzeit können der Anwendungsbinärcode und die Bibliotheksbinärdateien in Adressen geladen werden, die sich von den während der statischen Analyse verwendeten statischen Startadressen unterscheiden. Daher können Laufzeitmodul- (Map) Ladeeinformationen verwendet werden, um das indirekte Laufzeitverzweigungsziel in die statisch bestimmte und gespeicherte indirekte Sprungzieladresse als berechnetes Ziel = Laufzeitadresse - Laufzeitmodulladeadresse + statische Modulstartadresse zu übersetzen. Daher können die CFG-Erzeugerschaltungen 120 konfiguriert sein, jede CFG basierend mindestens teilweise auf Binärcode der Zielanwendung 118 und/oder Binärcode der Bibliothek 119 zu erzeugen.
  • Die CFG-Erzeugerschaltungen 120 sind konfiguriert, Assemblercode von der DA-Logik 121 zu empfangen. Die DA-Logik 121 ist konfiguriert, Zielanwendungsbinärcode und/oder Bibliotheksbinärcode zu empfangen, der entsprechend der Zielanwendung 118 und/oder der Bibliothek 119 entspricht. Die DA Logik 121 ist ferner konfiguriert, den Binärcode in Assemblersprache umzuwandeln, d. h., zu disassemblieren. Die DA-Logik 121 kann IDA Pro und/oder IDA Starter interaktive Disassembler, die von Hex-Rays, SA, Belgien verfügbar sind, aufweisen, ist aber nicht beschränkt darauf. Natürlich sind unterschiedliche und/oder danach entwickelte Disassembler hierin gleichermaßen denkbar.
  • Die CFG-Erzeugerschaltungen 120 sind konfiguriert, eine CFG basierend mindestens teilweise auf dem Assemblercode zu erzeugen, welcher der Zielanwendung 118 und der Bibliothek 119 entspricht. Die CFG-Erzeugerschaltungen 120 sind konfiguriert, Basisblöcke zu identifizieren und Verbindungen zwischen Basisblöcke basierend mindestens teilweise auf Assemblerbefehlen zu identifizieren, um die CFG zu erzeugen. Beispielsweise können eine oder mehrere identifizierbare Zieladressen statisch identifiziert werden. Bei einem weiteren Beispiel kann ein Satz von möglichen identifizierbaren Zieladressen für jeden indirekten Verzweigungsbefehl bestimmt werden, der zugehörige identifizierbare, aber nicht eindeutig identifizierbare, Zieladressen aufweist. Daher kann für jeden Verzweigungsbefehl eine identifizierbare Zieladresse identifiziert werden, ein Satz von identifizierbaren Zieladressen identifiziert werden oder der Verzweigungsbefehl kann mit einem Nicht-gefunden-Tag wie hierin beschrieben markiert werden.
  • Beispielsweise kann eine eindeutig identifizierbare Zieladresse einem konstanten Wert entsprechen. Bei einem weiteren Beispiel kann eine nicht eindeutig identifizierbare Zieladresse einem arithmetisch berechneten Wert entsprechen. Der arithmetisch berechnete Wert kann zur Laufzeit berechnet werden. Bei einem weiteren Beispiel kann eine nicht identifizierbare Zieladresse einen arithmetisch berechneten Wert, einen Bibliotheksaufruf, einen Ausnahmebehandler usw. aufweisen, ist aber nicht beschränkt darauf. Ein Knoten, der einen indirekten Verzweigungsbefehl mit einer nicht identifizierbaren Zieladresse aufweist, kann beispielsweise mit einem Nicht-gefunden-Tag markiert werden. Das Nicht-gefunden-Tag ist konfiguriert, Steuerflussvalidiererschaltungen 134 anzuzeigen, dass eine Zieladresse des entsprechenden indirekten Verzweigungsbefehls nicht identifiziert wurde. Die Steuerflussvalidiererschaltungen 134 können dann konfiguriert sein, eine strikte oder eine gelockerte Standardrichtlinie zu implementieren. Beispielsweise kann die strikte Standardrichtlinie dem Signalisieren einer Steuerflussverletzung für eine nicht identifizierbare Zieladresse entsprechen und die gelockerte Standardrichtlinie kann dem Ermöglichen von Steuerflussübergang zu jeder Zieladresse entsprechen. Die gelockerte Standardrichtlinie kann ferner das Überwachen einer Rücksprungadresse aufweisen, um z. B. einen ROP-Angriff zu detektieren.
  • Bei einer Ausführungsform können Steuerflussvalidiererschaltungen 134 konfiguriert sein, eine statische Analyse der Binärdateien, wie z. B. Binärcode der Zielanwendung 118 und/oder Binärcode der Bibliothek 119 auszuführen. Die statische Analyse kann das Identifizieren jedes Basisblocks, das Identifizieren einer entsprechenden Startadresse jedes Basisblocks, das Identifizieren einer entsprechenden Endadresse jedes Basisblocks und das Identifizieren eines nächsten erreichbaren Basisblocks, falls möglich, aufweisen. Die statische Analyse kann ferner das Überwachen der Propagierung von konstanten Werten in Prozessorregister, Überwachungsfunktionsaufrufe und zugehörige Rückkehrbefehle, Switch- und/oder Case-Befehle, das Überwachen von C++-Konstruktoren und virtuelle Tabellenadressen usw. aufweisen, ist aber nicht beschränkt darauf.
  • Beispielsweise kann eine Startadresse des nächsten erreichbaren Basisblocks einer Zieladresse eines letzten Verzweigungsbefehls eines gegenwärtigen Basisblocks entsprechen. Bei einem weiteren Beispiel kann die Fortpflanzung eines konstanten Wertes in ein Prozessorregister und/oder Variablen überwacht werden. Die Steuerflussvalidiererschaltungen 134 können ferner konfiguriert sein, zu bestimmen, ob jeder Konstante und/oder Variable als eine Operandenadresse eines indirekten Verzweigungsbefehls verwendet wird. Daher können eine oder mehrere Zieladressen von indirekten Verzweigungsbefehlen, wie z. B. ein indirekter Aufruf und/oder ein indirekter Sprung, identifiziert werden. Bei einem weiteren Beispiel können die Steuerflussvalidiererschaltungen 134 konfiguriert sein, Funktionsaufrufe zu überwachen. Die Steuerflussvalidiererschaltungen 134 können ferner konfiguriert sein, das nächste erreichbare Ziel des gegenwärtigen Basisblocks, das mit einem Rückkehrbefehl von dem Funktionsaufruf endet, zu aktualisieren. Bei einem weiteren Beispiel können Switch- und/oder Case-Befehle überwacht werden und kann ein Start jedes Case-Blocks identifiziert werden. Daher können, wenn ein indirekter Sprungbefehl aufgrund eines Switch und/oder Case ausgeführt wird, mindestens einige von einem Satz von möglichen Zielen des indirekten Sprungbefehls identifiziert werden. Bei einem weiteren Beispiel für Zielanwendungen, die in C++ implementiert sind, kann ein C++-Konstruktor überwacht werden, um eine oder mehrere virtuelle Tabellenadressen zu identifizieren. Daher können eine oder mehrere virtuelle Funktionsadressen identifiziert werden und ein Satz von möglichen Zieladressen identifiziert werden (d. h., identifizierbare, aber nicht eindeutig identifizierbare Zieladressen. können identifiziert werden). Auf diese Weise kann eine Größe des Satzes von möglichen Zieladressen eingeschränkt werden und der eingeschränkte Satz kann für mit einem virtuellen Funktionsaufruf in Zusammenhang stehende Steuerflussintegritätsvalidierungsoperationen verwendet werden.
  • Das System 100 kann ferner PT-Schaltungen 124 und PT-Treiber 126 aufweisen. Die PT-Schaltungen 124 sind ein Befehls-Trace-Tool, wie z. B. Intel-Prozessor-Trace, das von der Intel Corp. verfügbar ist und konfiguriert ist, PT-Daten zu erfassen, die mit der Ausführung von z. B. der Zielanwendung 118 in Zusammenhang stehen. Die PT-Daten können mehrere Datenpakete aufweisen, die Timing-Information und/oder Programmablaufinformationen aufweisen können. Die PT-Daten können Zielbefehlszeiger- (TIP) -Pakete, TNT- (genommen/nicht genommen) -Paketflussaktualisierungspakete (FUPs) und/oder Modus-Pakete aufweisen. Die FUPs sind konfiguriert, Quellen-IP- (Befehlszeiger) -Adressen für asynchrone Ereignisse, wie z. B. Interrupts und Ausnahmen, sowie andere Situationen bereitzustellen, in denen eine Quelladresse vom Binärcode vielleicht nicht bestimmt werden kann. TIP-Pakete sind konfiguriert, ein TIP zu enthalten, das einer Zieladresse von indirekten Verzweigungsbefehlen, Ausnahmen, Interrupts und/oder anderen Abzweigen oder Ereignissen entspricht. Ein TIP-Paket kann beispielsweise eine Laufzeitzieladresse enthalten, die mit einem indirekten Verzweigungsbefehl, wie z. B. einer Rücksprungadresse (d. h., RET) verknüpft ist, die mit einem Funktionsaufrufbefehl verknüpft ist.
  • Ein TNT-Paket kann konfiguriert sein, die „Richtung“ (z. B. genommen oder nicht aufgenommen) von einem deterministischen Verzweigungsbefehl nachzuverfolgen. Beispielsweise kann ein TNT-Paket einen TNT-Indikator (d. h., ein Bit), das mit dem deterministischen (d. h., direkten) Verzweigungsbefehl verknüpft ist, enthalten. Deterministische Verzweigungsbefehle sind Verzweigungsbefehle, bei denen die bedingten Zieladressen vor der Laufzeit bekannt sind. Der ausgewählte Abzweig wird während der Laufzeit basierend auf einer Bedingung bestimmt. Daher sind die Zieladresse und der TNT-Indikator ausreichend, um eine legitime Zieladresse des deterministischen Verzweigungsbefehls zu bestimmen.
  • Ein TNT-Paket kann ferner verwendet werden, um einen „komprimierten“ Rückkehrzielindikator für einen zugehörigen Funktionsaufrufbefehl bereitzustellen. Beispielsweise kann der TNT-Indikator (z. B. der TNT-Indikator, der „genommen“ entspricht), der im TNT-Paket beinhaltet ist, verwendet werden, um anzuzeigen, dass ein Funktionsaufrufbefehl-Rückkehrziel dem Befehl entspricht, der dem Funktionsaufrufbefehl folgt. Deshalb kann der TNT-Indikator von Steuerflussintegritätsschaltungen 102 verwendet werden, um zu bestimmen, ob eine Steuerflussverletzung existiert.
  • Der PT-Treiber 126 ist konfiguriert, eine Schnittstelle zwischen PT-Schaltungen 124 und Verbrauchern der PT-Daten bereitzustellen. Beispielsweise kann PT-Treiber 126 konfiguriert sein, PT-Daten, wie z. B. PT-Pakete, von PT-Schaltungen 124 zu erfassen. Der PT-Treiber 126 kann Trace-Operationen von PT-Schaltungen 124 über einen oder mehrere Befehle von dem PT-Treiber 126 zu PT-Schaltungen 124 konfigurieren. Beispielsweise kann der PT-Treiber 126 PT-Schaltungen 124 konfigurieren, um nur einen Teil von möglichen PT-Datenpaketen, wie z. B. nur TIP-Pakete, zu erlangen. Das Begrenzen der Erlangung von TIP-Paketen ist konfiguriert, einen Overhead zu reduzieren, der mit dem Erlangen von PT-Daten in Zusammenhang steht, und kann daher das Erlangen von verhältnismäßig mehr TIP-Paketen, wie z. B. öfter, erleichtern.
  • Die Steuerflussintegritäts- (CFI) -Schaltungen 102 weisen Sammlerschaltungen 130, Decoderschaltungen 132, Steuerflussvalidiererschaltungen 134 und den Richtlinienspeicher 136 auf. Die CFI-Schaltungen 102 sind konfiguriert, die Ausführung der Zielanwendung 118 zu überwachen, um eine Steuerflussverletzung zu detektieren, falls vorhanden. Mit anderen Worten sind CFI-Schaltungen 102 konfiguriert, zu bestimmen, ob ein Steuerflussübergang zu einer Laufzeitzieladresse, die basierend mindestens teilweise auf PT-Daten bestimmt ist, die aus PT-Schaltungen 124 erfasst wurden, einer Steuerflussverletzung entspricht. Die Bestimmung kann ferner, mindestens teilweise, auf einer grafischen Steuerflussdarstellung, wie z. B. CFG 128 und/oder 129, basieren. Die CFI-Schaltungen 102 sind konfiguriert, die Bestimmung in Echtzeit auszuführen, während ein Angreifer-Gadget verhältnismäßig gutartig ist, und vor dem Starten einer zugehörigen bösartigen Anwendung.
  • Im Betrieb, vor der Ausführung der Zielanwendung 118, kann das System 100 konfiguriert sein, Vorverarbeitungsoperationen, wie z. B. statische Analyse, auszuführen. Vorverarbeitungsoperationen weisen das Erzeugen, durch CFG-Erzeugerschaltungen 120, einer Anwendungs-CFG 128, die der Zielanwendung 118 entspricht, auf. Vorverarbeitungsoperationen können ferner das Erzeugen, durch die CFG-Erzeugerschaltungen 120, einer Bibliotheks-CFG 129, die der Bibliothek 119 entspricht, aufweisen. Beispielsweise können die CFG-Erzeugerschaltungen 120 konfiguriert sein, eine statische binäre Analysemethode zu verwenden, um die CFGs 128, 129 zu erzeugen. Die Anwendungs-CFG 128 und Bibliotheks-CFG 129 können dann kombiniert und im CFG-Speicher 122 gespeichert werden.
  • Bei einigen Ausführungsformen können PT-Schaltungen 124 verwendet werden, um die Erzeugung von CFG 128, 129 zu erleichtern. Bei diesen Ausführungsformen kann mindestens eine Untergruppe von möglichen identifizierbaren Zieladressen für mindestens einige der indirekten Verzweigungsbefehle mit identifizierbaren Zieladressen bestimmt werden. Beispielsweise kann die CFG unter Verwendung von statischer Analyse wie hierin beschrieben bestimmt werden, mit identifizierbaren Zieladressen verbessert werden, die, die von erfassten PT-Daten abgerufen wurden, die mit einer Anzahl an Trainingsdurchläufen der Zielanwendung 118 in Zusammenhang stehen. Mit anderen Worten kann jeder Trainingslauf einer gutartigen Ausführung der Zielanwendung 118 entsprechen. Wie hierin verwendet, bedeutet gutartig, nicht anfällig für einen Angriff. Wie hierin verwendet, kann dynamische Analyse dem Verwenden von PT-Schaltungen 124 und Trainingsdurchläufen entsprechen, um mögliche Zieladressen zu identifizieren, die dann verwendet werden können, um die CFG 128, 129 zu aktualisieren.
  • Es können beispielsweise CFI-Schaltungen 102 konfiguriert sein, eine oder mehrere mögliche identifizierbare Zieladressen zu identifizieren. Die möglichen identifizierbaren Zieladressen können dann in der CFG 128 und/oder 129 gespeichert werden. Während der Vorverarbeitungsoperationen kann beispielsweise die Zielanwendung 118 gestartet werden und Operationen von PT-Schaltungen 124 können initiiert werden. Die Sammlerschaltungen 130 können dann konfiguriert sein, ein oder mehrere PT-Pakete von dem PT-Treiber 126 zu erfassen. Die PT-Daten können TIP-Pakete enthalten, die dann aus den PT-Daten durch die Decoderschaltungen 132 extrahiert werden können. Die Decoderschaltungen 132 können ferner konfiguriert sein, jedes TIP-Paket zu decodieren, um eine entsprechende Laufzeitzieladresse hervorzubringen. Die Steuerflussvalidiererschaltungen 134 können dann konfiguriert sein, jede Laufzeitzieladresse als eine entsprechende statische Zieladresse an die CFG 128 und/oder 129 bereitzustellen. Die Steuerflussvalidiererschaltungen 134 können ferner konfiguriert sein, jede statische Zieladresse mit dem entsprechenden Verzweigungsbefehl in der Anwendungs-CFG 128 und/oder der Bibliotheks-CFG 129, die im CFG-Speicher 122 gespeichert sind, zu verknüpfen.
  • Die CFI-Schaltungen 102 können konfiguriert sein, diese Operationen einige Male zu wiederholen. Die während dieser Vorverarbeitungsoperationen identifizierten statischen Zieladressen können mindestens einer Untergruppe von allen identifizierbaren möglichen Zieladressen eines indirekten Verzweigungsbefehls entsprechen. Eine Größe eines Anteils von allen identifizierbaren in der Untergruppe beinhalteten möglichen Zieladressen kann mit einer Anzahl an Durchläufen und/oder mit der Manipulation der ausführenden Anwendung zunehmen, um z. B. eine Vielzahl von möglichen Steuerflusspfaden zu triggern. Die identifizierten statischen Zieladressen können dann während des normalen Betriebs verwendet werden. Wie hierin verwendet, bedeutet normaler Betrieb nicht Trainingsdurchläufe. Während des normalen Betriebs kann mit anderen Worten die Zielanwendung 118 für einen Angriff anfällig sein.
  • Daher können die CFGs 128, 129 während Vorverarbeitungsoperationen erzeugt werden, die eine statische und/oder dynamische Analyse verwenden. Bei einer Ausführungsform kann mindestens eine Untergruppe von identifizierbaren möglichen Zieladressen während der CFG-Erzeugung durch Analysieren der Assembler-Befehle, d. h., der statischen Analyse identifiziert werden. Bei einer weiteren Ausführungsform kann mindestens eine Untergruppe von identifizierbaren möglichen Zieladressen während Vorverarbeitungsoperationen identifiziert werden, welche die PT-Schaltungen 124 und CFI-Schaltungen 102, d. h., dynamische Analyse, verwenden.
  • Daher können Vorverarbeitungsoperationen ausgeführt werden, die konfiguriert sind, die erzeugten CFGs 128, 129 zu erzeugen und/oder zu verbessern, die dann in dem CFG-Speicher 122 gespeichert werden können. Die Vorverarbeitungsoperationen können das Erzeugen der CFGs 128, 129 unter Verwendung der CFG-Erzeugerschaltungen 120 aufweisen. Die Vorverarbeitungsoperationen können ferner das Disassemblieren der Zielanwendung und/oder des Bibliothekbinärcodes durch die DA-Logik 121 aufweisen. Bei einigen Ausführungsformen können die Vorverarbeitungsoperationen das Erfassen von PT-Daten und das Decodieren von TIP-Paketen, um eine Laufzeitzieladresse bzw. Laufzeitzieladressen hervorzubringen, aufweisen. Die Laufzeitzieladresse(n) können dann verwendet werden, um die CFGs 128, 129 zu verbessern.
  • Beim Start des normalen Betriebs des Systems 100 kann die Zielanwendung 118 gestartet und können die PT-Schaltungs- 124 -Operationen initiiert werden. Die Sammlerschaltungen 130 können dann konfiguriert sein, ein PT-Paket (PT-Daten) von dem PT-Treiber 126 zu erfassen. Die PT-Daten können ein TIP-Paket enthalten, das dann aus den PT-Daten durch Decoderschaltung 132 extrahiert werden kann. Die Decoderschaltungen 132 können ferner konfiguriert sein, jedes TIP-Paket zu decodieren, um eine entsprechende Laufzeitzieladresse eines indirekten Verzweigungsbefehls hervorzubringen. Die Steuerflussvalidiererschaltungen 134 können dann konfiguriert sein, basierend, mindestens teilweise, auf einer CFG, wie z. B. die Anwendungs-CFG 128 und/oder die Bibliotheks-CFG 129, zu bestimmen, ob es eine Steuerflussverletzung gibt, d. h., ob ein Steuerflussübergang zur Laufzeitzieladresse einer Steuerflussverletzung entspricht.
  • Bei einer Ausführungsform können die Decoderschaltungen 132 konfiguriert sein, alle in PT-Daten beinhaltete Pakete zu decodieren. Solche Pakete können aufweisen, sind aber nicht beschränkt auf, TNT Pakete, TIP-Pakete, FUPs und/oder Modus-Pakete. TIP-Pakete sind konfiguriert, sodass sie indirekte Sprungziel-IP-Adressen wie hierin beschrieben aufweisen. Eine Quelle des indirekten Abzweigs kann durch miteinander korrelierende PT-Daten mit CFG-Daten bestimmt werden. FUPs sind konfiguriert, sodass sie eine Quellen-IP-Adresse aufweisen. Wenn beispielsweise eine Quelladresse nicht identifiziert werden kann, z. B. oder asynchrone Ereignisse wie Interrupts, kann die Quelladresse in einem FUP berichtet werden. Bei dieser Ausführungsform kann eine Quelle und ein Ziel eines indirekten Verzweigungsbefehls auf Kosten eines erhöhten Decodier-Overheads identifiziert werden. Ein Steuerflusspfad zwischen (gegenwärtiger Quelle, gegenwärtigem Ziel) und (letztem Ziel, gegenwärtiger Quelle) kann überprüft werden. Das Extrahieren (und Decodieren) aller PT-Pakete kann die Rekonstruktion eines gesamten Ausführungsflusses ermöglichen. PT-Daten können die Identifikation jedes Verzweigungsbefehls erleichtern, der mit der Laufzeitzieladresse verknüpft ist, und daher eine feine Steuerflussintegritätsvalidierung.
  • Bei einer weiteren Ausführungsform können die Decoderschaltungen 132 konfiguriert sein, TIP-Pakete und/oder TNT Pakete zu decodieren. Das Decodieren von nur TIP- und/oder TNT-Paketen ist konfiguriert, verglichen mit dem Decodieren aller Pakete einen verhältnismäßig niedrigeren Overhead zu verursachen.
  • Bei dieser Ausführungsform entspricht das Decodieren der TIP-Pakete dem Decodieren von nur Verzweigungszieladressen, d. h., Laufzeitzieladressen. Daher sind bei dieser Ausführungsform die Steuerflussvalidiererschaltungen 134 konfiguriert, (basierend mindestens teilweise auf der CFG) zu bestimmen, ob ein legitimer Steuerflusspfad zwischen einem letzten TIP-Ziel (d. h., einer letzten Laufzeitzieladresse) im gegenwärtigen TIP-Ziel (d. h., einer gegenwärtigen Laufzeitzieladresse) existiert.
  • Beispielsweise kann unter Verwendung von PT-Daten aus PT-Schaltungen 124 eine zuletzt gefundene Laufzeitzieladresse und eine gegenwärtige Laufzeitzieladresse identifiziert werden. Die Steuerflussvalidiererschaltungen 134 können dann konfiguriert sein, die Laufzeitzieladressen und die CFG 128, 129 zu verwenden, um zu bestimmen, ob es einen legitimen Steuerflusspfad zwischen den zwei Laufzeitzieladressen gibt.
  • Beispielsweise können die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket enthalten, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Die Decoderschaltungen können das erste TIP-Paket aus den PT-Daten extrahieren und das erste TIP-Paket decodieren, um die erste Laufzeitzieladresse hervorzubringen. Die Steuerflussvalidiererschaltungen können dann basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht. Die CFG kann mehrere Knoten aufweisen. Jeder Knoten kann eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweisen.
  • Bei einem weiteren Beispiel können die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist. Das erste TIP-Paket und das zweite TIP-Paket können in den PT-Daten sequenziell sein. Die Decoderschaltungen können ferner konfiguriert sein, das zweite TIP-Paket zu codieren, um die zweite Laufzeitzieladresse hervorzubringen. Das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, kann das Bestimmen aufweisen, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht. Die Steuerflussvalidiererschaltungen können ferner konfiguriert sein, zu bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist. Beispielsweise können die Steuerflussvalidiererschaltungen 134 konfiguriert sein, z. B. einen Administrator über die Steuerflussverletzung zu benachrichtigen, und sie können dann die Ausführung der Zielanwendung 118 anhalten. Wenn ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, dann kann eine Steuerflussverletzung nicht existieren und der Operation der Zielanwendung 118 kann erlaubt werden, fortzufahren.
  • In einigen Situationen kann die CFG 128 und/oder 129 keine statische Zieladresse aufweisen, die dem Verzweigungsbefehl entspricht. Vielmehr kann die CFG 128 und/oder 129 ein Nicht-gefunden-Tag wie hierin beschrieben aufweisen. In solchen Situationen kann die Operation der CFI-Schaltungen 102 basierend mindestens teilweise auf einer Richtlinie bestimmt werden. Die Richtlinie kann beispielsweise im Richtlinienspeicher 136 gespeichert werden, wie z. B. als Teil von Vorverarbeitungsoperationen. Die Richtlinie kann beispielsweise strikt sein, sodass die Ausführung eines indirekten Verzweigungsbefehls ohne eine legitime statische Zieladresse in einer Steuerflussverletzung resultieren kann. Bei diesem Beispiel kann eine Steuerflussverletzung ausgelöst werden unabhängig davon, ob eine Steuerflussverletzung tatsächlich existiert oder nicht. Die strikte Richtlinie kann mit anderen Worten in falsch positiven Ergebnissen resultieren. Bei einem weiteren Beispiel kann die Richtlinie gelockert sein, sodass die Ausführung eines indirekten Verzweigungsbefehls mit einem Nicht-gefunden-Tag nicht in einer Steuerflussverletzung resultieren kann. Während bei diesem Beispiel falsch positive Ergebnisse vermieden werden können, werden vielleicht Steuerflussverletzungen und daher böswillige Angriffe, die indirekte Sprungziele beeinflussen, nicht detektiert.
  • Bei einigen Ausführungsformen können die Steuerflussvalidiererschaltungen 134 beispielsweise für eine gelockerte Richtlinie konfiguriert sein, Funktionsaufrufrücksprungadressen zu überwachen. Bei diesem Beispiel kann der indirekte Verzweigungsbefehl einem Funktionsaufruf entsprechen und das TIP-Paket kann eine Laufzeitrücksprungadresse (RET) aufweisen. Die Steuerflussvalidiererschaltungen 134 können konfiguriert sein, eine statische Rücksprungadresse der CFG 128 und/oder 129 abzurufen, die dem Funktionsaufruf entspricht. Ähnlich dem Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, eine Laufzeitrücksprungadresse entspricht nicht einer statischen Rücksprungadresse, kann dann eine Steuerflussverletzung existieren und die Steuerflussvalidiererschaltungen 134 können konfiguriert sein, die Steuerflussvalidierung mitzuteilen und die Ausführung der Zielanwendung 118 anzuhalten.
  • Bei einigen Ausführungsformen können die Steuerflussvalidiererschaltungen 134 konfiguriert sein, basierend mindestens teilweise auf den PT-Daten selbst zu bestimmen, ob eine Steuerflussverletzung existiert. Bei dieser Ausführungsform kann der indirekte Verzweigungsbefehl einem Funktionsaufruf entsprechen und die PT-Daten können ein Bit in einem TNT-Paket anstelle eines TIP-Pakets aufweisen, das eine Rückkehrzieladresse enthält. Wenn die PT-Daten das TNT-Paket aufweisen (d. h., komprimierte RET), und der TNT-Indikator, d. h., das Bit im TNT-Paket, das dem TIP-Paket entspricht, genommen entspricht, dann kann eine Steuerflussverletzung nicht existieren. Mit anderen Worten bedeutet der TNT-Indikator, der genommen entspricht, dass die PT-Schaltungen bestimmt haben, dass die Funktionsaufrufrücksprungadresse mit der nächsten Adresse im Anschluss an die Adresse des Funktionsaufrufs übereingestimmt hat. Daher können die PT-Daten durch Steuerflussvalidiererschaltungen 134 verwendet werden, um zu bestimmen, ob eine Steuerflussverletzung existiert.
  • Bei einer Ausführungsform können die Sammlerschaltungen 130 konfiguriert sein, den PT-Treiber 126 anzuweisen, die PT-Schaltungen 124 zu konfigurieren, nur TIP-Pakete zu erfassen. Die Sammlerschaltungen 130 können ferner konfiguriert sein, den PT-Treiber 126 anzuweisen, die PT-Schaltungen 124 zu konfigurieren, nur ausgewählte TIP-Pakete zu erfassen. Beispielsweise können die ausgewählten TIP-Pakete Zieladressen entsprechen, die mit indirekten Aufrufen und/oder Sprüngen, Funktionsrückehrungen und/oder Interrupts in Zusammenhang stehen. Mit anderen Worten können PT-Schaltungen 124 eine Vielzahl von PT-Daten und entsprechende PT-Pakete wie hierin beschrieben erfassen. Solche Operationen von PT-Schaltungen 124 können zu einem Overhead beitragen, der z. B. mit Prozessor 110 in Zusammenhang steht, und sie können in Leistungseinbußen resultieren. Das Konfigurieren von PT-Schaltungen 124, um selektiv TIP-Pakete zu erfassen, kann den Overhead und die entsprechende Leistungseinbuße reduzieren. Ein reduzierter Overhead und eine reduzierte Leistungseinbuße können das Erfassen von PT-Daten verhältnismäßig öfter unterstützen und daher die Steuerflussintegritätsoperationen verbessern.
  • Daher können Prozessor-Trace- (PT) -Daten, die aus PT-Schaltungen erfasst wurden, und eine grafische Steuerflussdarstellung (CFG) verwendet werden, um in Echtzeit zu bestimmen, ob eine Steuerflussverletzung in einer ausführenden Zielanwendung existiert. PT-Daten, die aus PT-Schaltungen erfasst wurden, und eine CFG können mit anderen Worten verwendet werden, um zu bestimmen, ob ein Steuerflussübergang zu einer Laufzeitzieladresse einer Steuerflussverletzung entspricht. Die CFG kann vor der Ausführung der Zielanwendung bestimmt werden. Die CFG kann basierend mindestens teilweise auf PT-Daten erzeugt werden, die während Vorverarbeitungsoperationen wie hierin beschrieben erfasst wurden. Die Steuerflussvollständigkeitsverletzungen können vor dem Starten einer bösartigen Anwendung in Echtzeit detektiert werden.
  • 2 ist ein Ablaufdiagramm 200 von Vorverarbeitungsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung.
  • Insbesondere veranschaulicht das Ablaufdiagramm 200 Vorverarbeitungsoperationen, die konfiguriert sind, die Genauigkeit von Steuerflussverletzungsdetektion zu verbessern. Die Operationen können beispielsweise durch die Steuerflussintegritätsschaltungen 102 (z. B. die Sammlerschaltungen 130, Decoderschaltungen 132 und/oder Steuerflussvalidiererschaltungen 134), die CFG-Erzeugerschaltungen 120, DA Logik 121, PT-Schaltungen 124 und/oder PT-Treiber 126 von 1 ausgeführt werden.
  • Operationen dieser Ausführungsform können mit dem Erzeugen einer grafischen Steuerflussdarstellung einer Zielanwendung und dem Speichern einer Anwendungs-CFG in einem CFG-Speicher bei Operation 202 beginnen. Bei einigen Ausführungsformen kann bei Operation 204 eine CFG einer Bibliothek erzeugt und die Bibliotheks-CFG im CFG-Speicher gespeichert werden. Bei Operation 206 kann die Zielanwendung gestartet und können Prozessor-Trace-(PT) -Operationen initiiert werden. Es kann ein PT-Paket (PT-Daten) vom PT-Treiber bei Operation 208 erfasst werden. Ein TIP-Paket kann aus den PT-Daten bei Operation 210 extrahiert werden. Das TIP-Paket kann decodiert werden, um eine Laufzeitzieladresse bei Operation 212 hervorzubringen. Bei einigen Ausführungsformen kann bei Operation 214 eine statische Zieladresse mit einem entsprechenden Verzweigungsbefehl in einer grafischen Steuerflussdarstellung (CFG) verknüpft werden. Beispielsweise kann die statische Zieladresse einer Laufzeitzieladresse entsprechen, die während der Vorverarbeitungsoperationen wie hierin beschrieben bestimmt wird. Bei einigen Ausführungsformen können die Operationen 206 bis 212 und Operation 214 mehrfach wiederholt werden. Der Programmablauf kann bei Operation 218 fortfahren.
  • Daher können Vorverarbeitungsoperationen ausgeführt konfiguriert werden, um eine CFG zu erzeugen und/oder zu verbessern.
  • 3 ist ein Ablaufdiagramm 300 von Steuerflussintegritätsoperationen gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. Insbesondere veranschaulicht das Ablaufdiagramm 300 Operationen, die konfiguriert sind, Steuerflussverletzungen zu identifizieren. Die Operationen können beispielsweise durch die Steuerflussintegritätsschaltungen 102, wie die z. B. Sammlerschaltungen 130, Decoderschaltungen 132 und/oder Steuerflussvalidiererschaltungen 134, von 1 ausgeführt werden.
  • Operationen dieser Ausführungsform können mit Start 302 beginnen. Bei einigen Ausführungsformen kann ein PT-Treiber bei Operation 304 angewiesen werden, PT-Schaltungen zu konfigurieren, um nur TIP-Pakete zu erfassen. Bei Operation 306 kann eine Zielanwendung gestartet und können PT-Operationen initiiert werden. Es kann ein PT-Paket (PT-Daten) vom PT-Treiber bei Operation 308 abgerufen werden. Ein TIP-Paket kann aus den PT-Daten bei Operation 310 extrahiert werden. Das TIP-Paket kann bei Operation 312 decodiert werden, um eine Laufzeitzieladresse eines Verzweigungsbefehls hervorzubringen. Ob es eine Steuerflussverletzung gibt, kann basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) bei Operation 314 bestimmt werden. Es kann beispielsweise bestimmt werden, ob ein Steuerflussübergang zur Laufzeitzieladresse einer Steuerflussverletzung entspricht. Wenn es keine Steuerflussverletzung gibt, dann kann der Programmablauf bei Operation 316 fortfahren. Wenn es eine Steuerflussverletzung gibt, dann kann die Steuerflussverletzung bei Operation 318 mitgeteilt werden. Der Programmablauf kann dann bei Operation 320 enden.
  • Daher kann eine Steuerflussverletzung basierend, mindestens teilweise auf PT-Daten und basierend mindestens teilweise auf einer CFG identifiziert werden.
  • Während die Ablaufdiagramme der 2 und 3 Operationen gemäß verschiedenen Ausführungsformen veranschaulichen, versteht es sich, dass nicht alle der Operationen in den 2 und 3 für andere Ausführungsformen erforderlich sind. Außerdem ist es hierin vollständig denkbar, dass bei anderen Ausführungsformen der vorliegenden Offenbarung die Operationen, die in den 2 und/oder 3 dargestellt sind, und/oder andere hierin beschriebene Operationen auf eine Weise, die nicht speziell in irgendwelchen der Zeichnungen gezeigt ist, kombiniert werden können, und solche Ausführungsformen können weniger oder mehr Operationen aufweisen, als es in den 2 und 3 veranschaulicht ist. Deshalb werden Ansprüche, die sich an Merkmale und/oder Operationen richten, die nicht exakt in einer Zeichnung gezeigt sind, als innerhalb des Umfangs und Inhalts der vorliegenden Offenbarung angesehen.
  • Eine Vorrichtung, ein Verfahren und/oder System sind konfiguriert, Prozessor-Trace- (PT) -Daten, die aus PT-Schaltungen erfasst sind, und eine grafische Steuerflussdarstellung (CFG) zu verwenden, um in Echtzeit zu bestimmen, ob ein Steuerflussübergang zu einem Laufzeitziel einer Steuerflussverletzung entspricht. Die CFG kann vor der Ausführung der Zielanwendung bestimmt werden. Die CFG kann basierend mindestens teilweise auf PT-Daten erzeugt werden, die während Vorverarbeitungsoperationen wie hierin beschrieben erfasst wurden. Die Vorrichtung, das Verfahren und/oder das System sind konfiguriert, Steuerflussintegritätsverletzungen in Echtzeit z. B. vor dem Starten einer bösartigen Anwendung zu detektieren.
  • Wie in irgendeiner Ausführungsform hierin verwendet, kann der Begriff „Logik“ eine App, Software, Firmware und/oder Schaltungen bezeichnen, die konfiguriert sind, um irgendwelche der vorstehend beschriebenen Operationen auszuführen. Software kann als ein Softwarepaket, als Code, Befehle, Befehlssätze und/oder Daten, die auf einem flüchtigen computerlesbaren Speichermedium aufgezeichnet sind, verkörpert sein. Firmware kann als Code, Befehle oder Befehlssätze und/oder Daten verkörpert sein, die (z. B. nicht flüchtig) in Speichervorrichtungen hartcodiert sind.
  • „Schaltungen“, wie es hierin in irgendeiner Ausführungsform verwendet wird, können beispielsweise einzelne oder in beliebiger Kombination festverdrahtete Schaltungen, programmierbare Schaltungen, Zustandsmaschinenschaltungen, Logik und/oder Firmware, die durch programmierbare Schaltungen ausgeführte Befehle speichert, aufweisen. Die Schaltungen können als eine integrierte Schaltung wie ein integrierte Schaltung-Chip verkörpert sein. Bei einigen Ausführungsformen können die Schaltungen mindestens teilweise durch den Prozessor 110 gebildet sein, der Code und/oder Befehlssätze (z. B. Software, Firmware usw.) ausführt, die der hierin beschriebenen Funktionalität entsprechen, was daher einen Allzweckprozessor in eine Verarbeitungsumgebung mit spezifischem Zweck umwandelt, um eine oder mehrere der hierin beschriebenen Operationen auszuführen.
  • Das Vorhergehende stellt beispielhafte Systemarchitekturen und Methodiken bereit, wobei jedoch Modifikationen an der vorliegenden Offenbarung möglich sind. Der Prozessor kann einen oder mehrere Prozessorkerne aufweisen und kann konfiguriert sein, Systemsoftware auszuführen. Systemsoftware kann beispielsweise ein Betriebssystem aufweisen. Ein Vorrichtungsspeicher kann Eingabe-Ausgabe-Speicher-Puffer aufweisen, die konfiguriert sind, ein oder mehrere Datenpakete zu speichern, die durch eine Netzwerkschnittstelle zu senden oder zu empfangen sind.
  • Das Betriebssystem (OS) kann konfiguriert sein, Systemressourcen und Steuerungs-Tasks zu verwalten, die z. B. auf System 100 ausgeführt werden. Zum Beispiel kann das OS unter Verwendung von Microsoft® Windows@, HP-UX®, Linux® oder UNIX® implementiert sein, es können aber auch andere Betriebssysteme verwendet werden. Bei einem weiteren Beispiel kann das OS unter Verwendung von AndroidTM , iOS, Windows Phone® oder BlackBerry® implementiert sein. Bei einigen Ausführungsformen kann das OS durch einen Virtual Machine Monitor (oder Hypervisor) ersetzt sein, der eine Abstraktionsschicht für zugrunde liegende Hardware an viele auf einer oder mehreren Prozessoreinheiten laufende Betriebssysteme (Virtuelle Maschinen) bereitstellen kann. Das Betriebssystem und/oder die virtuelle Maschine können einen oder mehrere Protokollstapel implementieren. Ein Protokollstapel kann ein oder mehrere Programme ausführen, um Pakete zu verarbeiten. Ein Beispiel eines Protokollstapels ist ein TCP/IP- (Transport Control Protocol/Internet Protocol) -Protokollstapel, der ein oder mehrere Programme für die Handhabung (z. B. das Verarbeiten oder Generieren) von Paketen aufweist, die über ein Netzwerk gesendet und/oder empfangen werden sollen.
  • Der Speicher 112 kann ein oder mehrere der folgenden Speicherarten aufweisen: Halbleiterfirmwarespeicher, programmierbarer Speicher, nicht flüchtiger Speicher, Read Only Memory, elektrisch programmierbarer Speicher, Random Access Memory, Flash-Speicher, Plattenspeicher und/oder optischer Plattenspeicher. Entweder zusätzlich oder alternativ kann der Systemspeicher andere und/oder nachträglich entwickelte Arten von computerlesbaren Speichern aufweisen.
  • Ausführungsformen der hierin beschriebenen Operationen können in einer computerlesbaren Speichervorrichtung mit darauf gespeicherten Befehlen implementiert sein, die bei Ausführung durch einen oder mehrere Prozessoren die Verfahren ausführen. Der Prozessor kann hier zum Beispiel eine Verarbeitungseinheit und/oder programmierbare Schaltungen aufweisen. Die Speichervorrichtung kann eine maschinenlesbare Speichervorrichtung einschließlich jede Art von körperlicher, nicht flüchtiger Speichervorrichtung, wie beispielsweise jede Art von Disks einschließlich Disketten, optische Disks, Compact Disk Read-Only Memories (CD-ROMs), wiederbeschreibbare CDs (CD-RWs) und magnetooptische Disks, Halbleiterbauelemente, wie beispielsweise Read Only Memories (ROMs), Random Access Memories (RAMs) wie dynamische und statische RAMs, lösch- und programmierbare Festwertspeicher (EPROMs), elektrisch löschbare und programmierbare Festwertspeicher (EEPROMs), Flash-Speicher, magnetische oder optische Karten oder jede Art von Speichervorrichtungen, die zur Speicherung von elektronischen Befehlen geeignet sind, aufweisen.
  • Bei einigen Ausführungsformen kann eine Hardwarebeschreibungssprache (HDL) verwendet werden, um Schaltungs- und/oder logische Implementierungen für die hier beschriebene verschiedene Logik und/oder Schaltungen zu definieren. Zum Beispiel kann bei einer Ausführungsform die Hardwarebeschreibungssprache mit einer Very High Speed Integrated Circuit (VHSIC) Hardware Description Language (VHDL), die eine Halbleiterfertigung einer oder mehrerer hierin beschriebener Schaltungen und/oder Logik ermöglichen kann, konform oder kompatibel sein. Die VHDL kann mit IEEE-Standard 1076-1987, IEEE Standard 1076.2, IEEE1076.1, IEEE-Entwurf 3.0 von VHDL-2006, IEEE-Entwurf 4.0 von VHDL-2008 und/oder anderen Versionen der IEEE-VHDL-Standards und/oder anderer Hardwarebeschreibungsnormen konform oder kompatibel sein.
  • Bei einigen Ausführungsformen kann eine Verilog Hardwarebeschreibungssprache (HDL) verwendet werden, um Schaltungs- und/oder logische Implementierungen für die hier beschriebene verschiedene Logik und/oder Schaltungen zu definieren. Bei einer Ausführungsform kann die HDL dem IEEE-Standard 62530-2011 entsprechen oder damit kompatibel sein: SystemVerilog - Unified Hardware Design, Specification, and Verification Language, 7. Juli 2011; IEEE Std 1800TM-2012: IEEE Standard for SystemVerilog-Unified Hardware Design, Specification, and Verification Language, veröffentlicht am 21. Februar 2013; IEEE-Standard 1364-2005: IEEE-Standard for Verilog Hardware Description Language, 18. April 2006 und/oder andere Versionen von Verilog HDL und/oder SystemVerilog Standards.
  • Beispiele
  • Beispiele der vorliegenden Offenbarung weisen Gegenstandsmaterial wie ein Verfahren, Mittel für das Ausführen von Handlungen des Verfahrens, ein Gerät oder eine Vorrichtung oder System, das mit Steuerflussintegrität wie nachfolgend beschrieben in Zusammenhang steht, auf.
    • Beispiel 1. Gemäß diesem Beispiel wird eine Vorrichtung bereitgestellt. Die Vorrichtung weist Sammlerschaltungen auf, um Prozessor-Trace- (PT) -Daten von einem PT-Treiber zu erfassen. Die PT-Daten weisen ein erstes Zielbefehlszeiger- (TIP) -Paket einschließlich einer ersten Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung auf. Die Vorrichtung weist ferner Decoderschaltungen auf, um das erste TIP-Paket aus den PT-Daten zu extrahieren, um das erste TIP-Paket zu decodieren und die erste Laufzeitzieladresse hervorzubringen. Die Vorrichtung weist ferner Steuerflussvalidiererschaltungen auf, um basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
    • Beispiel 2. Dieses Beispiel weist die Elemente von Beispiel 1 auf, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, die Decoderschaltungen ferner das zweite TIP-Paket decodieren, um die zweite Laufzeitzieladresse hervorzubringen und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
    • Beispiel 3. Dieses Beispiel weist die Elemente von Beispiel 2 auf, wobei die Steuerflussvalidiererschaltungen ferner bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
    • Beispiel 4. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
    • Beispiel 5. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei mindestens ein Knoten eine entsprechende eine mögliche Adresse aufweist.
    • Beispiel 6. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verbunden sind.
    • Beispiel 7. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei die Sammlerschaltungen den PT-Treiber anweisen, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
    • Beispiel 8. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verbunden ist.
    • Beispiel 9. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
    • Beispiel 10. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 1 oder 2 auf, wobei die Steuerflussverletzung der Detektion eines Steuerfluss-Hijack-Angriffs entspricht.
    • Beispiel 11. Gemäß diesem Beispiel wird ein Steuerflussintegritätsverfahren bereitgestellt. Das Verfahren weist das Erfassen, durch Sammlerschaltungen, von Prozessor-Trace- (PT) -Daten von einem PT-Treiber auf, wobei die PT-Daten ein erstes Zielbefehlszeiger-(TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Das Verfahren weist ferner das Extrahieren, durch Decoderschaltungen, des ersten TIP-Pakets aus den PT-Daten und das Decodieren, durch die Decoderschaltungen, des ersten TIP-Pakets auf, um die erste Laufzeitzieladresse hervorzubringen. Das Verfahren weist ferner das Bestimmen durch Steuerflussvalidiererschaltungen basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) auf, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
    • Beispiel 12. Dieses Beispiel weist die Elemente von Beispiel 11 auf, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, ferner aufweisend das Decodieren, durch die Decoderschaltungen, des zweiten TIP-Pakets, um die zweite Laufzeitzieladresse hervorzubringen, und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
    • Beispiel 13. Dieses Beispiel weist die Elemente von Beispiel 12 auf und weist ferner das Bestimmen auf, durch die Steuerflussvalidiererschaltungen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder das Signalisieren, durch die Steuerflussvalidiererschaltungen, einer Steuerflussverletzung, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
    • Beispiel 14. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
    • Beispiel 15. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei mindestens ein Knoten eine entsprechende eine mögliche Adresse aufweist.
    • Beispiel 16. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verbunden sind.
    • Beispiel 17. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf und weist ferner das Anweisen, durch die Sammlerschaltungen, der PT-Treiber auf, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
    • Beispiel 18. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
    • Beispiel 19. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
    • Beispiel 20. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 11 oder 12 auf, wobei die Steuerflussverletzung der Detektion eines Steuerfluss-Hijack-Angriffs entspricht.
    • Beispiel 21. Gemäß diesem Beispiel wird ein Steuerflussintegritätssystem bereitgestellt. Das System weist einen Prozessor, Speicher und eine grafische Steuerflussdarstellung (CFG) auf. Die CFG weist mehrere Knoten auf, wobei jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist. Das System weist ferner Sammlerschaltungen auf, um Prozessor-Trace- (PT) -Daten von einem PT-Treiber zu erfassen, wobei die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Das System weist ferner Decoderschaltungen auf, um das erste TIP-Paket aus den PT-Daten zu extrahieren und das erste TIP-Paket zu decodieren, um die erste Laufzeitzieladresse hervorzubringen. Das System weist ferner Steuerflussvalidiererschaltungen auf, um basierend mindestens teilweise auf der CFG.zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht.
    • Beispiel 22. Dieses Beispiel weist die Elemente von Beispiel 21 auf, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, die Decoderschaltungen ferner das zweite TIP-Paket decodieren, um die zweite Laufzeitzieladresse hervorzubringen und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
    • Beispiel 23. Dieses Beispiel weist die Elemente von Beispiel 22 auf, wobei die Steuerflussvalidiererschaltungen ferner bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
    • Beispiel 24. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
    • Beispiel 25. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei mindestens ein Knoten eine entsprechende eine mögliche Adresse aufweist.
    • Beispiel 26. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verbunden sind.
    • Beispiel 27. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei die Sammlerschaltungen den PT-Treiber anweisen, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
    • Beispiel 28. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
    • Beispiel 29. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
    • Beispiel 30. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 21 oder 22 auf, wobei die Steuerflussverletzung der Detektion eines Steuerfluss-Hijack-Angriffs entspricht.
    • Beispiel 31. Gemäß diesem Beispiel wird eine computerlesbare Speichervorrichtung bereitgestellt. Die Vorrichtung weist darauf gespeicherte Befehle auf, die bei Ausführung durch einen oder mehrere Prozessoren in den folgenden Operationen resultieren, die aufweisen: Erfassen von Prozessor-Trace- (PT) -Daten von einem PT-Treiber, wobei die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist; Extrahieren des ersten TIP-Pakets aus den PT-Daten und Decodieren des ersten TIP-Pakets, um die erste Laufzeitzieladresse hervorzubringen; und Bestimmen, basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG), ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
    • Beispiel 32. Dieses Beispiel weist die Elemente von Beispiel 31 auf, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, wobei die Befehle bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren einschließlich Decodieren des zweiten TIP-Pakets, um die zweite Laufzeitzieladresse hervorzubringen, und wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
    • Beispiel 33. Dieses Beispiel weist die Elemente von Beispiel 32 auf und wobei Befehle die bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren einschließlich Bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder das Signalisieren, durch die Steuerflussvalidiererschaltungen, einer Steuerflussverletzung, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
    • Beispiel 34. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
    • Beispiel 35. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei mindestens ein Knoten eine entsprechende eine mögliche Adresse aufweist.
    • Beispiel 36. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verbunden sind.
    • Beispiel 37. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, und wobei Befehle bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren einschließlich Anweisen, durch die Sammlerschaltungen, der PT-Treiber, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
    • Beispiel 38. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
    • Beispiel 39. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
    • Beispiel 40. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 31 oder 32 auf, wobei die Steuerflussverletzung der Detektion eines Steuerfluss-Hijack-Angriffs entspricht.
    • Beispiel 41. Gemäß diesem Beispiel wird eine Vorrichtung bereitgestellt. Die Vorrichtung weist Mittel zum Erfassen, durch Sammlerschaltungen, von Prozessor-Trace- (PT) -Daten von einem PT-Treiber auf, wobei die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist. Die Vorrichtung weist ferner Mittel für das Extrahieren, durch Decoderschaltungen, des ersten TIP-Pakets aus den PT-Daten und Mittel für das Decodieren, durch die Decoderschaltungen, des ersten TIP-Pakets auf, um die erste Laufzeitzieladresse hervorzubringen. Die Vorrichtung weist ferner Mittel für das Bestimmen, durch Steuerflussvalidiererschaltungen basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) auf, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
    • Beispiel 42. Dieses Beispiel weist die Elemente von Beispiel 41 auf, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, ferner aufweisend Mittel für das Decodieren, durch die Decoderschaltungen, des zweiten TIP-Pakets, um die zweite Laufzeitzieladresse hervorzubringen, und wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
    • Beispiel 43. Dieses Beispiel weist die Elemente von Beispiel 42 auf und weist ferner Mittel für das Bestimmen auf, durch die Steuerflussvalidiererschaltungen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder das Signalisieren, durch die Steuerflussvalidiererschaltungen, einer Steuerflussverletzung, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
    • Beispiel 44. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
    • Beispiel 45. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei mindestens ein Knoten eine entsprechende eine mögliche Adresse aufweist.
    • Beispiel 46. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verbunden sind.
    • Beispiel 47. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf und weist ferner Mittel für das Anweisen, durch die Sammlerschaltungen, der PT-Treiber auf, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
    • Beispiel 48. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
    • Beispiel 49. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
    • Beispiel 50. Dieses Beispiel weist die Elemente gemäß einem der Beispiele 41 oder 42 auf, wobei die Steuerflussverletzung der Detektion eines Steuerfluss-Hijack-Angriffs entspricht.
    • Beispiel 51. Gemäß diesem Beispiel wird ein System bereitgestellt. Das System weist mindestens eine Vorrichtung auf, die ausgeführt ist, das Steuerflussintegritätsverfahren gemäß einem der Beispiele 11 bis 20 auszuführen.
    • Beispiel 52. Gemäß diesem Beispiel wird eine Vorrichtung bereitgestellt. Die Vorrichtung weist Mittel zum Ausführen des Steuerflussintegritätsverfahrens gemäß einem der Beispiele 11 bis 20 auf.
    • Beispiel 53. Gemäß diesem Beispiel wird eine computerlesbare Speichervorrichtung bereitgestellt. Die Vorrichtung weist darauf gespeicherte Befehle auf, die bei Ausführung durch einen oder mehrere Prozessoren in den folgenden Operationen resultieren, aufweisend: das Steuerflussintegritätsverfahren gemäß einem der Beispiele 11 bis 20.
  • Die Begriffe und Ausdrücke, die hier verwendet werden, werden als Begriffe der Beschreibung und nicht der Beschränkung verwendet, und es besteht bei der Verwendung derartiger Begriffe und Ausdrücke keine Absicht des Ausschließens von Äquivalenten der gezeigten und beschriebenen Merkmale (oder Abschnitten davon), und es versteht sich, dass verschiedene Modifikationen innerhalb des Umfangs der Ansprüche möglich sind. Dementsprechend sollen die Ansprüche alle derartigen Äquivalente abdecken.
  • Verschiedene Merkmale, Aspekte und Ausführungsformen sind hier beschrieben worden. Die Merkmale, Aspekte und Ausführungsformen können miteinander kombiniert sowie abgewandelt und modifiziert werden, wie es von einem Fachmann verstanden wird. Die vorliegende Offenbarung soll daher solche Kombinationen, Abwandlungen und Modifikationen umfassen.

Claims (24)

  1. Vorrichtung aufweisend: Sammlerschaltungen, um Prozessor-Trace-(PT) -Daten von einem PT-Treiber zu erfassen, wobei die PT-Daten ein erstes Zielbefehlszeiger-(TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist; Decoderschaltungen, um das erste TIP-Paket aus den PT-Daten zu extrahieren, um das erste TIP-Paket zu decodieren und die erste Laufzeitzieladresse hervorzubringen; und Steuerflussvalidiererschaltungen, um basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG) zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
  2. Vorrichtung nach Anspruch 1, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, die Decoderschaltungen ferner das zweite TIP-Paket decodieren, um die zweite Laufzeitzieladresse hervorzubringen, und wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
  3. Vorrichtung nach Anspruch 2, wobei die Steuerflussvalidiererschaltungen ferner bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
  4. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
  5. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verknüpft sind.
  6. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei die Sammlerschaltungen den PT-Treiber anweisen, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
  7. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
  8. Vorrichtung nach einem der Ansprüche 1 oder 2, wobei die Bestimmung, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
  9. Steuerflussintegritätssystem, aufweisend: einen Prozessor; Speicher; eine grafische Steuerflussdarstellung (CFG), die mehrere Knoten aufweist, wobei jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist; Sammlerschaltungen, um Prozessor-Trace-(PT) -Daten von einem PT-Treiber zu erfassen, wobei die PT-Daten ein erstes Zielbefehlszeiger-(TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist; Decoderschaltungen, um das erste TIP-Paket aus den PT-Daten zu extrahieren, um das erste TIP-Paket zu decodieren und die erste Laufzeitzieladresse hervorzubringen; und Steuerflussvalidiererschaltungen, um basierend mindestens teilweise auf der CFG zu bestimmen, ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht.
  10. Steuerflussintegritätssystem nach Anspruch 9, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, die Decoderschaltungen ferner das zweite TIP-Paket decodieren, um die zweite Laufzeitzieladresse hervorzubringen, und wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
  11. Steuerflussintegritätssystem nach Anspruch 10, wobei die Steuerflussvalidiererschaltungen ferner bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder eine Steuerflussverletzung signalisieren, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
  12. Steuerflussintegritätssystem nach einem der Ansprüche 9 oder 10, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
  13. Steuerflussintegritätssystem nach einem der Ansprüche 9 oder 10, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verknüpft sind.
  14. Steuerflussintegritätssystem nach einem der Ansprüche 9 oder 10, wobei die Sammlerschaltungen den PT-Treiber anweisen, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
  15. Steuerflussintegritätssystem nach einem der Ansprüche 9 oder 10, wobei die CFG eine Bibliotheks-CFG aufweist und die Bibliothek mit der Zielanwendung verknüpft ist.
  16. Steuerflussintegritätsystem nach einem der Ansprüche 9 oder 10, wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT-(genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
  17. Computerlesbare Speichervorrichtung mit darauf gespeicherten Befehlen, die bei Ausführung durch einen oder mehrere Prozessoren in den folgenden Operationen resultieren, aufweisend: Erfassen von Prozessor-Trace- (PT) -Daten von einem PT-Treiber, wobei die PT-Daten ein erstes Zielbefehlszeiger- (TIP) -Paket aufweisen, das eine erste Laufzeitzieladresse eines indirekten Verzweigungsbefehls einer ausführenden Zielanwendung aufweist; Extrahieren des ersten TIP-Pakets aus den PT-Daten; Decodieren des ersten TIP-Pakets, um die erste Laufzeitzieladresse hervorzubringen; und Bestimmen, basierend mindestens teilweise auf einer grafischen Steuerflussdarstellung (CFG), ob ein Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, wobei die CFG mehrere Knoten aufweist, jeder Knoten eine Startadresse eines ersten Basisblocks, eine Endadresse des ersten Basisblocks und eine nächstmögliche Adresse eines zweiten Basisblocks oder ein Nicht-gefunden-Tag aufweist.
  18. Vorrichtung nach Anspruch 17, wobei die PT-Daten ferner ein zweites TIP-Paket aufweisen, das eine zweite Laufzeitzieladresse aufweist, das erste TIP-Paket und das zweite TIP-Paket in den PT-Daten aufeinanderfolgend sind, wobei die Befehle bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren, die das Decodieren des zweiten TIP-Pakets, um die zweite Laufzeitzieladresse hervorzubringen, aufweisen, und wobei das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob eine erste statische Zieladresse der ersten Laufzeitzieladresse entspricht, und ob eine zweite statische Zieladresse der zweiten Laufzeitzieladresse entspricht.
  19. Vorrichtung nach Anspruch 18, wobei die Befehle bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren, aufweisend das Bestimmen, ob ein legitimer Ausführungspfad in der CFG zwischen der ersten statischen Zieladresse und der zweiten statischen Zieladresse existiert, wenn die CFG die erste statische Zieladresse und die zweite statische Zieladresse aufweist, oder das Signalisieren einer Steuerflussverletzung, wenn die CFG nicht die erste statische Zieladresse oder die zweite statische Zieladresse aufweist.
  20. Vorrichtung nach einem der Ansprüche 17 oder 18, wobei mindestens ein Knoten eine Vielzahl von nächstmöglichen Adressen aufweist.
  21. Vorrichtung nach einem der Ansprüche 17 oder 18, wobei die erste Laufzeitzieladresse einer Laufzeitrücksprungadresse entspricht und das Bestimmen, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die Laufzeitrücksprungadresse einer statischen Rücksprungadresse entspricht, wobei die Laufzeitrücksprungadresse und die statische Rücksprungadresse mit dem indirekten Verzweigungsbefehl verknüpft sind.
  22. Vorrichtung nach einem der Ansprüche 17 oder 18, wobei die Befehle, die bei Ausführung durch einen oder mehrere Prozessoren in den folgenden zusätzlichen Operationen resultieren, die das Anweisen des PT-Treibers aufweisen, PT-Schaltungen zu konfigurieren, PT-Daten auf TIP-Pakete zu begrenzen.
  23. Vorrichtung nach einem der Ansprüche 17 oder 18, wobei die CFG eine Bibliotheks-CFG aufweist, die mit der Zielanwendung verknüpft ist.
  24. Vorrichtung nach einem der Ansprüche 17 oder 18, wobei die Bestimmung, ob der Steuerflussübergang zur ersten Laufzeitzieladresse einer Steuerflussverletzung entspricht, das Bestimmen aufweist, ob die PT-Daten ein TNT- (genommen/nicht genommen) -Paket aufweisen, das mit dem indirekten Verzweigungsbefehl verknüpft ist.
DE112017004962.8T 2016-10-01 2017-08-30 Steuerflussintegrität Pending DE112017004962T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/283,370 2016-10-01
US15/283,370 US10248424B2 (en) 2016-10-01 2016-10-01 Control flow integrity
PCT/US2017/049499 WO2018063727A1 (en) 2016-10-01 2017-08-30 Control flow integrity

Publications (1)

Publication Number Publication Date
DE112017004962T5 true DE112017004962T5 (de) 2019-06-19

Family

ID=61758789

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112017004962.8T Pending DE112017004962T5 (de) 2016-10-01 2017-08-30 Steuerflussintegrität

Country Status (4)

Country Link
US (1) US10248424B2 (de)
CN (1) CN109643346B (de)
DE (1) DE112017004962T5 (de)
WO (1) WO2018063727A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210406357A1 (en) * 2018-05-09 2021-12-30 Cody Myers Indexable authentication system with group access control and method

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10896253B2 (en) * 2017-02-06 2021-01-19 Huawei Technologies Co., Ltd. Processor trace-based enforcement of control flow integrity of a computer system
US10372902B2 (en) 2017-03-06 2019-08-06 Intel Corporation Control flow integrity
US11004003B2 (en) * 2017-06-14 2021-05-11 Intel Corporation Machine learning based exploit detection
US10915631B2 (en) 2017-12-28 2021-02-09 Intel Corporation Deep learning on execution trace data for exploit detection
US11416603B2 (en) 2018-11-16 2022-08-16 Intel Corporation Methods, systems, articles of manufacture and apparatus to detect process hijacking
US11016773B2 (en) 2019-09-27 2021-05-25 Intel Corporation Processor trace extensions to facilitate real-time security monitoring
WO2021162439A1 (en) 2020-02-14 2021-08-19 Samsung Electronics Co., Ltd. Electronic device performing restoration on basis of comparison of constant value and control method thereof

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034350A1 (en) * 2006-04-05 2008-02-07 Conti Gregory R System and Method for Checking the Integrity of Computer Program Code
EP2141587A1 (de) 2008-06-27 2010-01-06 Siemens Aktiengesellschaft Verfahren und System zur Erzeugung eines Steuerflussdiagramms zur Darstellung eines Programmcodes
CN101763291B (zh) * 2009-12-30 2012-01-18 中国人民解放军国防科学技术大学 一种程序控制流错误检测方法
US8904189B1 (en) * 2010-07-15 2014-12-02 The Research Foundation For The State University Of New York System and method for validating program execution at run-time using control flow signatures
CN102479356A (zh) * 2010-11-30 2012-05-30 金蝶软件(中国)有限公司 一种穿行测试方法和装置
US20130024676A1 (en) * 2011-07-19 2013-01-24 Glew Andrew F Control flow integrity
US20130055221A1 (en) 2011-08-26 2013-02-28 Fujitsu Limited Detecting Errors in Javascript Software Using a Control Flow Graph
US8914262B2 (en) 2011-11-08 2014-12-16 The Mathworks, Inc. Visualization of data dependency in graphical models
US9262163B2 (en) 2012-12-29 2016-02-16 Intel Corporation Real time instruction trace processors, methods, and systems
US9448909B2 (en) 2013-10-15 2016-09-20 Advanced Micro Devices, Inc. Randomly branching using performance counters
US9330028B2 (en) * 2014-03-27 2016-05-03 Intel Corporation Instruction and logic for a binary translation mechanism for control-flow security
US9361102B2 (en) * 2014-06-09 2016-06-07 Lehigh University Methods for enforcing control flow of a computer program
US9514305B2 (en) * 2014-10-17 2016-12-06 Qualcomm Incorporated Code pointer authentication for hardware flow control
US9405936B2 (en) * 2014-12-16 2016-08-02 Nxp B.V. Code integrity protection by computing target addresses from checksums
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
US10007784B2 (en) 2015-03-27 2018-06-26 Intel Corporation Technologies for control flow exploit mitigation using processor trace
AU2015390292A1 (en) 2015-04-08 2017-10-26 Fractal Antenna Systems, Inc. Fractal plasmonic surface reader antennas
CN105608003B (zh) * 2015-12-17 2018-04-17 西安电子科技大学 基于控制流分析和数据流分析的Java程序静态分析方法
CN105868626B (zh) * 2016-03-25 2018-10-02 中国人民解放军信息工程大学 基于控制流粗粒度完整性的监控软件业务行为的方法
CN105868641A (zh) * 2016-04-01 2016-08-17 北京理工大学 基于虚函数表劫持的防御方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20210406357A1 (en) * 2018-05-09 2021-12-30 Cody Myers Indexable authentication system with group access control and method
US11604864B2 (en) * 2018-05-09 2023-03-14 Cody Myers Indexable authentication system with group access control and method

Also Published As

Publication number Publication date
CN109643346A (zh) 2019-04-16
CN109643346B (zh) 2024-01-02
US20180095764A1 (en) 2018-04-05
WO2018063727A1 (en) 2018-04-05
US10248424B2 (en) 2019-04-02

Similar Documents

Publication Publication Date Title
DE112017004962T5 (de) Steuerflussintegrität
DE102017217971B4 (de) Ermöglichen von Debugging von serverlosen Anwendungen mittels Graph-Rewriting
JP5978401B2 (ja) 分散システムにおいてユーザリクエストの実行を監視するための方法及びシステム
DE69826418T2 (de) Anordnung zum Abtasten mehrerer Instruktionen in einer Prozessorpipeline
DE112019001121T5 (de) Erkennen von malware
DE102019113567A1 (de) Effiziente abschwächung von seitenkanalbasierten angriffen gegen verarbeitungsarchitekturen für speculative execution
DE112011101364T5 (de) Fehlerbehebung in Multithread-Code
DE112013005882T5 (de) Ausführung eines Gegenverzweigungspfades auf Grundlage eines Zuverlässigkeitsschwellenwertes für eine Verzweigungsvorhersage
DE112016004441T5 (de) Hilfssprungvorhersage mit Nützlichkeitsverfolgung
DE102013203854A1 (de) Erfassen von bösartigem Computercode in einem ausführenden Programmmodul
DE102007046475A1 (de) Überwachen eines Ausführungsmusters eines Target-Agents auf einem VT-fähigen System
DE112016005571T5 (de) Aufrufergeschützte stapelrücksprungadresse in einer hardware-verwalteten stapelarchitektur
DE102014003705A1 (de) Prozessoren, Verfahren und Systeme zur Befehlsemulation
US20140365833A1 (en) Capturing trace information using annotated trace output
DE112013007300T5 (de) Speichersysteme mit adaptiver Löschcode-Generierung
DE102012217315A1 (de) Verwenden von nativen Routinen an Stelle von emulierten Routinen in einer emulierten Anwendung
DE112018004660T5 (de) Verwenden von kommentaren zum bereitstellen von optimierungen
DE102006041444B4 (de) Schaltungsanordnung und Verfahren zum Erfassen einer Ausführungszeit eines Befehls in einem Rechnersystem
DE102018127141A1 (de) Techniken zur Abschwächung von Anweisungen mit hoher Latenz in hoch frequentierten Ausführungspfaden
JP2019215847A (ja) バッファオーバーフローの低減
DE102016103019A1 (de) Hardwaregestützte Kantenprofilerstellung
DE102014003687A1 (de) Vorrichtung und verfahren zum schutz von digitalem inhalt
JP2016218997A (ja) 未知のバイナリプログラムに対する有効な入力の決定
CN107506293B (zh) 一种软件性能数据采集方法和装置
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung

Legal Events

Date Code Title Description
R012 Request for examination validly filed