DE112019000594T5 - Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen - Google Patents

Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen Download PDF

Info

Publication number
DE112019000594T5
DE112019000594T5 DE112019000594.4T DE112019000594T DE112019000594T5 DE 112019000594 T5 DE112019000594 T5 DE 112019000594T5 DE 112019000594 T DE112019000594 T DE 112019000594T DE 112019000594 T5 DE112019000594 T5 DE 112019000594T5
Authority
DE
Germany
Prior art keywords
code
intercept
application
accessing
address range
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
DE112019000594.4T
Other languages
English (en)
Inventor
Lokesh Gupta
Matthew Borlick
Trung Nguyen
Micah Robison
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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112019000594T5 publication Critical patent/DE112019000594T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • 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/30058Conditional 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

Bereitgestellt werden ein Computerprogrammprodukt, ein System und ein Verfahren zum Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen. Ein angegebener Typ von Befehl wird im Anwendungscode verarbeitet und als Reaktion darauf wird Abfangcode ausgeführt, um einen Abfangadressbereich zuzuordnen. Der angegebene Typ von Befehl wird in dem Anwendungscode ausgeführt. Es wird festgestellt, ob eine zugreifende Anwendung auf den Abfangadressbereich zugreift. Ein Übersenden einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder ein Überwachen der Ausführung der zugreifenden Anwendung und/oder ein Einschränken der Ausführung der zugreifenden Anwendung wird als Reaktion auf das Feststellen durchgeführt, dass die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat.

Description

  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft ein Computerprogrammprodukt, ein System und ein Verfahren zum Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen.
  • Beschreibung der verwandten Technik
  • Anti-Malware-Software, die auch als Antivirensoftware bezeichnet wird, wird verwendet, um Schadsoftware wie beispielsweise schädliche Browser Helper Objects (BHOs), Browser-Hijacker, Ransomware, Keylogger, Backdoors, Rootkits, Trojanische Pferde, Würmer, schädliche LSP, Dialer, Betrug-Tools, Adware und Spyware zu erkennen, zu verhindern und zu entfernen. Wenn es eine mögliche Datenschutzverletzung durch Schadsoftware gibt, wird der Zugriff auf die Daten, die Gegenstand der Verletzung sind, üblicherweise blockiert, bis die Sicherheitsbedrohung beseitigt ist, um eine etwaige Änderung von Daten durch die verdächtige Software zu vermeiden. Eine Art von Schadsoftware, die als Ransomware bezeichnet wird, verschlüsselt Benutzerdaten und der Betreiber der Ransomware erpresst dann das Opfer des Angriffs, indem er eine Zahlung für den zur Entschlüsselung seiner Daten zu verwendenden Verschlüsselungsschlüssel fordert.
  • Schädlicher Programmcode kann versuchen, auf Daten im geschützten Hauptspeicher zuzugreifen, indem er in einem Systemcache als Teil von Zwischenspeicherungsoperationen gespeicherte Hauptspeicherdaten aus dem geschützten Hauptspeicher liest. Der geschützte Hauptspeicher weist einen Bereich des Systemspeichers auf, auf den ein Zugriff durch Prozesse nicht möglich sein sollte, außer wenn der Prozess eine Zugriffsberechtigung hat. Berechtigte Prozesse können bestimmte geschützte Daten, die nicht für andere Anwendungen vorgesehen sind, in dem geschützten Hauptspeicher speichern, wie beispielsweise persönliche Daten, Kennwörter usw. Auf im Cache gespeicherte geschützte Daten aus dem geschützten Hauptspeicher kann von schädlichem Programmcode in einem Seitenkanalangriff zugegriffen werden, bei dem schädlicher Programmcode sich das Wissen zunutze macht, dass bestimmte zwischengespeicherte Daten im Cache von Kerneladressen stammen und sensible sowie vertrauliche geschützte Daten enthalten können.
  • Es besteht in der Technik ein Bedarf an verbesserten Techniken zum Erkennen von schädlichem Programmcode, der versucht, auf im Cache gespeicherte geschützte Daten zuzugreifen, um böswillige Aktivität und eine Beeinträchtigung von Daten zu vermeiden.
  • KURZDARSTELLUNG
  • Eine erste Ausführungsform stellt ein Computerprogrammprodukt, ein System und ein Verfahren zum Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses bereit, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen. Ein angegebener Typ von Befehl wird im Anwendungscode verarbeitet und als Reaktion darauf wird Abfangcode ausgeführt, um einen Abfangadressbereich zuzuordnen. Der angegebene Typ von Befehl wird in dem Anwendungscode ausgeführt. Es wird festgestellt, ob eine zugreifende Anwendung auf den Abfangadressbereich zugreift. Ein Übersenden einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder ein Überwachen der Ausführung der zugreifenden Anwendung und/oder ein Einschränken der Ausführung der zugreifenden Anwendung wird als Reaktion auf das Feststellen durchgeführt, dass die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat.
  • Bei der ersten Ausführungsform löst die Ausführung eines angegebenen Typs von Befehl, wie beispielsweise eines Befehls, der Zugang zu einem geschützten Adressraum oder zu sensiblen Daten gewähren könnte, eine Ausführung von Abfangcode aus, der einen Abfangadressbereich zuordnet. Wenn eine Anwendung versucht, auf diesen Abfangadressbereich zuzugreifen, der kein Adressbereich wäre, auf den von dem Anwendungscode, der ausgeführt wird, zugegriffen wird, kann angenommen werden, dass die zugreifende Anwendung schädlich ist oder einen Programmfehler hat, der sie veranlasst, auf einen Abfangadressbereich zuzugreifen, der für die Anwendung nicht zugeordnet ist. Sobald ein solcher Zugriff auf einen Abfangadressbereich erkannt wird, können Schutzmaßnahmen in Bezug auf den Anwendungscode ergriffen werden, wie beispielsweise Blockieren, Überwachen usw. Auf diese Weise beschränkt das Bedrohungsüberwachungsprogramm die Überwachung auf nicht alles, was eine Anwendung macht, sondern stellt eine stärker fokussierte Überwachung von Situationen bereit, in denen ein Schadprogramm versuchen würde, sich einen angegebenen Typ von Befehl in dem Anwendungscode zunutze zu machen, der Zugang zu sensiblen Informationen bereitstellen kann. Die beschriebenen Ausführungsformen lösen ein Zuordnen von Abfangadressbereichen aus, wenn solch ein angegebener Typ von Befehl, der Zugang zu sensiblen Daten bereitstellen könnte, ausgeführt wird, und der schädliche Programmcode kann erkannt werden, indem versucht wird, auf einen Abfangadressbereich zuzugreifen, auf den eine berechtigte Anwendung nicht zugreifen würde.
  • In einer zweiten Ausführungsform weist der angegebene Typ von Befehl einen Befehl für einen Wechsel aus einem Benutzermodus in den Kernelmodus auf, um auf Kerneladressen zuzugreifen, und wobei der Abfangadressbereich in einem Kerneladressraum definiert ist.
  • Bei der zweiten Ausführungsform wird der Abfangadressbereich zugeordnet, wenn die Anwendung in den Kernelmodus wechselt, um auf Kerneladressen zuzugreifen, da Kerneladressen Zugang zu sensiblen und geschützten Daten gewähren können, bei denen Schadprogramme versuchen würden, auf sie zuzugreifen und sie zu nutzen. Indem Abfangadressbereiche zugeordnet werden, wenn durch die Anwendung auf Kerneladressen zugegriffen wird, erzeugen die beschriebenen Ausführungsformen somit die Abfangposition für schädlichen Programmcode an dem Punkt in dem Anwendungsprogramm, an dem Zugang zu sensiblen Informationen gewährt werden kann. Dies erhöht die Wahrscheinlichkeit, dass schädlicher Programmcode erfasst wird, weiter, da schädlicher Programmcode möglicherweise versucht, Adressen, wie beispielsweise den Abfangadressbereich, zu nutzen, die mit Code zugeordnet werden, der Zugang zu dem Kerneladressraum gewährt.
  • In einer dritten Ausführungsform wird als Reaktion darauf, dass die zugreifende Anwendung auf eine Adresse in dem Kerneladressraum zugreift, die in einer Adresstabelle nicht auf gültige Daten in einem Cache abgebildet ist, ein Segmentierungsfehler empfangen. In einem solchen Fall wird das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, als Reaktion auf das Empfangen des Segmentierungsfehlers durchgeführt.
  • Bei der dritten Ausführungsform wird das Prüfen, ob ein Programm schädlich ist, durchgeführt, wenn ein Segmentierungsfehler auftritt, um zu prüfen, ob sich eine Kerneladresse, auf die zugegriffen wird, innerhalb des Abfangadressbereichs befindet. Dies verbessert die Effizienz von Überwachungsoperationen weiter, indem eine Prozessorprüfung auf Schadprogramme auf diejenigen Punkte beschränkt wird, an denen ein Schadprogramm wahrscheinlich auf Daten zugreift, wenn auf eine Kerneladresse zugegriffen wird, die einen Segmentierungsfehler auslöst.
  • In einer vierten Ausführungsform weist der angegebene Typ von Befehl einen Systemaufruf auf, wobei der Systemaufruf nach dem Ausführen des Abfangcodes ausgeführt wird.
  • Bei der vierten Ausführungsform weist der angegebene Typ von Befehl, der das Zuordnen des Abfangadressbereichs auslöst, einen Systemaufruf auf. Dies verbessert die Effizienz von Operationen weiter, indem die Abfangadressen an Systemaufrufe gebunden werden, da Systemaufrufe aus einem Benutzermodus in einen Kernelmodus wechseln, um auf den Kerneladressraum zuzugreifen. Somit suchen Schadprogramme möglicherweise nach Adressbereichen, die mit Systemaufrufen zugeordnet werden. Auf diese Weise verbessern die beschriebenen Ausführungsformen die Effizienz einer Überwachung auf schädlichen Programmcode, indem sie die Zuordnung des Abfangadressbereichs an einen Typ von Aufruf, Systemaufrufe, binden, bei denen die Wahrscheinlichkeit, dass sie das Ziel von Schadprogrammen werden, größer ist als bei anderen Arten von Aufrufen.
  • In einer fünften Ausführungsform nimmt der Abfangadressbereich eine Abbildung auf ungültige physische Adressen in einer Adresstabelle vor, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, ein Erkennen eines Fehlers aufweist, der erzeugt wird, wenn die zugreifende Anwendung auf den Abfangadressbereich zugreift, der eine Abbildung auf ungültige Positionen vornimmt.
  • Bei der fünften Ausführungsform tritt, indem ein Abfangadressbereich auf ungültige physische Adressen abgebildet wird, ein Segmentierungsfehler auf, wenn ein Programm, das wahrscheinlich ein Schadprogramm ist, versucht, auf den Abfangadressbereich zuzugreifen. Dies optimiert Überwachungsoperationen weiter, indem keine ständige Überwachung erforderlich ist und die Überwachung nur ausgelöst wird, wenn es eine höhere Wahrscheinlichkeit für einen Zugriff durch schädlichen Programmcode gibt, der stattfindet, wenn ein Programm versucht, auf einen Abfangadressbereich zuzugreifen, der keine Abbildung auf gültige physische Adressen vornimmt, und durch einen Segmentierungsfehler markiert werden kann, was Teil von normalen Betriebssystemprozessen ist.
  • In einer sechsten Ausführungsform bildet das Ausführen des Abfangcodes den Abfangadressbereich in einer Adresstabelle ab, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, das Erkennen aufweist, dass die zugreifende Anwendung versucht, Abfangdaten aus dem Abfangadressbereich zu verwenden, um auf Rechenressourcen zuzugreifen.
  • Bei der sechsten Ausführungsform werden Abfangdaten wie beispielsweise gefälschte Kennungen und Kennwörter in den Abfangadressbereich gestellt, der nicht von gültigen Anwendungsprogrammen verwendet wird. Wenn ein Programm die Kennungen und Kennwörter aus den Abfangdaten vorlegt, um auf Rechenressourcen zuzugreifen, ist ein solcher Zugriff somit höchstwahrscheinlich schädlich. Bei dieser Ausführungsform verschwenden Überwachungsoperationen keine Ressourcen an Überwachungsprogramme, die nicht schädlich sind, und konzentrieren sich auf Zugriffe, die sehr wahrscheinlich von Schadprogrammen oder einem Nicht-Schadprogramm stammen, das einen Programmfehler hat.
  • In einer siebten Ausführungsform führt der den Anwendungscode ausführende Prozessor beide Verzweigungen von bedingten Verzweigungen des Anwendungscodes spekulativ aus, wobei ein Ergebnis von nur einer der bedingten Verzweigungen in Abhängigkeit von einer Bedingung beibehalten wird, die zur Feststellung verwendet wird, welche der bedingten Verzweigungen durchlaufen werden soll.
  • In einer achten Ausführungsform wird der Abfangcode in einer bedingten Verzweigung der bedingten Verzweigungen durch einen Prozessor bei der Verarbeitung der bedingten Verzweigungen spekulativ ausgeführt.
  • Bei der siebten und der achten Ausführungsform kann der Abfangcode ausgeführt werden, wenn ein Prozessor Code spekulativ ausführt. Dies erhöht die Effizienz einer Überwachung von Schadprogrammen weiter, da Schadprogramme möglicherweise versuchen, sich sensible Daten zunutze zu machen, die als Folge einer spekulativen Ausführung im Hauptspeicher zurückblieben. Auf diese Weise, indem der Abfangadressbereich während einer spekulativen Ausführung zugeordnet wird, ist es wahrscheinlicher, dass die beschriebenen Ausführungsformen schädlichen Programmcode überwachen, der versucht, auf sensible Daten zuzugreifen, die während einer spekulativen Ausführung im Hauptspeicher gespeichert werden.
  • Figurenliste
    • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung.
    • 2 veranschaulicht eine Ausführungsform von Operationen, um Abfangcode in einen Ausführungspfad eines Prozesses zu injizieren, der Anwendungscode ausführt, um einen Abfangadressbereich zuzuordnen.
    • 3 veranschaulicht eine Ausführungsform von Operationen, um potenziell schädliche Aktivität aus Zugriffen auf den Abfangadressbereich zu erkennen.
    • 4 veranschaulicht eine Ausführungsform von Operationen, um einen Zugriff auf einen Abfangadressbereich zu erkennen, wenn ein potenzielles Schadprogramm versucht, auf eine Kerneladresse zuzugreifen.
    • 5 veranschaulicht eine Ausführungsform von Operationen, um zu erkennen, dass ein potenzielles Schadprogramm einen Abfangcode aus einem Abfangadressbereich übergibt, um auf Rechenressourcen zuzugreifen.
    • 6 veranschaulicht eine Ausführungsform von Operationen durch einen spekulativen Ausführungsprozess, um Abfangcode während der Durchführung der spekulativen Ausführung des Anwendungscodes zu injizieren, um den Abfangadressbereich zuzuordnen, um schädlichen Programmcode zu erkennen.
    • 7 veranschaulicht eine Datenverarbeitungsumgebung, in der die Komponenten von 1 ausgeführt werden können.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Bei einer spekulativen Ausführung führt ein Prozessor spekulativ Anwendungscode vor dem Anwendungsprozess in dem Ausführungspfad aus, um dem Anwendungsprozess Parameter und Daten zur Verfügung zu stellen, wenn er schließlich den Punkt in dem Programm erreicht, an dem die spekulative Ausführung des Anwendungscodes stattgefunden hat. Wenn die spekulative Ausführung eine bedingte Verzweigung von verschiedenen Ausführungspfaden in Abhängigkeit von einer Bedingung erreicht, wie beispielsweise einem Wert eines zuvor festgelegten Parameters, verarbeitet die prozessorspekulative Ausführung den Anwendungscode in allen bedingten Verzweigungen, um Parameter und Werte vorab zu berechnen, damit sie ungeachtet dessen, welchen Pfad der bedingten Verzweigungen der Anwendungsprozess durchlaufen wird, zur Verfügung stehen. Dies erhöht die Geschwindigkeit des Anwendungsprozesses erheblich, indem die spekulativ erzeugten Parameter und Informationen verwendet werden können, ohne den Anwendungscode ausführen zu müssen.
  • Wenn ein Prozess, der spekulativ Code ausführt, einen Systemaufruf in einer bedingten Verzweigung verarbeitet, um auf Daten in Kerneladressen zuzugreifen, können die Daten, auf die zugegriffen wird, welche sensible und persönliche Informationen aufweisen können, nach dem Stand der Technik im Cache gespeichert werden. Des Weiteren können die Daten, auf die zugegriffen wird, im Cache verbleiben, wenn der Anwendungsprozess die andere Verzweigung hinabschreitet, die nicht den Systemaufruf enthält, der auf geschützte Daten in dem Kernel zugreift. Schädlicher Programmcode versucht möglicherweise, zwischengespeicherte geschützte Daten zu lesen, die von der spekulativen Ausführung im Cache gespeichert wurden.
  • Um die Risiken einer spekulativen Ausführung anzugehen, kann eine spekulative Ausführung nach dem Stand der Technik auf einer beliebigen bedingten Verzweigung angehalten werden, um zu vermeiden, dass geschützte Daten im Cache bleiben. Eine weitere aktuelle Lösung besteht darin, den Cache zu leeren, um etwaige geschützte Daten zu entfernen oder eine Abbildung von Adressen auf die geschützten Daten aufzuheben. Indem sie Parameter und andere Informationen beseitigen, die vor dem Anwendungsprozess spekulativ erzeugt wurden, machen diese Lösungen jedoch die Vorteile einer spekulativen Ausführung zunichte, die Daten und Parameter zur Verfügung stellt, bevor diese von dem Anwendungsprozess benötigt werden.
  • Beschriebene Ausführungsformen stellen Verbesserungen der Computertechnologie bereit, um schädlichen Programmcode zu erkennen, während eine prozessorspekulative Ausführung fortgesetzt werden darf, indem Abfangcode als Reaktion auf das Verarbeiten eines angegebenen Typs von Befehl ausgeführt wird. Der Abfangcode ordnet einen Abfangadressbereich zu. Der angegebene Typ von Befehl kann dann nach dem Ausführen des Abfangcodes ausgeführt werden. Der Abfangadressbereich wäre kein von der Anwendung verwendeter Adressbereich, da er von Abfangcode zugeordnet wurde, der nicht Teil des Anwendungscodes ist. Wenn eine Anwendung versucht, auf den Abfangadressbereich zuzugreifen, kann die Anwendung als potenziell schädlicher Programmcode betrachtet werden und eine Schutzmaßnahme kann ergriffen werden, wie beispielsweise das Durchführen des Übersendens einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder des Überwachens der Ausführung der zugreifenden Anwendung und/oder des Einschränkens der Ausführung der Anwendung, die auf den Abfangadressbereich zugreift.
  • 1 veranschaulicht eine Ausführungsform einer Datenverarbeitungsumgebung, die ein Computersystem 100 enthält, das über einen Prozessor 102, einen Hauptspeicher 104 und eine Speichereinheit 106 verfügt, welche über einen Bus 107 Daten austauschen. Der Prozessor 102 kann eine getrennte zentrale Verarbeitungseinheit (CPU, central processing unit), einen oder eine Gruppe von mehreren Kernen auf einer einzelnen CPU oder eine Gruppe von Verarbeitungsressourcen auf einer oder mehreren CPUs aufweisen.
  • Der Hauptspeicher 104 enthält ein Betriebssystem 108, um einen Zugriff einer Anwendung auf Daten zu verwalten, die in der Speichereinheit 106 gespeichert sind, und um die Adressierung von Daten als eine Spur, eine logische Blockadresse (LBA, Logical Block Address), eine Speicherzelle, eine Gruppe von Zellen (z.B. Spalte, Zeile oder Zellenarray), einen Sektor, ein Segment usw. zu verwalten, die Teil einer größeren Gruppierung von Spuren sein können, wie beispielsweise eines Datenträgers, einer logischen Einheit usw. Das Betriebssystem 108 kann eine oder mehrere Instanzen eines Anwendungsprozesses 110 starten, um Anwendungscode 112 in einem Anwendungsprogramm 114 auszuführen, in dem es mehrere Anwendungen 114 geben kann. Der Prozessor 102 enthält spekulative Ausführungslogik 116, um Anwendungscode 112 vor einer Position in dem Ausführungspfad spekulativ auszuführen, an der der Anwendungsprozess 110 den Anwendungscode 112 ausführt, so dass Parameter und andere Informationen von dem spekulativ ausgeführten Anwendungscode 112 dem Anwendungsprozess 110 zur Verfügung stehen, wenn er diesen Punkt in dem Anwendungscode 112 erreicht, der spekulativ ausgeführt wurde. Der Prozessor 102 kann eine spekulative Ausführung auf einem beliebigen laufenden Prozess 110 durchführen.
  • Das Betriebssystem 108 verwaltet eine Adresstabelle 118, die auch als Hardware Page Table (HPT) bezeichnet wird, welche eine Abbildung von logischen Adressen, die Anwendungen 114 zugeordnet sind, auf eine physische Position vornimmt, von wo aus die Daten in einem lokalen Cache 120 in dem Hauptspeicher 104 oder in der Speichereinheit 106 gespeichert werden. In bestimmten Ausführungsformen können die logischen Adressen virtuelle Adressen aufweisen, wobei Daten für die virtuellen oder logischen Adressen in dem Cache 120 im Hauptspeicher 104 oder in der Speichereinheit 106 gespeichert werden können, wobei Daten für virtuelle Adressen in der Speichereinheit 106 in den Cache 120 zum Zugriff durch den Anwendungsprozess 110 und eine spekulative Ausführung durch den Prozessor 102 umgelagert werden müssen.
  • Das Betriebssystem 108 kann des Weiteren ein Bedrohungsüberwachungsprogramm 122 enthalten, um festzustellen, ob eine Anwendung 126, die in dem Computersystem 100 oder in einem über ein Netzwerk entfernt verbundenen Computersystem ausgeführt wird, welche Eingabe-/Ausgabe-(E/A-)Anforderungen ausgibt, ein potenzielles Schadprogramm 126, wie beispielsweise Malware, Ransomware, einen Virus und anderen schädlichen Programmcode aufweist.
  • Der Hauptspeicher 104 enthält Abfangcode 124, der in den Pfad einer spekulativen Ausführung des Anwendungscodes 112 injiziert wird. Der Abfangcode 124 ist dafür vorgesehen, Abfangadressen oder Abfangdaten 128 zuzuordnen, auf die von dem Anwendungsprogramm 114 nicht zugegriffen würde und auf die wahrscheinlich von einem Schadprogramm zugegriffen würde, das versucht, auf Daten zuzugreifen, um sie zu stehlen, wie beispielsweise bei einem Seitenkanalangriff, oder auf die aufgrund eines Programmfehlers in einem berechtigten Programm zugegriffen würde. In einer einzelnen Ausführungsform kann der Abfangcode 124 einen Abfangadressbereich von Adressen zuordnen, die eine Abbildung auf ungültige Positionen vornehmen, so dass ein Zugriff auf den Abfangadressbereich zu einem Segmentierungsfehler führen und das Betriebssystem 108 auf eine mögliche schädliche Aktivität aufmerksam machen würde. In einer alternativen Ausführungsform kann der Abfangadressbereich eine Abbildung auf Abfangdaten 128 vornehmen, die von dem Abfangcode 124 zu dem Cache 120 hinzugefügt wurden, wie beispielsweise gefälschte Kennwörter und Benutzerkennungen, die von berechtigten Anwendungsprogrammen 114 oder gültigen Benutzern nicht vorgelegt würden. Somit sind eine potenziell schädliche Anwendung 126 oder ein Benutzer, der Abfangdaten 128 vorlegt, um auf Rechenressourcen in dem System 100 zuzugreifen, an verdächtiger Aktivität als ein potenzielles Schadprogramm 126 beteiligt, wofür eine Schutzmaßnahme ergriffen werden muss. Es kann angenommen werden, dass Ransomware oder andere böswillige Programme auf die Abfangdaten 128 als Teil von Operationen zugreifen würden, um Daten in dem Speicher 106 zu stehlen oder zu verschlüsseln. Ein Abfangadressbereich kann gekennzeichnet und in Informationen und Markierungen der Adresstabelle 118 angegeben werden.
  • Der Hauptspeicher 104 enthält des Weiteren ein Bedrohungsüberwachungsprogramm 122, um verdächtige Prozesse, die möglicherweise schädlichen Programmcode haben, wie beispielsweise ein Virus, Ransomware usw., auf der Grundlage eines Zugriffs auf einen Abfangadressbereich und/oder Abfangdaten 128, die von dem Abfangcode 124 erzeugt wurden, zu erkennen.
  • Das Betriebssystem 108, das Anwendungsprogramm 114, der Abfangcode 124, das Bedrohungsüberwachungsprogramm 122 sind in 1 als Programmcode gezeigt, der in den Hauptspeicher 104 geladen und von einem oder mehreren der Prozessoren 102 ausgeführt wird. Alternativ können einige oder alle der Funktionen als Mikrocode oder Firmware in Hardware-Einheiten in dem System 100, wie beispielsweise in anwendungsspezifischen integrierten Schaltungen (ASICs, Application Specific Integrated Circuits), ausgeführt sein.
  • Der Speicher 106 kann eine oder mehrere in der Technik bekannte Speichereinheiten wie beispielsweise eine Solid-State-Speichereinheit (SSD, solid state storage device) aufweisen, die aus Solid-State-Elektronik, NAND-Speicherzellen, EEPROM (Electrically Erasable Programmable Read-Only Memory bzw. elektrisch löschbarem programmierbarem Nur-Lese-Speicher), Flashspeicher, einer Flashplatte, einem Arbeitsspeicher-(Random-Access-Memory-(RAM-)Laufwerk, einem Storage-Class-Memory (SCM), einem Phasenwechselspeicher (PCM, Phase Change Memory), einem Resistive Random Access Memory (RRAM), einem Spin Transfer Torque Memory (STM-RAM), einem Conductive Bridging RAM (CBRAM), einem Magnetfestplattenlaufwerk, einer optischen Platte, einem Band usw. besteht. Die Speichereinheiten können des Weiteren zu einer Anordnung von Einheiten wie beispielsweise Just a Bunch of Disks (JBOD), Direct Access Storage Device (DASD), einer Redundant-Array-of Independent Disks-(RAID-)Anordnung, einer Virtualisierungseinheit usw. zusammengestellt sein. Des Weiteren können die Speichereinheiten heterogene Speichereinheiten von verschiedenen Herstellern oder von demselben Hersteller aufweisen.
  • Der Hauptspeicher 104 kann geeignete flüchtige oder nicht flüchtige Speichereinheiten, darunter die vorstehend beschriebenen, aufweisen.
  • 2 veranschaulicht eine Ausführungsform von Operationen für den Prozessor 102, der Ausführungscode ausführt, die Teil einer normalen Verarbeitung von Anwendungscode oder einer spekulativen Ausführung des Anwendungscodes 112 sein können. Nach dem Einleiten (am Block 200) einer Operation, um den Anwendungscode 112 spekulativ oder in anderer Weise auszuführen, verarbeitet der Prozessor 102 (am Block 202) einen Befehl in dem Anwendungscode 112. Wenn (am Block 204) der verarbeitete Befehlstyp ein angegebener Befehlstyp ist, um die Ausführung des Abfangcodes 124 auszulösen, wie beispielsweise ein Systemaufruf oder ein Aufruf, auf den Kerneladressraum zuzugreifen, führt der Prozessor 102 (am Block 206) den Abfangcode 124 aus, um einen Abfangadressbereich in dem Kerneladressraum zuzuordnen, wie beispielsweise einen Abfangadressbereich, der eine Abbildung auf ungültige physische Adressen oder einen Bereich vornimmt, für den keine Daten in dem Cache gespeichert sind. Alternativ kann der Prozessor 102 Abfangdaten128 in dem Abfangadressbereich enthalten, die beispielsweise einen gefälschten Benutzernamen und ein gefälschtes Kennwort enthalten. Wenn (am Block 204) der Prozessbefehl nicht von dem angegebenen Typ ist, oder nach dem Ausführen des Abfangcodes 124 (am Block 206), führt der Prozessor 102 (am Block 208) den verarbeiteten Befehl aus und fährt mit dem Verarbeiten des Anwendungscodes 112 fort, wie beispielsweise dem spekulativen Verarbeiten von Code in allen bedingten Verzweigungen. Es kann mehrere Instanzen von Abfangadressbereichen geben, die als Reaktion auf mehrere Instanzen des Ausführens des Abfangcodes 124 während der Ausführung erzeugt wurden.
  • 3 veranschaulicht eine Ausführungsform von Operationen, die von dem Bedrohungsüberwachungsprogramm 122 durchgeführt werden, das Teil des Betriebssystems 108 sein kann, um festzustellen, ob ein Anwendungsprogramm 126 ein potenzielles Schadprogramm ist. Nachdem (am Block 300) erkannt wurde, dass ein potenzielles Schadprogramm 126 auf den Abfangadressbereich zugegriffen hat, wie beispielsweise eine Lese- oder Schreiboperation an den Abfangadressbereich ausgegeben hat, führt das Bedrohungsüberwachungsprogramm 122 (am Block 302) ein Übersenden einer Benachrichtigung an einen Benutzer oder ein Anti-Virus-Programm, dass die zugreifende Anwendung 126 potenziell schädlichen Programmcode aufweist, und/oder ein Überwachen der Ausführung des potenziellen Schadprogramms 126 und/oder ein Beschränken der Ausführung des potenziellen Schadprogramms 126 durch. Zum Beispiel kann das Bedrohungsüberwachungsprogramm 122 das potenzielle Schadprogramm 126 in Quarantäne stellen und den Benutzer darauf aufmerksam machen, weitere Maßnahmen zu ergreifen, wie beispielsweise dem potenziellen Schadprogramm 126 die Ausführung zu gestatten, wenn es ein berechtigtes Programm ist, das potenzielle Schadprogramm 126 zu löschen oder andernfalls das potenzielle Schadprogramm 126 an seiner Ausführung zu hindern. In bestimmten Ausführungsformen kann das Überwachen des potenziellen Schadprogramms 126 aufweisen, dass dem Programm 126 gestattet wird, in einer „Honigtopf“-Umgebung ausgeführt zu werden, in der dem Programm 126 Informationen bereitgestellt werden, um zu überwachen, wie das potenzielle Schadprogramm 126 in dem Computersystem 100 interagiert und mit welchen Adressen es über das Internet Daten a ustauscht.
  • 4 veranschaulicht eine zusätzliche Ausführungsform von Operationen, die von dem Betriebssystem 108, dem Bedrohungsüberwachungsprogramm 122 und/oder einem anderen Programm durchgeführt werden, um festzustellen, ob ein Anwendungsprogramm 126 ein potenzielles Schadprogramm ist, wenn die Anwendung versucht, auf eine Kerneladresse in dem Kerneladressraum des Betriebssystems 108 zuzugreifen. Nachdem (am Block 400) festgestellt wurde, dass eine Anwendung 126, die möglicherweise im Benutzeradressbereich ausgeführt wird, versucht, auf eine angeforderte Kerneladresse zuzugreifen, stellt das Betriebssystem 108/Bedrohungsüberwachungsprogramm 122 (am Block 402) fest, ob sich die angeforderte Kerneladresse in der Adresstabelle 118 befindet. Wenn sich die Kerneladresse (am Block 402) in der Adresstabelle 118 befindet und wenn sich (am Block 404) Daten für die angeforderte Kerneladresse im Cache 120 befinden, werden die angeforderten Daten für die Kerneladresse (am Block 406) aus dem Cache 120 an die anfordernde Anwendung zurückgegeben. Wenn sich die angeforderte Kerneladresse (am Block 402) nicht in der Adresstabelle 118 befindet oder wenn sich Daten für die angeforderte Kerneladresse (am Block 404) nicht im Cache 120 befinden, wird (am Block 408) ein Segmentierungsfehler ausgelöst.
  • Als Reaktion auf den Segmentierungsfehler (am Block 408) stellt das Betriebssystem 108/ Bedrohungsüberwachungsprogramm 122 (am Block 410) fest, ob sich die angeforderte Kerneladresse im Abfangadressbereich befindet. Wenn nicht, wird (am Block 412) ein Fehler an die anfordernde Anwendung zurückgegeben, bei der es sich nicht um ein schädliches Programm 126 handeln kann, da sie nicht versucht hat, auf eine Abfangadresse zuzugreifen, jedoch kann sie ein berechtigtes Programm aufweisen, das einen Segmentierungsfehler empfängt. Wenn sich die angeforderte Kerneladresse (am Block 410) im Abfangadressbereich befindet, kann das Programm 126 als schädlich betrachtet werden und das Bedrohungsüberwachungsprogramm 122 führt (am Block 414) eine der mit Bezug auf das potenzielle Schadprogramm 126 beschriebenen Bedrohungsbehandlungsoperationen, wie sie beispielsweise mit Bezug auf den Block 302 in 3 beschrieben sind, durch.
  • 5 veranschaulicht eine zusätzliche Ausführungsform von Operationen, die von dem Bedrohungsüberwachungsprogramm 122, dem Betriebssystem 108 und/oder einem anderen Programm durchgeführt werden, um festzustellen, ob ein Anwendungsprogramm 126 ein potenzielles Schadprogramm in einer Ausführungsform ist, in der Abfangdaten 128 am Abfangadressbereich bereitgestellt werden, die beispielsweise Abfangkennwörter und Benutzer-IDs haben. Nachdem (am Block 500) festgestellt wurde, dass eine zugreifende Anwendung 126 einen Zugriffscode wie beispielsweise eine Benutzer-ID oder ein Kennwort übergibt, um auf eine in dem Computersystem 100 befindliche oder mit dem Computersystem 100 verbundene Rechenressource wie beispielsweise eine Hardware-, Software- oder eine Datenressource zuzugreifen, stellt das Bedrohungsüberwachungsprogramm 122/Betriebssystem 108 (am Block 502) fest, ob sich der/die übergebene(n) Code(s) an Positionen in dem Cache 120 oder in dem Speicher 106 befinden, die von einer der Adressen in einem Abfangadressbereich adressiert werden. Wenn der übergebene Zugriffscode (am Block 502) nicht aus einem Abfangadressbereich stammt, gestattet das Bedrohungsüberwachungsprogramm 122 (am Block 504) die Verarbeitung des Codes, um festzustellen, ob der Zugriff auf die angeforderte Rechenressource berechtigt ist. Andernfalls, wenn sich der übergebene Zugriffscode (am Block 502) in einem der Abfangadressbereiche befindet, führt das Bedrohungsüberwachungsprogramm 122 (am Block 506) eine der mit Bezug auf das potenzielle Schadprogramm 126 beschriebenen Bedrohungsbehandlungsoperationen, wie beispielsweise mit Bezug auf den Block 302 in 3 beschrieben, durch.
  • Bei den Ausführungsformen der 4 und 5 ist, wenn eine Anwendung erkannt wird, die versucht, auf einen der Abfangadressbereiche zuzugreifen oder in den Abfangadressbereichen gespeicherte Codes zu übergeben, die Wahrscheinlichkeit hoch, dass die zugreifende Anwendung schädlichen Programmcode aufweist, da die Abfangadressbereiche nicht von Anwendungscode 112 aus einem berechtigten Anwendungsprogramm 114 zugeordnet wurden, es sei denn, das berechtigte Anwendungsprogramm 114 hat einen Fehler oder Programmfehler, bei dem es auf dem Anwendungsprogramm 114 nicht zugeordnete Adressen zugreift.
  • 6 veranschaulicht eine Ausführungsform von Operationen, die von dem Prozessor 102 durchgeführt werden, der eine spekulative Ausführung durchführt, bevor der Anwendungsprozess 110 den Anwendungscode 112 in dem Ausführungspfad ausführt. Während der spekulativen Verarbeitung des Anwendungscodes 112 verarbeitet der Prozessor 102 (am Block 602) bedingte Verzweigungen in dem Anwendungscode 112, wobei eine Bedingung oder ein Parameterwert, der während des zuvor ausgeführten Anwendungscodes 112 gesetzt wurde, bestimmt, welche Verzweigung in dem Code genommen werden soll. Der Prozessor 102 verarbeitet den Anwendungscode 112 in allen Verzweigungen, um jedwede Parameter und Daten ungeachtet der Verzweigung, die der Anwendungsprozess 110 verarbeitet, wenn er diese bedingte Verzweigung erreicht, zur Verfügung zu stellen. Nach der Verarbeitung (am Block 604) eines Befehls in einer der bedingten Verzweigungen stellt der Prozessor 102 (am Block 606) fest, ob der Typ des verarbeiteten Befehls einen Systemaufruf oder einen anderen Zugriff auf den Kernelmodus und den Kerneladressraum aufweist. Wenn ja, führt der Prozessor 102 (am Block 608) den Abfangcode 124 aus, um einen Abfangadressbereich, der einen Bereich von Kerneladressen aufweist, zuzuordnen, der eine Abbildung auf eine ungültige Position in der Adresstabelle 118 oder eine Abbildung auf Positionen vornimmt, die Abfangdaten 128 haben. Nachdem der Abfangcode 124 (aus dem Block 608) verarbeitet wurde oder wenn der verarbeitete Befehl keinen Systemaufruf (von der Nein-Verzweigung des Blocks 606) aufweist, führt der Prozessor 102 (am Block 610) den verarbeiteten Befehl spekulativ aus und setzt (am Block 612) die spekulative Ausführung des Anwendungscodes 112 fort, indem er zurück zum Block 600 schaltet.
  • Bei der Ausführungsform von 6 löst ein Systemaufruf während einer spekulativen Ausführung des Anwendungscodes 112 eine Zuordnung eines Abfangadressbereichs aus. Wenn der Anwendungsprozess 110 die andere Verzweigung, die den Systemaufruf nicht hat, nimmt, bei der es sich wahrscheinlich um eine Verzweigung handelt, die weitaus häufiger durchlaufen wird, wird der Code in dieser Verzweigung spekulativ ausgeführt worden sein, so dass folglich die Vorteile einer spekulativen Ausführung für die Verzweigung, die häufiger durchlaufen wird, bereitgestellt werden. Auf diese Weise ermöglichen es beschriebene Ausführungsformen, dass die Vorteile einer spekulativen Ausführung für die häufigsten Verarbeitungspfade realisiert werden, während Abfangadressbereiche in Verzweigungen zugeordnet werden, die Systemaufrufe haben, damit ein Schadprogramm 126 abgefangen werden kann, das versucht, auf Kerneladressen zuzugreifen. Der schädliche Programmcode 126 wird feststellen, dass die Abfangadressen in der bedingten Verzweigung zugeordnet wurden, und im Glauben, dass sie als Teil eines Systemaufrufs zugeordnet wurden und sensible Informationen wie beispielsweise persönliche Daten, Kennwörter usw. enthalten können, wird er versuchen, auf diese Abfangadressen zuzugreifen.
  • In alternativen Ausführungsformen kann der Abfangcode 124 ausgeführt werden, nachdem der Systemaufruf ausgeführt wurde.
  • Bei der vorliegenden Erfindung kann es sich um ein System, ein Verfahren und/oder ein Computerprogrammprodukt handeln. Das Computerprogrammprodukt kann ein durch einen Computer lesbares Speichermedium (oder -medien) mit durch einen Computer lesbaren Programmanweisungen darauf umfassen, um einen Prozessor dazu zu veranlassen, Aspekte der vorliegenden Erfindung auszuführen.
  • Bei dem durch einen Computer lesbaren Speichermedium kann es sich um eine physische Einheit handeln, die Anweisungen zur Verwendung durch ein System zur Ausführung von Anweisungen behalten und speichern kann. Bei dem durch einen Computer lesbaren Speichermedium kann es sich zum Beispiel um eine elektronische Speichereinheit, eine magnetische Speichereinheit, eine optische Speichereinheit, eine elektromagnetische Speichereinheit, eine Halbleiterspeichereinheit oder jede geeignete Kombination daraus handeln, ohne auf diese beschränkt zu sein. Zu einer nicht erschöpfenden Liste spezifischerer Beispiele des durch einen Computer lesbaren Speichermediums gehören die folgenden: eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM bzw. Flash-Speicher), ein statischer Direktzugriffsspeicher (SRAM), ein tragbarer Kompaktspeicherplatte-Nur-Lese-Speicher (CD-ROM), eine DVD (digital versatile disc), ein Speicher-Stick, eine Diskette, eine mechanisch kodierte Einheit wie zum Beispiel Lochkarten oder gehobene Strukturen in einer Rille, auf denen Anweisungen gespeichert sind, und jede geeignete Kombination daraus. Ein durch einen Computer lesbares Speichermedium soll in der Verwendung hierin nicht als flüchtige Signale an sich aufgefasst werden, wie zum Beispiel Funkwellen oder andere sich frei ausbreitende elektromagnetische Wellen, elektromagnetische Wellen, die sich durch einen Wellenleiter oder ein anderes Übertragungsmedium ausbreiten (z.B. durch ein Glasfaserkabel geleitete Lichtimpulse) oder durch einen Draht übertragene elektrische Signale.
  • Hierin beschriebene, durch einen Computer lesbare Programmanweisungen können von einem durch einen Computer lesbaren Speichermedium auf jeweilige Datenverarbeitungs-/Verarbeitungseinheiten oder über ein Netzwerk wie zum Beispiel das Internet, ein lokales Netzwerk, ein Weitverkehrsnetz und/oder ein drahtloses Netzwerk auf einen externen Computer oder eine externe Speichereinheit heruntergeladen werden. Das Netzwerk kann Kupferübertragungskabel, Lichtwellenübertragungsleiter, drahtlose Übertragung, Leitwegrechner, Firewalls, Vermittlungseinheiten, Gateway-Computer und/oder Edge-Server aufweisen. Eine Netzwerkadapterkarte oder Netzwerkschnittstelle in jeder Datenverarbeitungs-/Verarbeitungseinheit empfängt durch einen Computer lesbare Programmanweisungen aus dem Netzwerk und leitet die durch einen Computer lesbaren Programmanweisungen zur Speicherung in einem durch einen Computer lesbaren Speichermedium innerhalb der entsprechenden Datenverarbeitungs-/Verarbeitungseinheit weiter.
  • Bei durch einen Computer lesbaren Programmanweisungen zum Ausführen von Arbeitsschritten der vorliegenden Erfindung kann es sich um Assembler-Anweisungen, ISA-Anweisungen (Instruction-Set-Architecture), Maschinenanweisungen, maschinenabhängige Anweisungen, Mikrocode, Firmware-Anweisungen, zustandssetzende Daten oder entweder Quellcode oder Objektcode handeln, die in einer beliebigen Kombination aus einer oder mehreren Programmiersprachen geschrieben werden, darunter eine objektorientierte Programmiersprache wie Java, Smalltalk, C++ o.ä. sowie herkömmliche prozedurale Programmiersprachen wie die Programmiersprache „C“ oder ähnliche Programmiersprachen. Die durch einen Computer lesbaren Programmanweisungen können vollständig auf dem Computer des Benutzers, teilweise auf dem Computer des Benutzers, als eigenständiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem fernen Computer oder vollständig auf dem fernen Computer oder Server ausgeführt werden. In letzterem Fall kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch eine beliebige Art Netzwerk verbunden sein, darunter ein lokales Netzwerk (LAN) oder ein Weitverkehrsnetz (WAN), oder die Verbindung kann mit einem externen Computer hergestellt werden (zum Beispiel über das Internet unter Verwendung eines Internet-Dienstanbieters). In einigen Ausführungsformen können elektronische Schaltungen, darunter zum Beispiel programmierbare Logikschaltungen, im Feld programmierbare Gatter-Anordnungen (FPGA, field programmable gate arrays) oder programmierbare Logikanordnungen (PLA, programmable logic arrays) die durch einen Computer lesbaren Programmanweisungen ausführen, indem sie Zustandsinformationen der durch einen Computer lesbaren Programmanweisungen nutzen, um die elektronischen Schaltungen zu personalisieren, um Aspekte der vorliegenden Erfindung durchzuführen.
  • Aspekte der vorliegenden Erfindung sind hierin unter Bezugnahme auf Ablaufpläne und/oder Blockschaltbilder bzw. Schaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es wird darauf hingewiesen, dass jeder Block der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder sowie Kombinationen von Blöcken in den Ablaufplänen und/oder den Blockschaltbildern bzw. Schaubildern mittels durch einen Computer lesbare Programmanweisungen ausgeführt werden können.
  • Diese durch einen Computer lesbaren Programmanweisungen können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder einer anderen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, so dass die über den Prozessor des Computers bzw. der anderen programmierbaren Datenverarbeitungsvorrichtung ausgeführten Anweisungen ein Mittel zur Umsetzung der in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte erzeugen. Diese durch einen Computer lesbaren Programmanweisungen können auch auf einem durch einen Computer lesbaren Speichermedium gespeichert sein, das einen Computer, eine programmierbare Datenverarbeitungsvorrichtung und/oder andere Einheiten so steuern kann, dass sie auf eine bestimmte Art funktionieren, so dass das durch einen Computer lesbare Speichermedium, auf dem Anweisungen gespeichert sind, ein Herstellungsprodukt aufweist, darunter Anweisungen, welche Aspekte der/des in dem Block bzw. den Blöcken des Ablaufplans und/oder der Blockschaltbilder bzw. Schaubilder angegebenen Funktion/Schritts umsetzen.
  • Die durch einen Computer lesbaren Programmanweisungen können auch auf einen Computer, eine andere programmierbare Datenverarbeitungsvorrichtung oder eine andere Einheit geladen werden, um das Ausführen einer Reihe von Prozessschritten auf dem Computer bzw. der anderen programmierbaren Vorrichtung oder anderen Einheit zu verursachen, um einen auf einem Computer ausgeführten Prozess zu erzeugen, so dass die auf dem Computer, einer anderen programmierbaren Vorrichtung oder einer anderen Einheit ausgeführten Anweisungen die in dem Block bzw. den Blöcken der Ablaufpläne und/oder der Blockschaltbilder bzw. Schaubilder festgelegten Funktionen/Schritte umsetzen.
  • Die Ablaufpläne und die Blockschaltbilder bzw. Schaubilder in den Figuren veranschaulichen die Architektur, die Funktionalität und den Betrieb möglicher Ausführungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaltbildern bzw. Schaubildern ein Modul, ein Segment oder einen Teil von Anweisungen darstellen, die eine oder mehrere ausführbare Anweisungen zur Ausführung der bestimmten logischen Funktion(en) aufweisen. In einigen alternativen Ausführungen können die in dem Block angegebenen Funktionen in einer anderen Reihenfolge als in den Figuren gezeigt stattfinden. Zwei nacheinander gezeigte Blöcke können zum Beispiel in Wirklichkeit im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können manchmal je nach entsprechender Funktionalität in umgekehrter Reihenfolge ausgeführt werden. Es ist ferner anzumerken, dass jeder Block der Blockschaltbilder bzw. Schaubilder und/oder der Ablaufpläne sowie Kombinationen aus Blöcken in den Blockschaltbildern bzw. Schaubildern und/oder den Ablaufplänen durch spezielle auf Hardware beruhende Systeme, welche die festgelegten Funktionen oder Schritte durchführen oder Kombinationen aus Spezial-Hardware und Computeranweisungen ausführen, umgesetzt werden können.
  • Die Datenverarbeitungskomponenten von 1, darunter das Computersystem 100, können in einem oder mehreren Computersystemen wie beispielsweise dem in 7 gezeigten Computersystem 702 ausgeführt sein. Das Computersystem/der Server 702 kann im allgemeinen Kontext von durch ein Computersystem ausführbaren Anweisungen wie beispielsweise Programmmodulen, die durch ein Computersystem ausgeführt werden, beschrieben werden. Im Allgemeinen können Programmmodule Routinen, Programme, Objekte, Komponenten, Logik, Datenstrukturen und so weiter enthalten, die bestimmte Aufgaben durchführen oder bestimmte abstrakte Datentypen ausführen. Das Computersystem/der Server 702 kann in verteilten Cloud-Computing-Umgebungen in die Praxis umgesetzt werden, in denen Tasks durch entfernte Verarbeitungseinheiten durchgeführt werden, die durch ein Datenübertragungsnetzwerk verbunden sind. In einer verteilten Cloud-Computing-Umgebung können sich Programmmodule sowohl in lokalen als auch in fernen Speichermedien eines Computersystems, darunter Hauptspeichereinheiten, befinden.
  • Wie in 7 gezeigt ist, ist das Computersystem/der Server 702 in Form einer Universal-Datenverarbeitungseinheit gezeigt. Zu den Komponenten des Computersystems/Servers702 können, ohne darauf beschränkt zu sein, ein oder mehrere Prozessoren oder Verarbeitungseinheiten 704, ein Systemspeicher 706 und ein Bus 708 gehören, der verschiedene Systemkomponenten verbindet, darunter den Systemspeicher 706 mit dem Prozessor 704. Der Bus 708 stellt eine oder mehrere von beliebigen von mehreren Arten von Busstrukturen dar, darunter einen Hauptspeicherbus oder einen Hauptspeichercontroller, einen peripheren Bus, einen Accelerated Graphics Port und einen Prozessor- oder lokalen Bus, der beliebige einer Vielfalt an Busarchitekturen verwendet. Beispielhaft, und nicht darauf beschränkt, gehören zu solchen Architekturen der Bus „Industry Standard Architecture (ISA)“, der Bus „Micro Channel Architecture (MCA)“, der Bus „Enhanced ISA (EISA)“, der lokale Bus „Video Electronics Standards Association (VESA)“ und der Bus „Peripheral Component Interconnects (PCI)“.
  • Das Computersystem/der Server 702 enthält üblicherweise eine Vielfalt an durch ein Computersystem lesbaren Datenträgern. Solche Datenträger können jedwede verfügbaren Datenträger sein, auf die von dem Computersystem/Server 702 zugegriffen werden kann, und zu ihnen gehören sowohl flüchtige und nicht flüchtige als auch auswechselbare und nicht auswechselbare Datenträger.
  • Der Systemspeicher 706 kann durch ein Computersystem lesbare Datenträger in Form von flüchtigem Speicher wie beispielsweise Direktzugriffsspeicher (RAM) 710 und/oder Cachespeicher 712 enthalten. Das Computersystem/der Server 702 kann des Weiteren weitere auswechselbare/nicht auswechselbare, flüchtige/nicht flüchtige Speichermedien eines Computersystems enthalten. Lediglich als Beispiel kann das Speichersystem 713 für Leseoperationen von und Schreiboperationen auf einen nicht auswechselbaren, nicht flüchtigen Magnetdatenträger (nicht gezeigt und üblicherweise als „Festplattenlaufwerk“ bezeichnet) bereitgestellt werden. Obgleich nicht gezeigt, können ein Magnetplattenlaufwerk für Leseoperationen von und Schreiboperationen auf eine auswechselbare, nicht flüchtige Magnetplatte (z.B. eine „Diskette“) und ein optisches Plattenlaufwerk für Leseoperationen von oder Schreiboperationen auf eine auswechselbare, nicht flüchtige optische Platte, wie beispielsweise ein CD-ROM, DVD-ROM, oder andere optische Datenträger bereitgestellt werden. In diesen Fällen kann jeder Datenträger über eine oder mehrere Datenträgerschnittstellen mit dem Bus 708 verbunden werden. Wie weiter dargestellt und nachstehend beschrieben wird, kann der Hauptspeicher 706 mindestens ein Programmprodukt enthalten, das über einen Satz (z.B. zumindest einen) von Programmmodulen verfügt, die so konfiguriert sind, dass sie die Funktionen von Ausführungsformen der Erfindung ausführen.
  • Das Programm/Dienstprogramm 714, das über einen Satz (zumindest einen) von Programmmodulen 716 verfügt, kann beispielhaft und nicht als Einschränkung im Hauptspeicher 706 gespeichert werden, ebenso wie ein Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten. Das Betriebssystem, ein oder mehrere Anwendungsprogramme, andere Programmmodule und Programmdaten oder eine Kombination daraus können jeweils eine Ausführung einer Netzwerkumgebung umfassen. Die Komponenten des Computers 702 können als Programmmodule 716 ausgeführt sein, die im Allgemeinen die Funktionen und/oder die methodischen Vorgehensweisen von Ausführungsformen der Erfindung ausführen, wie hierin beschrieben ist. Die Systeme von 1 können in einem oder mehreren Computersystemen 702 ausgeführt sein, wobei, wenn sie in mehreren Computersystemen 702 ausgeführt sind, die Computersysteme dann über ein Netzwerk Daten austauschen können.
  • Das Computersystem/der Server 702 kann auch mit einer oder mehreren externen Einheiten 718 wie beispielsweise einer Tastatur, einer Zeigereinheit, einem Bildschirm 720 usw.; mit einer oder mehreren Einheiten, die einem Benutzer den Dialogverkehr mit dem Computersystem/Server 702 ermöglichen; und/oder beliebigen Einheiten (z.B. Netzkarte, Modem usw.), die dem Computersystem/Server 702 den Datenaustausch mit einer oder mehreren anderen Datenverarbeitungseinheiten ermöglichen, Daten austauschen. Ein solcher Datenaustausch kann über Ein-/Ausgabe-(E/A-)Schnittstellen 722 erfolgen. Dennoch kann das Computersystem/der Server 702 mit einem oder mehreren Netzwerken wie beispielsweise einem lokalen Netz (LAN), einem allgemeinen Weitverkehrsnetz (WAN) und/oder einem öffentlichen Netz (z.B. dem Internet) über den Netzwerkadapter 724 Daten austauschen. Wie dargestellt ist, tauscht der Netzwerkadapter 724 mit den anderen Komponenten des Computersystems/Servers 702 über den Bus 708 Daten aus. Es sollte klar sein, dass auch andere Hardware- und/oder Software-Komponenten in Verbindung mit dem Computersystem/Server 702 verwendet werden könnten, obgleich diese nicht gezeigt sind. Zu Beispielen gehören, ohne darauf beschränkt zu sein: Mikrocode, Einheitentreiber, redundante Verarbeitungseinheiten, externe Anordnungen von Plattenlaufwerken, RAID-Systeme, Bandlaufwerke sowie Speichersysteme zur Datenarchivierung usw.
  • Die Begriffe „eine Ausführungsform“, „Ausführungsform“, „Ausführungsformen“, „die Ausführungsform“, „die Ausführungsformen“, „eine oder mehrere Ausführungsformen“, „einige Ausführungsformen“ und „eine einzelne Ausführungsform“ bedeuten „eine oder mehrere (aber nicht alle) Ausführungsformen der vorliegenden Erfindung(en)“, soweit nicht ausdrücklich anders angegeben.
  • Die Begriffe „enthalten(d)“, „aufweisen(d)“, „verfügen(d) über“, „haben“ und Variationen hiervon bedeuten „einschließlich, ohne darauf beschränkt zu sein“, sofern nicht ausdrücklich anders angegeben.
  • Die Aufzählungsliste von Positionen bedeutet nicht, dass sich beliebige oder alle der Positionen gegenseitig ausschließen, sofern nicht ausdrücklich anders angegeben.
  • Die Begriffe „ein“, „eine“, „einer“ und „der“, „die“, „das“ bedeuten „ein(e) oder mehrere“, sofern nicht ausdrücklich anders angegeben.
  • Einheiten, die miteinander in Verbindung stehen, brauchen nicht ständig in Verbindung miteinander zu stehen, soweit nicht ausdrücklich anders angegeben. Ferner können Einheiten, die miteinander in Verbindung stehen, über einen oder mehrere Vermittler Daten direkt oder indirekt austauschen.
  • Eine Beschreibung einer Ausführungsform mit mehreren Komponenten, die miteinander in Verbindung stehen, bedeutet nicht, dass alle diese Komponenten benötigt werden. Hingegen wird eine Vielfalt an optionalen Komponenten beschrieben, um das breite Spektrum an möglichen Ausführungsformen der vorliegenden Erfindung zu veranschaulichen.
  • Wenn eine einzelne Einheit oder ein einzelner Artikel hierin beschrieben wird, ist ohne Weiteres ersichtlich, dass anstelle von einer einzelnen Einheit/einem einzelnen Artikel mehr als eine Einheit/ein Artikel (ungeachtet dessen, ob sie zusammenarbeiten oder nicht) verwendet werden können. Wenn mehr als eine Einheit oder mehr als ein Artikel hierin beschrieben wird (ungeachtet dessen, ob sie zusammenarbeiten oder nicht), ist ebenso ohne Weiteres ersichtlich, dass eine einzelne Einheit/ein einzelner Artikel anstelle der mehr als einen Einheit oder des mehr als einen Artikels verwendet werden kann oder dass anstelle der gezeigten Anzahl von Einheiten oder Programmen eine andere Anzahl von Einheiten/Artikeln verwendet werden kann. Die Funktionalität und/oder die Merkmale einer Einheit können alternativ durch eine oder mehrere andere Einheiten realisiert werden, die nicht ausdrücklich als über diese Funktionalität/Merkmale verfügend beschrieben sind. Folglich brauchen weitere Ausführungsformen der vorliegenden Erfindung die Einheit selbst nicht zu enthalten.
  • Die vorstehende Beschreibung von verschiedenen Ausführungsformen der Erfindung erfolgte zum Zweck der Veranschaulichung und Beschreibung. Sie soll weder erschöpfend sein noch die Erfindung auf die offenbarte genaue Form beschränken. Viele Änderungen und Varianten sind in Anbetracht der vorstehenden Lehre möglich. Der Umfang der Erfindung soll nicht durch diese ausführliche Beschreibung, sondern vielmehr durch die hier beigefügten Ansprüche eingeschränkt werden. Die vorstehende Spezifikation, die vorstehenden Beispiele und Daten stellen eine vollständige Beschreibung der Herstellung und Verwendung der Komposition der Erfindung dar. Da viele Ausführungsformen der Erfindung realisiert werden können, ohne vom Umfang der Erfindung abzuweichen, besteht die Erfindung in den nachfolgend beigefügten Ansprüchen.

Claims (26)

  1. Computerprogrammprodukt, um potenziell schädlichen Programmcode zu erkennen, der auf Daten aus einem Speicher zugreift, wobei das Computerprogrammprodukt ein durch einen Computer lesbares Speichermedium aufweist, in dem durch einen Computer lesbarer Programmcode realisiert ist, der, wenn er ausgeführt wird, Operationen durchführt, wobei die Operationen aufweisen: Verarbeiten eines angegebenen Typs von Befehl in Anwendungscode; Ausführen von Abfangcode als Reaktion auf das Verarbeiten des angegebenen Typs von Befehl, um einen Abfangadressbereich zuzuordnen; Ausführen des angegebenen Typs von Befehl in dem Anwendungscode; Feststellen, ob eine zugreifende Anwendung auf den Abfangadressbereich zugreift; und Durchführen eines Übersendens einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder eines Überwachens der Ausführung der zugreifenden Anwendung und/oder eines Einschränkens der Ausführung der zugreifenden Anwendung als Reaktion auf das Feststellen, dass die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat.
  2. Computerprogrammprodukt nach Anspruch 1, wobei durch den Anwendungscode, der ausgeführt wird, nicht auf den Abfangadressbereich zugegriffen wird.
  3. Computerprogrammprodukt nach Anspruch 1, wobei der angegebene Typ von Befehl einen Befehl für einen Wechsel aus einem Benutzermodus in den Kernelmodus aufweist, um auf Kerneladressen zuzugreifen, und wobei der Abfangadressbereich in einem Kerneladressraum definiert ist.
  4. Computerprogrammprodukt nach Anspruch 3, wobei die Operationen des Weiteren aufweisen: Empfangen eines Segmentierungsfehlers als Reaktion darauf, dass die zugreifende Anwendung auf eine Adresse in dem Kerneladressraum zugreift, die in einer Adresstabelle nicht auf gültige Daten in einem Cache abgebildet ist, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, als Reaktion auf das Empfangen des Segmentierungsfehlers durchgeführt wird.
  5. Computerprogrammprodukt nach Anspruch 4, wobei der angegebene Typ von Befehl einen Systemaufruf aufweist, wobei der Systemaufruf nach dem Ausführen des Abfangcodes ausgeführt wird.
  6. Computerprogrammprodukt nach Anspruch 1, wobei der Abfangadressbereich eine Abbildung auf ungültige physische Adressen in einer Adresstabelle vornimmt, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, ein Erkennen eines Fehlers aufweist, der erzeugt wird, wenn die zugreifende Anwendung auf den Abfangadressbereich zugreift, der eine Abbildung auf ungültige Positionen vornimmt.
  7. Computerprogrammprodukt nach Anspruch 1, wobei das Ausführen des Abfangcodes den Abfangadressbereich in einer Adresstabelle abbildet, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, das Erkennen aufweist, dass die zugreifende Anwendung versucht, Abfangdaten aus dem Abfangadressbereich zu verwenden, um auf Rechenressourcen zuzugreifen.
  8. Computerprogrammprodukt nach Anspruch 1, wobei mehrere Abfangadressbereiche als Reaktion auf mehrere Instanzen des Ausführens des Abfangcodes zugeordnet werden.
  9. Computerprogrammprodukt nach Anspruch 1, wobei der den Anwendungscode ausführende Prozessor beide Verzweigungen von bedingten Verzweigungen des Anwendungscodes spekulativ ausführt, wobei ein Ergebnis von nur einer der bedingten Verzweigungen in Abhängigkeit von einer Bedingung beibehalten wird, die zur Feststellung verwendet wird, welche der bedingten Verzweigungen durchlaufen werden soll.
  10. Computerprogrammprodukt nach Anspruch 9, wobei der Abfangcode in einer bedingten Verzweigung der bedingten Verzweigungen durch einen Prozessor bei der Verarbeitung der bedingten Verzweigungen spekulativ ausgeführt wird.
  11. System, um potenziell schädlichen Programmcode zu erkennen, der auf Daten aus einem Speicher zugreift, wobei das System aufweist: einen Prozessor; und ein durch einen Computer lesbares Speichermedium, das über ein durch einen Computer lesbares Programm verfügt, das, wenn es von dem Prozessor ausgeführt wird, Operationen durchführt, wobei die Operationen aufweisen: Verarbeiten eines angegebenen Typs von Befehl in Anwendungscode; Ausführen von Abfangcode als Reaktion auf das Verarbeiten des angegebenen Typs von Befehl, um einen Abfangadressbereich zuzuordnen; Ausführen des angegebenen Typs von Befehl in dem Anwendungscode; Feststellen, ob eine zugreifende Anwendung auf den Abfangadressbereich zugreift; und Durchführen eines Übersendens einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder eines Überwachens der Ausführung der zugreifenden Anwendung und/oder eines Einschränkens der Ausführung der zugreifenden Anwendung als Reaktion auf das Feststellen, dass die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat.
  12. System nach Anspruch 11, wobei der angegebene Typ von Befehl einen Befehl für einen Wechsel aus einem Benutzermodus in den Kernelmodus aufweist, um auf Kerneladressen zuzugreifen, und wobei der Abfangadressbereich in einem Kerneladressraum definiert ist.
  13. System nach Anspruch 12, wobei die Operationen des Weiteren aufweisen: Empfangen eines Segmentierungsfehlers als Reaktion darauf, dass die zugreifende Anwendung auf eine Adresse in dem Kerneladressraum zugreift, die in einer Adresstabelle nicht auf gültige Daten in einem Cache abgebildet ist, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, als Reaktion auf das Empfangen des Segmentierungsfehlers durchgeführt wird.
  14. System nach Anspruch 13, wobei der angegebene Typ von Befehl einen Systemaufruf aufweist, wobei der Systemaufruf nach dem Ausführen des Abfangcodes ausgeführt wird.
  15. System nach Anspruch 11, wobei der Abfangadressbereich eine Abbildung auf ungültige physische Adressen in einer Adresstabelle vornimmt, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, ein Erkennen eines Fehlers aufweist, der erzeugt wird, wenn die zugreifende Anwendung auf den Abfangadressbereich zugreift, der eine Abbildung auf ungültige Positionen vornimmt.
  16. System nach Anspruch 11, wobei das Ausführen des Abfangcodes den Abfangadressbereich in einer Adresstabelle abbildet, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, das Erkennen aufweist, dass die zugreifende Anwendung versucht, Abfangdaten aus dem Abfangadressbereich zu verwenden, um auf Rechenressourcen zuzugreifen.
  17. System nach Anspruch 11, wobei der den Anwendungscode ausführende Prozessor beide Verzweigungen von bedingten Verzweigungen des Anwendungscodes spekulativ ausführt, wobei ein Ergebnis von nur einer der bedingten Verzweigungen in Abhängigkeit von einer Bedingung beibehalten wird, die zur Feststellung verwendet wird, welche der bedingten Verzweigungen durchlaufen werden soll.
  18. System nach Anspruch 17, wobei der Abfangcode in einer bedingten Verzweigung der bedingten Verzweigungen durch einen Prozessor bei der Verarbeitung der bedingten Verzweigungen spekulativ ausgeführt wird.
  19. Verfahren, um potenziell schädlichen Programmcode zu erkennen, der auf Daten aus einem Speicher zugreift, wobei das Verfahren umfasst: Verarbeiten eines angegebenen Typs von Befehl in Anwendungscode; Ausführen von Abfangcode als Reaktion auf das Verarbeiten des angegebenen Typs von Befehl, um einen Abfangadressbereich zuzuordnen; Ausführen des angegebenen Typs von Befehl in dem Anwendungscode; Feststellen, ob eine zugreifende Anwendung auf den Abfangadressbereich zugreift; und Durchführen eines Übersendens einer Benachrichtigung, dass die zugreifende Anwendung potenziell schädlichen Programmcode aufweist, und/oder eines Überwachens der Ausführung der zugreifenden Anwendung und/oder eines Einschränkens der Ausführung der zugreifenden Anwendung als Reaktion auf das Feststellen, dass die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat.
  20. Verfahren nach Anspruch 19, wobei der angegebene Typ von Befehl einen Befehl für einen Wechsel aus einem Benutzermodus in den Kernelmodus aufweist, um auf Kerneladressen zuzugreifen, und wobei der Abfangadressbereich in einem Kerneladressraum definiert ist.
  21. Verfahren nach Anspruch 20, das des Weiteren umfasst: Empfangen eines Segmentierungsfehlers als Reaktion darauf, dass die zugreifende Anwendung auf eine Adresse in dem Kerneladressraum zugreift, die in einer Adresstabelle nicht auf gültige Daten in einem Cache abgebildet ist, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, als Reaktion auf das Empfangen des Segmentierungsfehlers durchgeführt wird.
  22. Verfahren nach Anspruch 21, wobei der angegebene Typ von Befehl einen Systemaufruf aufweist, wobei der Systemaufruf nach dem Ausführen des Abfangcodes ausgeführt wird.
  23. Verfahren nach Anspruch 19, wobei der Abfangadressbereich eine Abbildung auf ungültige physische Adressen in einer Adresstabelle vornimmt, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, ein Erkennen eines Fehlers aufweist, der erzeugt wird, wenn die zugreifende Anwendung auf den Abfangadressbereich zugreift, der eine Abbildung auf ungültige Positionen vornimmt.
  24. Verfahren nach Anspruch 19, wobei das Ausführen des Abfangcodes den Abfangadressbereich in einer Adresstabelle abbildet, wobei das Feststellen, ob die zugreifende Anwendung auf den Abfangadressbereich zugegriffen hat, das Erkennen aufweist, dass die zugreifende Anwendung versucht, Abfangdaten aus dem Abfangadressbereich zu verwenden, um auf Rechenressourcen zuzugreifen.
  25. Verfahren nach Anspruch 19, wobei der den Anwendungscode ausführende Prozessor beide Verzweigungen von bedingten Verzweigungen des Anwendungscodes spekulativ ausführt, wobei ein Ergebnis von nur einer der bedingten Verzweigungen in Abhängigkeit von einer Bedingung beibehalten wird, die zur Feststellung verwendet wird, welche der bedingten Verzweigungen durchlaufen werden soll.
  26. Verfahren nach Anspruch 25, wobei der Abfangcode in einer bedingten Verzweigung der bedingten Verzweigungen durch einen Prozessor bei der Verarbeitung der bedingten Verzweigungen spekulativ ausgeführt wird.
DE112019000594.4T 2018-04-16 2019-03-06 Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen Pending DE112019000594T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/954,334 2018-04-16
US15/954,334 US10810304B2 (en) 2018-04-16 2018-04-16 Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
PCT/IB2019/051786 WO2019202417A1 (en) 2018-04-16 2019-03-06 Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code

Publications (1)

Publication Number Publication Date
DE112019000594T5 true DE112019000594T5 (de) 2020-11-19

Family

ID=68161907

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019000594.4T Pending DE112019000594T5 (de) 2018-04-16 2019-03-06 Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen

Country Status (6)

Country Link
US (1) US10810304B2 (de)
JP (1) JP7175549B2 (de)
CN (1) CN111989679A (de)
DE (1) DE112019000594T5 (de)
GB (1) GB2586409B (de)
WO (1) WO2019202417A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
AU2020315905A1 (en) * 2019-07-23 2022-03-03 Cyber Crucible Inc. Systems and methods for ransomware detection and mitigation
US11520866B2 (en) * 2019-09-10 2022-12-06 International Business Machines Corporation Controlling processor instruction execution
US11429716B2 (en) * 2019-11-26 2022-08-30 Sap Se Collaborative application security
CN111143851B (zh) * 2019-12-11 2023-08-08 上海交通大学 适用于操作系统内核对象地址泄露的检测方法及系统
US11403392B2 (en) * 2020-01-06 2022-08-02 International Business Machines Corporation Security handling during application code branching
CN113934561A (zh) * 2020-06-29 2022-01-14 龙芯中科技术股份有限公司 故障定位方法、装置、系统、硬件平台及存储介质

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2757777B2 (ja) * 1994-05-26 1998-05-25 住友金属工業株式会社 メモリの不正アクセス検出方法及びシステム
US5956751A (en) 1995-06-28 1999-09-21 Industrial Technology Research Institute Computer memory management system using physical segmentation space allocation
US7380276B2 (en) * 2004-05-20 2008-05-27 Intel Corporation Processor extensions and software verification to support type-safe language environments running with untrusted code
US7302619B1 (en) 2004-07-06 2007-11-27 Mindspeed Technologies, Inc. Error correction in a cache memory
US7971255B1 (en) 2004-07-15 2011-06-28 The Trustees Of Columbia University In The City Of New York Detecting and preventing malcode execution
US8621607B2 (en) * 2006-05-18 2013-12-31 Vmware, Inc. Computational system including mechanisms for tracking taint
US8701189B2 (en) 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
TW201137660A (en) 2009-12-23 2011-11-01 Ibm Method and system for protecting an operating system against unauthorized modification
US8495435B2 (en) 2010-09-22 2013-07-23 Intel Corporation Dynamic physical memory replacement through address swapping
CN101944041B (zh) 2010-09-26 2012-10-10 中国科学院计算技术研究所 一种使用陷阱指令优化条件转移代码性能的方法及其系统
US20120159193A1 (en) * 2010-12-18 2012-06-21 Microsoft Corporation Security through opcode randomization
US8813227B2 (en) * 2011-03-29 2014-08-19 Mcafee, Inc. System and method for below-operating system regulation and control of self-modifying code
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US9038176B2 (en) * 2011-03-31 2015-05-19 Mcafee, Inc. System and method for below-operating system trapping and securing loading of code into memory
WO2012154664A2 (en) 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for detecting injected machine code
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
JP2013149137A (ja) 2012-01-20 2013-08-01 Renesas Electronics Corp マイクロコンピュータ、メモリ装置、不正メモリアクセス検出方法
US8959577B2 (en) * 2012-04-13 2015-02-17 Cisco Technology, Inc. Automatic curation and modification of virtualized computer programs
US9471514B1 (en) 2012-08-23 2016-10-18 Palo Alto Networks, Inc. Mitigation of cyber attacks by pointer obfuscation
WO2015016880A1 (en) 2013-07-31 2015-02-05 Hewlett-Packard Development Company, L.P. Global error correction
US9235692B2 (en) * 2013-12-13 2016-01-12 International Business Machines Corporation Secure application debugging
US9400885B2 (en) * 2014-01-10 2016-07-26 Bitdefender IPR Management Ltd. Computer security systems and methods using virtualization exceptions
US9305167B2 (en) * 2014-05-21 2016-04-05 Bitdefender IPR Management Ltd. Hardware-enabled prevention of code reuse attacks
US9823864B2 (en) 2014-06-02 2017-11-21 Micron Technology, Inc. Systems and methods for throttling packet transmission in a scalable memory system protocol
US9672354B2 (en) * 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US9734334B2 (en) * 2014-09-10 2017-08-15 International Business Machines Corporation Data tracking in user space
US9858411B2 (en) * 2014-12-19 2018-01-02 Intel Corporation Execution profiling mechanism
US9594629B2 (en) 2015-06-03 2017-03-14 King Abdulaziz City For Science And Technology Data error correction from cached error correction information
RU2589862C1 (ru) * 2015-06-30 2016-07-10 Закрытое акционерное общество "Лаборатория Касперского" Способ обнаружения вредоносного кода в оперативной памяти
WO2017023773A1 (en) 2015-07-31 2017-02-09 Digital Guardian, Inc. Systems and methods of protecting data from injected malware
US11227056B2 (en) * 2015-08-18 2022-01-18 The Trustees Of Columbia University In The City Of New York Inhibiting memory disclosure attacks using destructive code reads
US9904782B2 (en) * 2015-10-27 2018-02-27 Mcafee, Llc Synchronous execution of designated computing events using hardware-assisted virtualization
US20180004946A1 (en) * 2016-07-01 2018-01-04 Intel Corporation Regulating control transfers for execute-only code execution
KR102573921B1 (ko) * 2016-09-13 2023-09-04 삼성전자주식회사 바이러스/멀웨어로부터 안전한 저장 장치, 그것을 포함한 컴퓨팅 시스템 및 그것의 방법
US10157277B2 (en) * 2016-10-01 2018-12-18 Intel Corporation Technologies for object-oriented memory management with extended segmentation
US10467407B2 (en) * 2017-03-30 2019-11-05 Check Point Advanced Threat Prevention Ltd. Method and system for detecting kernel corruption exploits
US10607003B2 (en) * 2017-06-29 2020-03-31 International Business Machines Corporation Mitigation of code reuse attacks by restricted indirect branch instruction
US10860718B2 (en) * 2017-07-28 2020-12-08 Mcafee, Llc Protecting computer systems used in virtualization environments against fileless malware
US10824367B2 (en) 2017-10-19 2020-11-03 Seagate Technology Llc Adaptive intrusion detection based on monitored data transfer commands
EP3738058B1 (de) 2018-01-12 2022-11-23 Virsec Systems, Inc. Abwehr von spekulativen ausführungsversuchen
US10599835B2 (en) * 2018-02-06 2020-03-24 Vmware, Inc. 32-bit address space containment to secure processes from speculative rogue cache loads

Also Published As

Publication number Publication date
JP7175549B2 (ja) 2022-11-21
GB2586409A (en) 2021-02-17
GB2586409B (en) 2021-07-14
JP2021521513A (ja) 2021-08-26
GB202016053D0 (en) 2020-11-25
US20190318081A1 (en) 2019-10-17
US10810304B2 (en) 2020-10-20
WO2019202417A1 (en) 2019-10-24
CN111989679A (zh) 2020-11-24

Similar Documents

Publication Publication Date Title
DE112019000594T5 (de) Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen
DE112005001739B4 (de) Nachverfolgung geschützter Speicherbereiche zur Beschleunigung von Antivirusprogrammen
DE10195999B3 (de) Computersystem mit einer in einem Chipsatz enthaltenen Speichersteuereinrichtung zum Kontrollieren von Zugriffen auf einen isolierten Speicher für eine isolierte Ausführung
DE102011082184A1 (de) Sicherheitsschutz für Speicherinhalt von Prozessorhauptspeicher
DE102019110327A1 (de) Technologien zum verifizieren von speicherintegrität über mehrere speicherbereiche hinweg
DE112012003988T5 (de) Schützen des Arbeitsspeichers eines virtuellen Gasts
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE112016004330T5 (de) Prozessoren, Verfahren, Systeme und Befehle zum Zulassen sicherer Kommunikationen zwischen einem geschützten Containerspeicher und Eingabe-/Ausgabegeräten
CN107851155A (zh) 用于跨越多个软件实体跟踪恶意行为的系统及方法
DE102019110309A1 (de) Integritätsschutz mit geringem overhead und hoher verfügbarkeit für vertrauensdomänen
US11755735B2 (en) Speculatively executing conditional branches of code when detecting potentially malicious activity
DE102008063335A1 (de) Datenverarbeitungssystem, Verfahren zum Ausführen eines Verschlüsselungsalgorithmus und Verfahren zum Vorbereiten der Ausführung eines Verschlüsselungsalgorithmus
DE112018004465T5 (de) Systeme und Verfahren zum Überwachen eines Köders für den Schutz von Benutzern vor Sicherheitsbedrohungen
CN101667232A (zh) 基于可信计算的终端可信保障系统与方法
DE102015107823A1 (de) Randomisierter Speicherzugriff
DE102020112592A1 (de) Anwendungsverhaltensbezogene Fingerabdrücke
DE102015205827A1 (de) Verfahren zum Schutz sicherheitsrelevanter Daten in einem Cachespeicher
DE112022003368T5 (de) Verschlüsselungsüberwachungsregister und -system
CN106778257A (zh) 一种虚拟机防逃逸装置
CN109376530B (zh) 基于标记的进程强制行为控制方法和系统
Alam et al. Study of the dirty copy on write, a linux kernel memory allocation vulnerability
US20200082076A1 (en) Using trap cache segments to detect malicious processes
RU2467389C1 (ru) Способ защиты программно-информационного обеспечения от несанкционированного использования
US11947666B2 (en) Systems and methods for exploit prevention and malicious code neutralization using non-predictable results for JavaScript-enabled applications
DE112020004607T5 (de) Sicherheitsüberprüfung eines universal serial bus gerätes

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R084 Declaration of willingness to licence