[go: up one dir, main page]

DE102005021064B4 - Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken - Google Patents

Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken Download PDF

Info

Publication number
DE102005021064B4
DE102005021064B4 DE102005021064A DE102005021064A DE102005021064B4 DE 102005021064 B4 DE102005021064 B4 DE 102005021064B4 DE 102005021064 A DE102005021064 A DE 102005021064A DE 102005021064 A DE102005021064 A DE 102005021064A DE 102005021064 B4 DE102005021064 B4 DE 102005021064B4
Authority
DE
Germany
Prior art keywords
program
write
rights
execute
memory segment
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.)
Expired - Fee Related
Application number
DE102005021064A
Other languages
English (en)
Other versions
DE102005021064A1 (de
Inventor
Klaus Dr. Moritzen
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.)
Siemens Healthcare GmbH
Original Assignee
Siemens 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 Siemens Corp filed Critical Siemens Corp
Priority to DE102005021064A priority Critical patent/DE102005021064B4/de
Priority to US11/418,182 priority patent/US8024798B2/en
Publication of DE102005021064A1 publication Critical patent/DE102005021064A1/de
Application granted granted Critical
Publication of DE102005021064B4 publication Critical patent/DE102005021064B4/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

Verfahren zur Überwachung und zum Schutz eines Programm-Systems gegen Attacken, die darauf basieren, Daten in ein Speichersegment eines Programms zu schreiben und diese als Code ausführen zu wollen, mit folgenden Verfahrensschritten:
A – Identifizieren, ob für ein Speichersegment eine unsichere Rechtekombination besteht, insbesondere, ob gleichzeitig ein Schreibrecht und ein Ausführrecht bestehen,
B – falls eine unsichere Rechtekombination erfasst worden ist: Löschen des Schreibrechtes oder des Ausführrechtes und mit folgenden Verfahrensschritten, die zur Laufzeit durchgeführt werden, falls das Programm unterbrochen worden ist:
C – Untersuchen, aus welchem Grund das Programm unterbrochen worden ist
D – gegebenenfalls:
– Einleiten von Recovery Maßnahmen, falls eine Attacke identifiziert worden ist,
– Rechtetausch, falls die Unterbrechung durch das Löschen eines Rechtes entstanden ist oder
– Weiterleiten der Überwachung und/oder Steuerung an eine Betriebssystemkomponente, falls ein anderer Unterbrechungsgrund identifiziert worden ist.

Description

  • Die Erfindung liegt auf dem Gebiet der programmbasierten Erfindungen und betrifft insbesondere ein Verfahren und eine Vorrichtung zum Schutz des softwarebasierten Systems gegen Attacken, die Sicherheitslücken im System ausnützen, wie z. B. Viren, Würmer oder dergleichen.
  • Einer der häufigsten Sicherheitslücken ist der so genannte Buffer-Overrun bzw. Buffer-Overflow. Dabei handelt es sich grundsätzlich um Schäden, die dadurch entstehen, dass ein Puffer bzw. ein Speicherbereich eines Programmes über seine Grenzen hinaus gefüllt wird. Daten werden über das Pufferende hinaus geschrieben, so dass die für die Programmausführung relevanten Daten überschrieben werden. Einige der vorstehend genannten Attacken basieren auf dem Prinzip, einen ausführbaren Code auf den Stack zu schreiben, der dann ausgeführt wird und teilweise schwerwiegende Fehler verursachen kann.
  • Fehler dieser Art kommen überwiegend in traditionell kompilierten Programmiersprachen, wie z. B. C+ und C++ vor, da diese Sprachen aus Performance-Gründen keine automatische Prüfung von Zugriffen auf Felder und Speichersegmente bieten. Auch Programmierfehler können vorstehend genannte Sicherheitsprobleme hervorrufen, indem die Grenzen der Felder, die dynamisch auf den Stack geschrieben werden, unzureichend abgefragt werden. Ein Angreifer kann dies ausnützen, indem ein Angriffs-Code in den lokalen Puffer eingeschleust wird, der zu einem späteren Zeitpunkt ausgeführt werden soll.
  • Bei den heute gängigen Betriebssystemen (Windows ab Version 95) besitzt jeder Prozessor seinen eigenen logischen Adressraum. Ein Bereich in diesem Adressraum wird von dem Stack eingenommen. Beim Start eines Programms legt das Betriebssystem im virtuellen Speicher in der Regel drei Segmente an: Das Co de-Segment, das Daten-Segment (Heap-Segment) und das Stack-Segment. Der Stack ist ein Zwischenspeicher für lokale Variablen, Übergabeparameter für Funktionen sowie für Rücksprungadressen für Unterprogramme. Der Stack beginnt an einer festgesetzten Adresse, vornehmlich am Ende des Adressraums, und wächst nach unten und basiert auf dem Last-In-First-Out-Prinzip (LIFO-Puffer). Seine Größe ist hauptsächlich abhängig von der Rekursionstiefe des jeweiligen Programms. Mögliche Befehle zur Bearbeitung des Stacks sind die Push- und Pop-Instruktionen, um Daten in den Stack zu schreiben bzw. die Daten aus dem Stack auszulesen. Darüber hinaus ist es möglich, einzelne Stack-Elemente direkt zu adressieren.
  • Bei einem Angriff wird der Stack gezielt über sein Ende hinaus beschrieben, sodass die Rücksprungadresse einer Funktion mit einer eingeschleusten Adresse überschrieben wird. Nach Ausführung der Funktion kann deshalb das Programm nicht mehr zur aufrufenden Funktion zurückkehren, sondern springt an die eingeschleuste Adresse. Handelt es sich bei der eingeschleusten Adresse um eine zufällig ausgewählte Adresse, wird üblicherweise lediglich das betreffende Programm terminiert ohne weiteren Schaden anzurichten. Handelt es sich bei der eingeschleusten Adresse um eine gültige Adresse des Programms, so wird das Programm auf manipulierte Weise und damit falsch ausgeführt. Bei den meisten Attacken wird eine solche Adresse eingeschleust, die auf Stackadressen verweist, auf die vorher der Angriffs-Code geladen worden ist und somit zu massiven und weitreichenden Schäden führen kann.
  • Um einen Schutz gegen solche Attacken gewährleisten zu können, ist es bei Systemen aus dem Stand der Technik bekannt, sogenannte Virenscanner, Security-Updates und Firewalls einzusetzen. Ein Virenscanner nutzt die ihm bekannten Patterns (Code-Muster bekannter Viren), um einen Angriff zu erkennen.
  • Nachteil bei dieser bekannten Lösung ist es, dass der Virenscanner nur dann funktioniert, wenn er ein Muster für den jeweiligen Wurm oder Virus hat, um einen Alarm auslösen zu kön nen. Das heißt, dass die Patterns ständig aktualisiert werden müssen und deren Güte vom Aktualisierungsgrad abhängt.
  • Bei den Security-Updates handelt es sich in der Regel um geänderte Betriebssystem-Komponenten, die vom Hersteller bereitgestellt werden und bereits erkannte Sicherheitslücken beheben. Ein wesentliches Problem bei den Security-Updates ist darin zu sehen, dass das System grundsätzlich keinen Schutz hat in der Zeit zwischen der Release des Herstellers und der Identifikation der Sicherheitslücken. Ein weiteres Problem liegt darüber hinaus darin, dass kein Schutz erreicht werden kann für noch nicht allgemein bekannte Sicherheitslücken, also solche, die zwar einen beschränkten Nutzerkreis schon bekannt sind, die aber noch nicht gelistet sind.
  • Bei den Firewalls handelt es sich um aktive Netzwerk-Kommunikations-Komponenten. Sie fungieren nach Art einer Schranke, die nur einen bestimmten Netzwerksverkehr weiterleiten. Eine Schwierigkeit bei der Programmierung von Firewalls liegt darin, die Schranke der Firewall nicht zu hoch zu setzen, so dass die Rechner-Kommunikation zu weitreichend eingeschränkt wird und die Schranke jedoch ebenfalls nicht zu niedrig zu setzen, was zu einer erhöhten Sicherheitslücke führen würde.
  • Darüber hinaus ist es bei windows-basierten Betriebssystemen bekannt, auf die Prozessortechnologie zurückzugreifen. Die Prozessortechnologie der Firma AMD sieht hier das sogenannte No-execute-Page-Protection-Prozessormerkmal vor (NX). Die Prozessortechnologie der Firma Intel weist ein analoges Merkmal auf, das sogenannte Execute-Disable-Bit-Feature. Die 64-Bit-Architekturen von Windows unterstützen die vorstehend erwähnte Hardware, die eine Befehlsverweigerungs-Funktion vorsieht (Data-Execution-Preventions, DEP). Stack und Heap werden vom Betriebssystem Windows als Daten markiert. Versucht nun eine Applikation eine als NX markierte Speicherseite aufzurufen, so löst der Prozessor eine sogenannte Exception aus, die zur Terminierung bzw. Unterbrechung des auslösenden Prozesses führt.
  • Ein wesentlicher Nachteil dieser Lösung ist darin zu sehen, dass ältere Applikationen nach der Installation des Service-Packs von Microsoft nicht mehr funktionieren können. Ältere Programme müssen also gegebenenfalls vollständig überarbeitet werden, was ein hohes Kostenrisiko birgt. Darüber hinaus ist es nachteiliger Weise erforderlich, dass eine bestimmte Prozessortechnologie eingesetzt wird. Andere Rechner-Architekturen, insbesondere die 32-Bit-Architektur, sind damit vom Schutz ausgeschlossen. Ein weiterer Nachteil dieses Ansatzes ist darin zu sehen, dass kein Schutz für Attacken besteht, die sich auf andere Speichersegmente als den Stack bzw. den Heap beziehen.
  • Aus der US 2004/0034794 A1 ist Sicherheitsverfahren für Computer bekannt, bei dem Elemente des Computers überwacht werden, um basierend auf Sicherheitsregeln sicherheitsrelevantes, verdächtiges and gefährliches Verhalten zu erkennen und abzufangen.
  • Die Erfindung hat sich deshalb zur Aufgabe gesetzt, einen Weg aufzuzeigen, mit dem es möglich ist, sowohl bestehende als auch zukünftige Systeme auf generische Weise gegen Angriffe zu schützen, die auf einem Buffer-Overrun basieren, ohne dass eine Änderung bestehender Betriebssystem-Komponenten notwendig ist und ohne dass die Schutz-Mechanismen ständig und laufend aktualisiert werden müssen.
  • Diese Aufgabe wird erfindungsgemäß gelöst durch ein Verfahren zur Überwachung und zum Schutz eines Programm-Systems gegen Attacken, die darauf basieren, Daten in ein Speichersegment des Programms zu schreiben und diese als Code ausführen zu wollen, die also insbesondere auf einem Buffer-Overrun basieren, mit folgenden Verfahrensschritten.
  • Dabei kann eine Speicher-Analyse-Komponente zur Ausführung zumindest folgender Schritte A und B bestimmt sein:
    • A – Identifizieren, ob für ein Speichersegment eine unsichere Rechtekombination besteht, insbesondere, ob gleichzeitig ein Schreibrecht und ein Ausführrecht bestehen,
    • B – falls eine unsichere Rechtekombination erfasst worden ist: Löschen des Schreibrechtes oder des Ausführrechtes und mit folgenden Verfahrensschritten, die zur Laufzeit, insbesondere durch eine Laufzeit-Komponente, durchgeführt werden, falls das Programm unterbrochen worden ist:
    • C – Untersuchen, aus welchem Grund das Programm unterbrochen worden ist
    • D – gegebenenfalls:
    • – Einleiten von Recovery Maßnahmen, falls eine Attacke identifiziert worden ist,
    • – Rechtetausch, falls die Unterbrechung durch das Löschen eines Rechtes entstanden ist oder
    • – Weiterleiten der Überwachung und/oder Steuerung an eine Betriebssystemkomponente, falls ein anderer Unterbrechungsgrund identifiziert worden ist oder wenn der Rechtetausch keine Aufhebung der Unterbrechung bewirken kann.
  • Ein wesentlicher Gesichtspunkt bei der hier vorgestellten Lösung ist darin zu sehen, dass sie aus zwei grundlegenden Komponenten besteht: Eine, die die Speichersegmente zyklisch überprüft und unabhängig von der Ausführung des zu überwachenden Programms ist (die Speicher-Analyse-Komponente) und eine zweite Komponente, die zur Laufzeit des Programms aktiv ist und eine weitere Analyse für die Ursache der Unterbrechung des Programms durch eine so genannte Memory-Management-Unit (kurz: MMU) ausführt und gegebenenfalls weitere Maßnahmen einleitet (die Laufzeit-Komponente). Beide Komponenten sind unabhängig voneinander.
  • In einer vorteilhaften Ausführungsform der Erfindung werden während des Überwachungsvorganges alle relevanten Überwachungsparameter, insbesondere die technischen Parameter, die für das Treffen der Fallunterscheidungen notwendig sind, erfasst, gespeichert und/oder gegebenenfalls an weitere Einheiten weitergeleitet. Dies sind unter anderem die Parameter: Attribute des untersuchten Speichersegmentes, Quelle des auf das Speichersegment zugreifenden Programmkomponente und die Information, ob es sich um eine vertrauenswürdige Quelle handelt oder nicht.
  • Diese Aufgabe wird weiterhin durch eine Vorrichtung und ein Programm mit den Merkmalen gemäß den beiliegenden unabhängigen Ansprüchen gelöst. Vorteilhafte Ausführungsformen ergeben sich aus den abhängigen Patentansprüchen.
  • In diesem Zusammenhang sei darauf hingewiesen, dass einzelne Komponenten des Verfahrens in einer verkaufsfähigen Einheit und die restlichen Komponenten in einer anderen verkaufsfähigen Einheit ausgeführt sein können.
  • Die Erfindung hebt grundsätzlich darauf ab, ständig neu entstehende Sicherheitslücken in softwarebasierten Systemen zu schließen und diese vor Angriffen bzw. Attacken zu schützen, die darauf basieren, bewusst einen Puffer-Überlauf bzw. einen Buffer-Overflow zu erzeugen.
  • Bei modernen Betriebssystemen arbeitet jedes Programm in einem eigenen, virtuellen Adressraum. Dieser virtuelle Adressraum wird von der Memory-Management-Unit (MMU) verwaltet und organisiert und erst bei Bedarf physikalischen Speicheradressen zugeordnet. Die MMU verwaltet auch die Zugriffsrechte für Speichersegmente, also z. B. ein Schreibrecht, ein Leserecht und/oder ein Ausführrecht.
  • Die grundlegende Idee der Erfindung basiert auf dem Sachverhalt, dass sowohl von der Seite des Systembetreibers (also von der Seite der Betriebssystem-Komponenten) als auch von der Seite des Anwendungsentwicklers die Zugriffsrechte in der Regel zu wenig restriktiv vergeben werden. Das heißt, in der Regel bestehen für einen Abschnitt im Speicher, insbesondere im Stack sowohl ein Ausführrecht, als auch ein Schreibrecht. Genau diese Rechtekombination macht es Angreifern sehr leicht, Angriffs- bzw. Schaden-Codes durch einen gezielten Buffer-Overflow einzuschleusen (unter Verwendung des Schreibrechtes: in das Puffersegment zu schreiben) und den Schadens-Code dann auszuführen (unter Verwendung des Ausführungsrechtes).
  • Diese Idee setzt die Erfindung um, indem zyklisch alle Speichersegmente automatisch geprüft werden, ob für das zu überwa chende Speichersegment jeweils eine unsichere Rechtkombination besteht und falls ja: wird eines der beiden Rechte gelöscht.
  • Es gibt jedoch auch Ausnahmebedingungen, unter denen eine unsichere Rechtekombination ausnahmsweise zulässig ist, so dass also ausnahmsweise sowohl ein Schreib- als auch eine Ausführrecht bestehen dürfen.
  • Da es festgelegte Ausnahmebedingungen gibt, die es erfordern, dass gleichzeitig ein Ausführ- und ein Schreibrecht bestehen, dass also die oben erwähnte unsichere Rechtekombination besteht, kann davon ausgegangen werden, dass in den meisten Fällen diese unsichere Rechtekombination nicht notwendig ist.
  • Diese Idee macht sich die Erfindung zunutze und prüft automatisch, ob eine solche Ausnahmebedingung vorliegt, ob also ausnahmsweise gleichzeitig zum Schreibrecht auch das Ausführrecht bestehen muss. Falls dies nicht der Fall ist, wird eines der Rechte gelöscht. Damit kann auf generische Weise jegliche unsichere Rechtekombination vermieden werden. Dies hat den überaus weitreichenden Effekt, dass alle Attacken abgewehrt werden können, die darauf basieren, Daten als Code einzuschleusen und diesen ausführen zu lassen.
  • Ein wichtiger Vorteil der erfindungsgemäßen Lösung ist darin zu sehen, dass es hier nicht notwendig ist, ständig neue Aktualisierungen bzw. Updates des Schutzmechanismus aufspielen zu müssen, wie es beispielsweise bei den bisher bekannten Virenscannern aus dem Stand der Technik notwendig ist.
  • Des weiteren ist es vorteilhafterweise möglich, alle Rechner-Architekturen zu unterstützen, deren MMU ein eigenes Execute-Bit aufweisen, also auch die bisher bestehende Hardware, insbesondere die 32-Bit-Architektur.
  • Gemäß der bevorzugten Ausführungsform der Erfindung ist eine separate zusätzliche Komponente zu den bisherigen Betriebssystem-Komponenten vorgesehen, die als separates Element ledig lich funktional in das System eingebunden wird. In einer alternativen Ausführungsform kann die Komponente auch in das Betriebssystem eingebettet werden.
  • In dieser Komponente ist das erfindungsgemäße Verfahren implementiert, das zyklisch alle geladenen Speicherbereiche bzw. Speichersegmente überwacht, ob sie hinreichend vor Attacken geschützt sind. Die Überwachung erfolgt, indem geprüft wird, ob für ein Segment eine unsichere Rechtekombination besteht, also ob gleichzeitig ein Schreibrecht (für das Einschleusen von Angriffs-Codes) und ein Ausführrecht (für die Übernahme der Kontrolle durch den Angriffs-Code und damit zur Ausführung des Schaden-Codes) beinhalten. Falls nun festgestellt wird, dass kein ausreichender Schutz besteht, wird weiterhin nachgeprüft, ob diese unsichere Rechtekombination ausnahmsweise zulässig bzw. notwendig ist. Dies ist z. B. dann der Fall, wenn eine bekannte Komponente diese Zugriffsrechte anfordert und die unsichere Rechtekombination somit nicht vermieden werden kann.
  • Andernfalls wird eines der beiden Rechte gelöscht. Die Verfahrensschritte bis zu diesem Zeitpunkt können auch im Vorfeld und müssen nicht zur Laufzeit des Programms durchgeführt werden.
  • In der Regel ist es möglich, dass ein störungsfreier Betrieb garantiert werden kann, selbst wenn eines der beiden Rechte (Ausführrecht oder Schreibrecht) gelöscht wird. In diesen Fällen sind also keine weiteren Maßnahmen erforderlich.
  • Grundsätzlich ist es vorgesehen, dass eines der beiden Rechte dann gelöscht wird, sobald eine unsichere Rechtekombination festgestellt worden ist oder wenn zusätzlich festgestellt worden ist, dass diese auch nicht ausnahmsweise zulässig war. Erst zu einem späteren Zeitpunkt zur Laufzeit des Programms wird untersucht, weshalb das Programm unterbrochen worden ist, d. h. weshalb die MMU einen „interrupt" generiert hat.
  • Deshalb wird in einer speziellen Routine bzw. Komponente, nämlich in der Laufzeitkomponente, untersucht, ob die Schäden nur deshalb verursacht worden sind, weil eines der beiden Rechte gelöscht worden ist. In diesem Fall kann ein Rechtetausch erfolgen.
  • Gegebenenfalls werden weitere Maßnahmen eingeleitet. Die weiteren Maßnahmen können beispielsweise in einer Meldung an einen Systemadministrator und/oder an den Anwender oder in einer zentralen Netzwerküberwachung bestehen.
  • Liegt anderenfalls ein Ausnahmefall vor, sodass nämlich Schäden entstehen, wenn eines der beiden vorstehend genannten Rechte gelöscht wird, dann ist es vorteilhafterweise erfindungsgemäß vorgesehen, dass diese Schäden mit geeigneten Maßnahmen behandelt werden.
  • Im Rahmen der Erfindung soll der Begriff Schaden/Schäden sich auf die Schäden beziehen, die möglicherweise durch die Ausführung des erfindungsgemäßen Verfahrens entstanden sind, also durch das Löschen eines der beiden Rechte. Wenn nichts anderes genannt ist, geht es hier nicht um die Schäden, die durch die Attacke entstehen könnten. Diese können erfindungsgemäß mit den üblichen Mechanismen aus dem Stand der Technik weiterverfolgt werden. Der Begriff Schaden kann im Rahmen dieser Erfindung definiert werden als ein durch das Fehlen zumindest eines Rechtes (READ, WRITE, EXECUTE) gestörter Programmablauf.
  • Eine geeignete Maßnahme zur Behebung des möglicherweise entstandenen Schadens liegt in einem Rechtetausch. Bei einem Rechtetausch wird das durch das Verfahren gelöschte Recht (dem Speichersegment) wieder zugewiesen, aber das jeweils andere wird ihm entzogen. Wurde als bisher das Schreib/Write-Recht entzogen, so wird anstelle dieses Rechtes nun das Ausführ/Execute-Recht entzogen. Dann wird der Analyseprozess wiederholt durchlaufen.
  • In einer einfacheren Ausführungsform der Erfindung umfasst das erfindungsgemäße Verfahren keinen Rechtetausch und es werden nur die beiden Fallgruppen abgedeckt, dass Recovery Maßnahmen eingeleitet werden oder dass die Überwachung an eine andere Betriebssystemkomponente weitergeleitet wird.
  • Vorteilhafterweise ist es erfindungsgemäß vorgesehen, dass bestimmte Ausnahmebedingungen festgelegt werden können, die definieren, unter welchen Umständen eine unsichere Rechtekombination ausnahmsweise für den Betrieb erforderlich und damit zulässig ist. In der bevorzugte Ausführungsform der Erfindung sind hier solche Szenarien abgedeckt, in denen ein Loader eine Software aus vertrauenswürdiger Quelle lädt. In diesem Fall benötigt das jeweilige Speichersegment Schreibrechte. Damit nun die geladene Software auch gestartet werden kann, benötigt dieses Segment Ausführrechte. Für den Zeitpunkt der Ausführung sind jedoch die Schreibrechte in der Regel nicht mehr erforderlich. Ausnahmebedingungen bestehen insbesondere auch im Fall eines Loaders bei einem Just-in-Time-Comiler bei so genanntem managed Code. Darüber hinaus können spezifische Gerätetreiber angegeben werden, deren störungsfreier Ablauf das kumulative Bestehen der beiden Rechte erfordert. Je nach System können natürlich auch weitere Ausnahmebedingungen definiert werden, die die Zulässigkeit der unsicheren Rechtekombination als Ausnahmefall bejahen. Diese werden dann erfindungsgemäß spezifisch behandelt.
  • In allen übrigen Fällen kann eines der beiden Rechte ohne weitere Probleme gelöscht werden, was dazu führt, dass alle auf einem Buffer-Overflow basierenden Attacken abgewehrt werden können.
  • Falls festgestellt wird, dass eine unsichere Rechtekombination besteht, wird erfindungsgemäß eines der beiden Rechte gelöscht. Die Entscheidung, welches der beiden Rechte gelöscht wird, kann nach voreinstellbaren Kriterien, die vom Systemadministrator und/oder Anwender eingestellt werden können, ausgeführt werden. Die Löschbedingungen sind erfindungsgemäß a daptiv konfigurierbar, so dass ein Administrator auch zu einem späteren Zeitpunkt (also auch nach dem Starten der erfindungsgemäßen Lösung) weitere Kriterien aufnehmen und damit die bisherigen erweitern oder anderweitige Änderungen vornehmen kann.
  • In der bevorzugte Ausführungsform wird diese Fallunterscheidung unter anderem vom Typ des jeweiligen Speichersegmentes abhängig gemacht. So enthalten beispielsweise Speichersegment-Attribute Daten über die Art bzw. den Typ des jeweiligen Segmentes.
  • Die erfindungsgemäße Lösung trägt auch zur Transparenz des Überwachungsvorganges bei, indem wahlweise ein Tracing bzw. ein Mitführen von Überwachungsdurchläufen ausgeführt werden kann. Damit wird es für den Systemadministrator leichter, eine Analyse des Systems über die Zeit im Hinblick auf die Attacken zu erstellen.
  • Erfindungsgemäß ist es vorgesehen, dass alle für die Überwachung relevanten Parameter in einem sogenannten Überwachungskontext zusammengefasst werden. Insbesondere bestehen die Überwachungsparameter aus den Daten, die zur Beantwortung bzw. zum Treffen der jeweiligen Fallunterscheidungen notwendig sind. Also z. B. Informationen darüber, welches Programm auf das Speichersegment zugreift: Handelt es sich um ein bekanntes Programm, z. B. um einen Loader aus vertrauenswürdiger Quelle oder um eine nicht bekannte Einheit? Dies erfordert es, dass der erfindungsgemäßen Komponente alle Systemkomponenten bekannt gemacht werden.
  • In einer alternativen Ausführungsform der Erfindung ist es vorgesehen, dass der Überwachungskontext insofern erweitert wird, als er noch weitere Parameter erfasst, insbesondere z. B. den zeitlichen Verlauf des Überwachungsvorganges oder andere Parameter. Dies hat den Vorteil, dass die erfindungsgemäße Lösung ohne weiteren Aufwand dynamisch erweitert werden kann.
  • In der bevorzugten Ausführungsform der Erfindung ist es vorgesehen, dass alle geladenen Speichersegmente oder eine vorbestimmbare Auswahl von Speichersegmenten zyklisch nach voreinstellbaren Zeitintervallen nach dem erfindungsgemäßen Verfahren mit zumindest einem der vorstehend beschriebenen Merkmale überprüft werden. Der Vorteil dieser Ausführungsform ist darin zu sehen, dass der Anwender lediglich ein übliches Zeitintervall einstellen und keine weiteren Überwachungsbedingungen festlegen muss.
  • Alternativ zu der vorstehend erwähnten Ausführungsform kann die Überwachung auch durch andere Ereignisse getriggert werden. Die Auswahl der Ereignisse, die den Überwachungsvorgang auslösen sollen, ist ebenfalls einstellbar. Damit kann die erfindungsgemäße Lösung flexibel auf andere Anwendungssituationen eingestellt werden.
  • Ein weiterer wesentlicher Vorteil der erfindungsgemäßen Lösung ist darin zu sehen, dass sie unabhängig vom verwendeten Compiler und/oder unabhängig von der Prozessortechnologie bzw. der jeweiligen Rechner-Architektur ist. Es ist lediglich erforderlich, dass die Fallunterscheidung getroffen werden kann, ob eine unsichere Rechtekombination vorliegt. Dies erfolgt erfindungsgemäß über das Abrufen des jeweiligen Execute-Bits der MMU.
  • Ein wichtiger Vorteil der erfindungsgemäßen Lösung ist in der automatischen Ausführung des Verfahrens zu sehen. In der bevorzugten Ausführungsform der Erfindung werden somit alle Verfahrensschritte (A bis D) automatisch ausgeführt. In alternativen Ausführungsformen ist es jedoch auch denkbar, dass der Anwender durch entsprechende Benutzereingaben die Ausführung des Verfahren lenkt, so dass das Verfahren lediglich halbautomatisch erfolgt.
  • In der Regel ist das Verfahren so ausgelegt, dass das Ergebnis und/oder Teilergebnisse des Überwachungsverfahrens und insbe sondere die Überwachungsparameter gespeichert und/oder angezeigt werden.
  • Die Schritte C und D werden zur Laufzeit durch die Laufzeitkomponente ausgeführt. Dabei erfolgt die Untersuchung in Schritt C zumindest nach folgenden Kriterien:
    • – untersuchen, ob weder ein Schreibbefehl ohne Schreibrecht noch ein Ausführbefehl ohne Ausführrecht vorliegen und bejahendenfalls:
    • – Weitergabe der Überwachung bzw. Unterbrechung an eine andere Einheit,
    • – untersuchen des jeweiligen Speichersegmentes, insbesondere Auswerten von Speichersegment-Attributen, ob das Speichersegment Schreibrechte hat, aber als Codesegment identifiziert werden kann oder ob es Ausführrechte hat, aber nicht als Codesegment identifiziert werden kann: Identifizieren eines Schadens, der durch das Löschen eines Rechtes in Schritt B dieses Verfahrens verursacht worden ist; als weitere Maßnahmen können ein Rechtetausch und/oder ein Weiterführen des unterbrochenen Programms eingeleitet werden
    • – in anderen Fällen: Identifizieren einer Attacke.
  • Es ist auch möglich, die Ausführung der Beschränkungsoperation bzw. des Rechte-Löschvorganges davon abhängig zu machen, welche Schäden durch das Löschen des Rechtes entstehen. So kann beispielsweise eingestellt werden, dass das Recht auf jeden Fall dann gelöscht wird, wenn die durch das Löschen hervorgerufenen Schäden behebbar sind. In anderen Fällen kann voreingestellt sein, dass ein entsprechender Hinweis gemeldet wird und das Programm unterbrochen bleibt.
  • Das vorstehend Gesagte, Vorteile und vorteilhafte, alternative Ausführungsform gelten entsprechend auch für die erfindungsgemäße Vorrichtung.
  • Die vorstehend beschriebenen, erfindungsgemäßen Ausführungsformen des Verfahren können auch als Computerprogrammprodukt ausgebildet sein, mit einem von einem Computer lesbaren Medium und mit einem Computerprogramm und zugehörigen Programmcode-Mitteln, wobei der Computer nach Laden des Computerprogramms zur Durchführung des oben beschriebenen, erfindungsgemäßen Verfahrens veranlasst wird.
  • Eine alternative Aufgabenlösung sieht ein Speichermedium vor, das zur Speicherung des vorstehend beschriebenen, computerimplementierten Verfahrens bestimmt ist und von einem Computer lesbar ist.
  • Zusätzliche, vorteilhafte Ausführungsformen ergeben sich aus den Unteransprüchen.
  • In der folgenden detaillierten Figurenbeschreibung werden nicht einschränkend zu verstehende Ausführungsbeispiele mit deren Merkmalen und weiteren Vorteilen anhand der Zeichnung besprochen. In dieser zeigen:
  • 1 eine übersichtsartige Darstellung eines erfindungsgemäßen Ablaufes gemäß einer bevorzugten Ausführungsform der Erfindung,
  • 2 eine übersichtsartige Darstellung von Komponenten und Einheiten der erfindungsgemäßen Vorrichtung gemäß einer vorteilhaften Ausführungsform.
  • Die nachstehende detaillierte Figurenbeschreibung beschreibt beispielhaft die Anwendung der erfindungsgemäßen Lösung auf Attacken, die durch ein Buffer-Overrun verursacht werden. Es ist jedoch ebenso möglich, die Erfindung auf andere Attacken anzuwenden, die darauf beruhen, Schadens-Code in Speichersegmente einzuschleusen und anschließend auszuführen.
  • Des weiteren basiert die nachstehende Beschreibung auf dem Betriebssystem Windows. Das Prinzip der Erfindung kann jedoch ebenso auf andere Betriebssysteme übertragen werden. Hier ist insbesondere Linux zu nennen, da auch bei diesem Betriebssystem eine Vielzahl von auf einem Buffer-Overrun basierenden Sicherheitslücken (so genannten „vulnerabilities") bekannt sind.
  • Die Erfindung betrifft ein Überwachungsverfahren zum Schutz eines softwarebasierten Systems, das aus zumindest einem Programm besteht und zur Abwehr gegen Attacken gerichtet ist, die auf einem Buffer-Overrun eines Speichersegmentes basieren.
  • Das Verfahren umfasst eine Identifikation, ob für ein Speichersegment eine unsichere Rechtekombination vorliegt, also insbesondere, ob gleichzeitig sowohl ein Schreibrecht als auch ein Ausführrecht bestehen.
  • Darüber hinaus wird erfindungsgemäß überprüft, ob eine unsichere Rechtekombination ausnahmsweise zulässig ist. In der Regel wird diese Überprüfung nur dann ausgeführt, wenn die vorher ausgeführte Identifikation ergeben hat, dass eine solche unsichere Rechtekombination vorliegt.
  • Im Schritt B werden die Zugriffsrechte für das jeweils geprüfte Speichersegment beschränkt, indem eines der beiden Rechte (entweder Schreibrecht oder Ausführrecht) gelöscht wird, falls festgestellt worden ist, dass kein hinreichender Schutz vor einem Buffer-Overrun vorliegt und falls festgestellt worden ist, dass die unsichere Rechtekombination nicht ausnahmsweise zulässig ist. Sie wäre insbesondere dann ausnahmsweise zulässig, wenn eine bekannte Komponente diese Rechtekombination erfordert.
  • In einem zeitlich nach geordneten Verfahrensschritt kann insbesondere zur Laufzeit untersucht werden, ob etwaige Schäden, die durch das Löschen eines Rechtes (Schreibrecht oder Ausführrecht) ausgelöst worden sind, bestehen und ob diese behoben werden können. Dies ist z. B. durch einen Rechtetausch möglich. Damit ist der Tausch des zu löschenden Rechtes gemeint. Hat also die erste Komponente das Schreibrecht gelöscht, so kann an dieser Stelle das Schreibrecht wieder zugewiesen wer den, während das jeweils andere Recht – in diesem Fall das Ausführrecht – gelöscht wird oder vice versa.
  • In der bevorzugten Ausführungsform umfasst der Verfahrensschritt D diesen Rechtetausch.
  • In 1 ist übersichtsartig ein Ablauf der erfindungsgemäßen Lösung dargestellt.
  • In einer Speichersegment-Analyse Komponente S wird untersucht, ob eine unsichere Rechtekombination besteht, nämlich, ob für ein zu prüfendes Speichersegment gleichzeitig WRITE und EXECUTE (bzw. Schreib und Ausführrecht) gesetzt sind. Bejahendenfalls wird eines der beiden Rechte gelöscht. Diese Überprüfung der Speichersegmente erfolgt zyklisch oder wird durch das Auftreten von konfigurierbaren Ereignissen getriggert.
  • In einer Laufzeitkomponente L werden die Schritte C und D ausgeführt. Hier wird untersucht, aus welchem Grund die MMU einen Interrupt erzeugt hat, aus welchem Grund also das Programm unterbrochen worden ist.
  • Bei dieser Untersuchung können mehrere Aspekte berücksichtigt werden. In der bevorzugten Ausführungsform wird in einem ersten Schritt analysiert, ob ein Schreibrecht besteht, falls ein Schreibbefehl ausgeführt werden soll und ob ein Ausführrecht besteht, falls eine Routine oder Funktion ausgeführt werden soll. Wenn diese Bedingung erfüllt ist, wird die Untersuchung weitergeführt. Ansonsten wird die Überwachung an eine andere Komponente des Betriebssystems weitergeleitet, zusammen mit überwachungsspezifischen Parametern.
  • In einem zweiten Schritt wird untersucht, ob die Zuordnung des Rechtes auch zu dem Typ des Speichersegmentes passt. Hier werden also die Schäden erfasst und identifiziert, die möglicherweise durch das erfindungsgemäße Löschen eines der beiden Rechte entstanden sind. Es wird geprüft, ob ein Speicherseg ment Schreibrechte hat, aber als Codesegment identifiziert werden kann und es wird geprüft, ob ein Speichersegment Ausführrechte hat, aber nicht als Codesegment identifiziert werden kann. Falls das zugeordnete Recht nicht mit der Art des Speichersegmentes übereinstimmt, ist der Schaden durch das Löschen des Rechtes entstanden. An dieser Stelle ist es möglich, einen Rechtetausch (WRITE zuweisen und EXECUTE löschen oder vice versa) anzustossen und das Verfahren dann fortzusetzen.
  • In allen anderen Fällen wird eine Attacke identifiziert. Dann können die üblichen Recovery Maßnahmen (z. B. Meldung an den User etc.) eingesetzt werden.
  • In den Fällen, in denen die Kontrolle weitergegeben wird, wird ebenfalls ein entsprechender Überwachungskontext weitergereicht, der insbesondere den Call-Stack, den Interrupt-Level etc. umfasst.
  • Mit dem hier vorgestellten Verfahren ist eine Abwehr von Attacken möglich, die Daten in den Stack einschleusen und später zur Ausführung bringen. Grundsätzlich sind die im Stack abgelegten Daten vor unbeabsichtigten Änderungen jedoch nicht geschützt. Gelingt es einem Angreifer beispielsweise, gezielt Code in den Stack zu schreiben, kann er die Rücksprungadresse manipulieren, so dass ein vorher eingeschleuster Code angesprungen wird. Attacken, die auf diesem Prinzip basieren, können durch die erfindungsgemäße Lösung erfolgreich und auf generische Weise abgewehrt werden.
  • Darüber hinaus ist es möglich, auch solche Angriffe abzuwehren, die sich nicht nur auf den Stack bzw. auf den Heap beziehen, sondern auch andere Speicher-Segmente betreffen.
  • Weitere Vorteile der erfindungsgemäßen Lösung, insbesondere im Unterschied zum erwähnten Stand der Technik, sind darin zu sehen, dass die Lösung minimal invasiv ist, da andere Abläufe auf dem Rechnersystem – wenn überhaupt – nur minimal beeinträchtigt werden. Darüber hinaus ist die Lösung sehr wirksam, da sie eine breite Klasse von Attacken abdeckt und darüber hinaus wartungsarm, da kein Update von Virenpattern, Port-Tabellen etc. bei neuen Sicherheitslücken oder neu entdeckten Angriffen notwendig ist.
  • Vorteilhafterweise werden bei der erfindungsgemäßen Lösung für die Beurteilung der Frage, ob die geladenen Speicher-Segmente einen hinreichenden Schutz vor Buffer-Overrun bieten, mehrere Gesichtspunkte berücksichtigt. Es handelt sich grundsätzlich um eine kaskadierte Entscheidung. In einem ersten Schritt wird in einer Speicher-Analysekomponente S untersucht, ob das jeweilige Segment gleichzeitig ein Schreib- und ein Ausführrecht hat. Falls dies bejaht werden kann, liegt grundsätzlich eine unsichere Rechtekombination vor.
  • In einem zweiten Schritt kann und wird geprüft, ob diese unsichere Rechtekombination ausnahmsweise für den Betrieb erforderlich ist. Erst wenn festgestellt wird, insbesondere durch Abfragen weiterer Systemparameter, dass die unsichere Rechtekombination auch nicht ausnahmsweise notwendig ist, wird erfindungsgemäß angenommen, dass das geprüfte Speicher-Segment einen hinreichenden Schutz vor einem Buffer-Overrun hat bzw. es werden in diesem Fall keine weitren Maßnahmen eingeleitet.
  • Falls kein hinreichender Schutz vor einem Buffer-Overrun besteht, werden erfindungsgemäß Schutzmaßnahmen bzw. Abwehrmaßnahmen gegen mögliche Attacken eingeleitet. Diese bestehen in der Beschränkung der Zugriffsrechte, insbesondere im Löschen eines der beiden Rechte (Ausführrecht oder Schreibrecht).
  • Darüber hinaus umfasst das erfindungsgemäße Verfahren Behebungs-Maßnahmen. Diese Behebungs-Maßnahmen finden Anwendung, falls Schäden identifiziert werden, die dadurch verursacht worden sind, dass eines der Rechte gelöscht worden ist. Falls es möglich ist, werden diese Schäden behoben. Dies ist insbesondere durch einen Rechtetausch möglich. Es liegt jedoch im Rahmen der Erfindung hier kumulativ oder alternativ andere Behebungs-Maßnahmen vorzusehen.
  • Insgesamt lässt sich festhalten, dass die Erfindung drei wesentliche Ereignisse steuert:
    • 1. Überprüfung auf hinreichenden Schutz vor Attacken: Dieser Bereich umfasst die Identifikation, ob für ein Speicher-Segment eine unsichere Rechtekombination (Schreib- und Ausführrecht) vorliegt und die Überprüfung, ob diese unsichere Rechtekombination ausnahmsweise zulässig ist.
    • 2. Maßnahmen zur Sicherung eines als unsicher erfassten Speicher-Segmentes: Dieser Bereich umfasst die Beschränkung der Zugriffsrechte, indem eines der beiden Rechte gelöscht wird.
    • 3. Behebungs-Maßnahmen: Dieser Bereich betrifft das Beheben von Schäden, die dadurch entstanden sind, dass das erfindungsgemäße Verfahren angewendet worden ist, nämlich dass eines der beiden Rechte gelöscht worden ist.
  • Insgesamt weist die vorliegende Erfindung grundsätzlich drei Aktivitätsbereiche auf: Überprüfung auf hinreichende Sicherheit, Herstellen hinreichender Sicherheit und Behebung von etwaigen Schäden, falls notwendig.
  • In einer alternativen Ausführungsform, die lediglich einen Teilbereich der vorstehend erwähnten Bereiche abdeckt, ist es lediglich vorgesehen, die Überprüfung und die Herstellung eines hinreichenden Schutzes zur Verfügung zu stellen. Auf die Behebung von Schäden wird bewusst verzichtet. Das jeweilige Verfahren besteht demnach nur aus den Schritten A, B und C und nicht aus dem Verfahrensschritt D.
  • Die Vorteile und Ausführungsvarianten, die in Zusammenhang mit dem Verfahren genannt sind, gelten ebenso für die Vorrichtung bzw. das Produkt.
  • Der Vorteil dieser Lösung liegt darin, dass sie kompakter ist und mit einer Schnittstelle ausgerüstet ist, sodass bestehende Recovery-Produkte bzw. -Systeme funktional angeschlossen werden können. Durch die geringere Komplexität dieser Ausführungsform ist sie ebenfalls transparenter.
  • In 2 sind übersichtsartig die wesentlichen Einheiten einer erfindungsgemäßen Vorrichtung in Form des Memory-Guards MG dargestellt. Die Überwachungs-Vorrichtung bzw. der Memory-Guard MG besteht in der bevorzugten Ausführungsform aus zwei Komponenten:
    • – Der Speicher-Analysekomponente S und
    • – der Laufzeitkomponente L.
  • Die Speicher-Analysekomponente S umfasst eine Identifikationseinheit 10 und eine Beschränkungs-Einheit 14.
  • Die Identifikationseinheit 10 ist zur Identifikation bestimmt, ob für ein Speichersegment eine unsichere Rechtekombination vorliegt, insbesondere, ob gleichzeitig ein Schreibrecht und ein Ausführrecht bestehen.
  • Die Beschränkungseinheit 14 ist zum Löschen des Schreibrechtes oder des Ausführrechtes bestimmt, falls eine unsichere Rechtekombination vorliegt und falls die unsichere Rechtekombination auch nicht ausnahmsweise zulässig ist durch Überprüfen einer Ausnahmebedingung.
  • Die Laufzeitkomponente L umfasst eine Unterbrechungs-Analyse-Einheit 13, die zur Untersuchung des Unterbrechungsgrundes bestimmt ist. Diese umfasst ihrerseits:
    • – eine Recovery-Einheit 16, die zum Einleiten von allen oder ausgewählten Recovery-Maßnahmen bestimmt ist, falls die Unterbrechungs-Analyse-Einheit 13 eine Attacke identifiziert hat
    • – eine Weiterleitungs-Einheit 18, die dazu bestimmt ist, die Überwachung und/oder Steuerung an zumindest eine anderen Betriebssystemkomponente weiterzuleiten, falls ein anderer Unterbrechungsgrund identifiziert worden ist und
    • – gegebenenfalls umfassend eine Tauscheinheit 19, die dazu bestimmt ist, das durch die Beschränkungseinheit 14 gelöschte Recht wieder zuzuweisen und das jeweils andere Recht zu löschen.
  • In der bevorzugten Ausführungsform ist die erfindungsgemäße Vorrichtung als separates Modul ausgebildet. Alternative Formen sehen es jedoch vor, den Memory-Guard MG als Modul in andere Einheiten zu integrieren, insbesondere in das Betriebssystem oder in die MMU.
  • Der Memory-Guard MG weist Schnittstellen zur MMU (Memory-Management-Unit) auf. Wird nämlich von der MMU eine Exception ausgegeben, so muss untersucht werden, ob dies durch das Löschen eines der Rechte ausgelöst worden ist. Falls ja, kann ein Rechtetausch getriggert werden. Falls die Exception aus einem anderen Grund ausgegeben worden ist, so ist es notwendig, dass die Exception die Software erreicht. Der Memory-Guard MG muss in diesem Fall die Exception weiterreichen. Das heißt, dass er den Stack so einstellt, wie dieser eingestellt war, als der Memory-Guard MG die Exception erhalten hatte. Er gibt dann die Kontrolle (Interrupt, Interrupt-Return bzw. Call oder Return) auf die gleiche Weise weiter, wie er sie erhalten hatte.
  • Insgesamt ist der erfindungsgemäße Memory-Guard MG wesentlich wirksamer gegen Attacken, da er restriktiver entscheidet, auf welchen Speicher-Segmenten Befehle ausgeführt werden dürfen, als beispielsweise der Windows XP SP2 DEP der Firma Microsoft aus dem Stand der Technik.
  • Darüber hinaus verwendet der Memory-Guard MG andere Kriterien bei der Entscheidung, welche Speicher-Segmente geschützt werden sollen. Damit kann ein höherer Schutz vor Attacken erzielt werden.
  • Auch ist es möglich, dass der Memory-Guard MG auf 64-Bit AMD und Intel-Prozessoren implementiert wird.
  • Ein wichtiger Vorteil der erfindungsgemäßen Lösung ist auch darin zu sehen, dass die Umsetzung der Erfindung keine prinzipiellen Änderungen des bisherigen Standes der Technik erfordert, so dass sie auch unproblematisch nachträglich als Baustein integriert werden kann.
  • Abschließend sei darauf hingewiesen, dass die Beschreibung der Erfindung und die Ausführungsbeispiele grundsätzlich nicht einschränkend in Hinblick auf eine bestimmte physikalische Realisierung der Erfindung zu verstehen sind. Für einen einschlägigen Fachmann ist es insbesondere offensichtlich, dass die Erfindung teilweise oder vollständig in Soft- und/oder Hardware und/oder auf mehrere physikalische Produkte – dabei insbesondere auch Computerprogrammprodukte – verteilt realisiert werden kann.

Claims (21)

  1. Verfahren zur Überwachung und zum Schutz eines Programm-Systems gegen Attacken, die darauf basieren, Daten in ein Speichersegment eines Programms zu schreiben und diese als Code ausführen zu wollen, mit folgenden Verfahrensschritten: A – Identifizieren, ob für ein Speichersegment eine unsichere Rechtekombination besteht, insbesondere, ob gleichzeitig ein Schreibrecht und ein Ausführrecht bestehen, B – falls eine unsichere Rechtekombination erfasst worden ist: Löschen des Schreibrechtes oder des Ausführrechtes und mit folgenden Verfahrensschritten, die zur Laufzeit durchgeführt werden, falls das Programm unterbrochen worden ist: C – Untersuchen, aus welchem Grund das Programm unterbrochen worden ist D – gegebenenfalls: – Einleiten von Recovery Maßnahmen, falls eine Attacke identifiziert worden ist, – Rechtetausch, falls die Unterbrechung durch das Löschen eines Rechtes entstanden ist oder – Weiterleiten der Überwachung und/oder Steuerung an eine Betriebssystemkomponente, falls ein anderer Unterbrechungsgrund identifiziert worden ist.
  2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass der Rechtetausch ausgeführt wird, indem das in Schritt B gelöschte Recht wieder zugewiesen wird und das jeweils andere gelöscht wird.
  3. Verfahren nach zumindest einem der Ansprüche 1 oder 2, dadurch gekennzeichnet, dass die Fallunterscheidung in Schritt B, welches Recht gelöscht wird – Schreibrecht oder Ausführrecht – unter anderem von auszuwertenden Attributen des Speichersegmentes abhängig ist und/oder nach weiteren, voreinstellbaren Kriterien ausgeführt wird.
  4. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren zusätzlich zumindest einen der folgenden Verfahrensschritte umfasst: – Melden von allen oder einer Auswahl von ausgeführten Verfahrensschritten – Melden von Schäden an dem Speichersegment und/oder – Melden von beabsichtigten und/oder ausgeführten Schadensbehebungsmaßnahmen.
  5. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass die Untersuchung in Schritt C zumindest nach folgenden Kriterien erfolgt: – untersuchen, ob weder ein Schreibbefehl ohne Schreibrecht noch ein Ausführbefehl ohne Ausführrecht vorliegen und bejahendenfalls: Weitergabe der Überwachung, insbesondere mit einem erfassten Überwachungskontext, – untersuchen des jeweiligen Speichersegmentes, insbesondere Auswerten von Speichersegment-Attributen, ob das Speichersegment Schreibrechte hat, aber als Codesegment identifiziert werden kann oder ob es Ausführrechte hat, aber nicht als Codesegment identifiziert werden kann: Identifzieren eines Schadens, der durch das Löschen eines Rechtes in Schritt B dieses Verfahrens verursacht worden ist – in anderen Fällen: Identifizieren einer Attacke.
  6. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass alle, alle geladenen oder eine Auswahl der Speichersegmente zyklisch nach voreinstellbaren Zeitintervallen überprüft werden, indem die Verfahrensschritte A und B ausgeführt werden.
  7. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren compiler-unabhängig ist.
  8. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Verfahren alle Rechnerarchitekturen unterstützt, deren Memory Management Unit ein Execute-Bit haben.
  9. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass zumindest einer der Verfahrensschritte A bis D automatisch erfolgen.
  10. Verfahren nach zumindest einem der vorstehenden Ansprüche, dadurch gekennzeichnet, dass das Ergebnis des Überwachungs- und/oder Schutzverfahrens und insbesondere der Überwachungskontext mit den Überwachungsparametern erfasst, gespeichert und/oder angezeigt werden.
  11. Vorrichtung zur Überwachung und zum Schutz eines Programm-Systems gegen Attacken, die darauf basieren, Daten in ein Speichersegment eines Programms zu schreiben und diese als Code ausführen zu wollen, mit: – zumindest einer Speicher-Analyse-Komponente (S), umfassend: – zumindest eine Identifikationseinheit (10), die zur Identifikation bestimmt ist, ob für ein Speichersegment eine unsichere Rechtekombination vorliegt, insbesondere, ob gleichzeitig ein Schreibrecht und ein Ausführrecht bestehen, – zumindest eine Beschränkungseinheit (14), die zum Löschen des Schreibrechtes oder des Ausführrechtes bestimmt ist, falls eine unsichere Rechtekombination vorliegt und mit einer Laufzeit-Komponente (L), umfassend: – zumindest eine Unterbrechungs-Analyse-Einheit (13), die zur Untersuchung des Unterbrechungsgrundes bestimmt ist – zumindest eine Recovery-Einheit (16), die zum Einleiten von allen oder ausgewählten Recovery-Maßnahmen bestimmt ist, falls die Unterbrechungs-Analyse-Einheit (13) eine Attacke identifiziert hat – zumindest eine Weiterleitungs-Einheit (18), die dazu bestimmt ist, die Überwachung und/oder Steuerung an eine anderen Komponente, insbesondere an eine Betriebssystemkomponente, weiterzuleiten, falls ein anderer Unterbrechungsgrund identifiziert worden ist und – gegebenenfalls umfassend eine Tauscheinheit (19), die dazu bestimmt ist, das durch die Beschränkungseinheit (14) gelöschte Recht wieder zuzuweisen und das jeweils andere Recht zu löschen.
  12. Vorrichtung nach Anspruch 11, dadurch gekennzeichnet, dass die Unterbrechungs-Analyse-Einheit (13) den Unterbrechungsgrund analysiert, indem: – untersucht wird, ob weder ein Schreibbefehl ohne Schreibrecht noch ein Ausführbefehl ohne Ausführrecht vorliegen und bejahendenfalls: Identifizieren eines Fehlverhaltens, – das jeweilige Speichersegment untersucht wird, insbesondere Auswerten von Speichersegment-Attributen, ob das Speichersegment Schreibrechte hat und dennoch als Codesegment identifiziert werden kann oder ob es Ausführrechte hat und dennoch nicht als Codesegment identifiziert werden kann: Identifzieren eines Schadens, der durch das Löschen eines Rechtes durch die Beschränkungseinheit (14) verursacht worden ist – eine Attacke identifiziert wird, in allen anderen Fällen.
  13. Vorrichtung nach zumindest einem der Ansprüche 11 oder 12, dadurch gekennzeichnet, dass die Beschränkungseinheit (14) die Zugriffsrechte auf das jeweilige Speichersegment beschränkt, indem sie das Schreibrecht oder das Ausführrecht löscht, unter anderem in Abhängigkeit von auszuwertenden Attributen des Speichersegmentes und/oder in Abhängigkeit von weiteren voreinstellbaren Kriterien.
  14. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 13, dadurch gekennzeichnet, dass die Vorrichtung zusätzlich zumindest eine Meldungseinheit umfasst, die bestimmt ist zum: – Melden von Ergebnissen der Komponenten (S, L) und/oder der Einheiten (10, 14, 13, 16, 18, 19) – Melden von Schäden an dem Speichersegment und/oder zum – Melden von beabsichtigten und/oder ausgeführten Schadensbehebungsmaßnahmen.
  15. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 14, dadurch gekennzeichnet, dass die Vorrichtung zusätzlich eine Modul umfasst, das bestimmt ist zum: – Melden an den Anwender und/oder an eine zentrale Instanz und/oder zum Einleiten weiterer Überwachungsmaßnahmen, falls eine Attacke erkannt worden ist.
  16. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 15, dadurch gekennzeichnet, dass alle, alle geladenen oder eine Auswahl der Speichersegmente zyklisch nach voreinstellbaren Zeitintervallen überprüft werden.
  17. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 16, dadurch gekennzeichnet, dass die Vorrichtung unabhängig von einem Compiler für das Programm ist.
  18. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 17, dadurch gekennzeichnet, dass die Vorrichtung alle Rechnerarchitekturen unterstützt, deren Memory Management Unit ein Execute-Bit haben.
  19. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 18, dadurch gekennzeichnet, dass zumindest eine der Komponenten (S, L) und/oder zumindest eine der Einheiten (10, 13, 16, 18, 19) automatisch arbeiten.
  20. Vorrichtung nach zumindest einem der vorstehenden Ansprüche 11 bis 19, dadurch gekennzeichnet, dass das Ergebnis der Überwachungs- und/oder Schutzvorrichtung und insbesondere die Überwachungsparameter erfasst, gespeichert und/oder angezeigt werden.
  21. Programm zur Überwachung und zum Schutz eines Programm-Systems gegen Attacken, die darauf basieren, Daten in ein Speichersegment eines überwachten Programms des Programm-Systems zu schreiben und diese Daten als Code ausführen zu wollen, wobei das Programm zur Überwachung Programmcode umfasst, der zur Durchführung der Schritte eines Verfahrens nach zumindest einem der Ansprüche 1 bis 10 eingerichtet ist.
DE102005021064A 2005-05-06 2005-05-06 Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken Expired - Fee Related DE102005021064B4 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102005021064A DE102005021064B4 (de) 2005-05-06 2005-05-06 Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken
US11/418,182 US8024798B2 (en) 2005-05-06 2006-05-05 Method and apparatus for protecting against buffer overrun attacks

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102005021064A DE102005021064B4 (de) 2005-05-06 2005-05-06 Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken

Publications (2)

Publication Number Publication Date
DE102005021064A1 DE102005021064A1 (de) 2006-11-09
DE102005021064B4 true DE102005021064B4 (de) 2008-10-16

Family

ID=37111492

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102005021064A Expired - Fee Related DE102005021064B4 (de) 2005-05-06 2005-05-06 Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken

Country Status (2)

Country Link
US (1) US8024798B2 (de)
DE (1) DE102005021064B4 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8763115B2 (en) * 2007-08-08 2014-06-24 Vmware, Inc. Impeding progress of malicious guest software
US20090158011A1 (en) * 2007-12-14 2009-06-18 Infineon Technologies Ag Data processing system
US8239836B1 (en) * 2008-03-07 2012-08-07 The Regents Of The University Of California Multi-variant parallel program execution to detect malicious code injection
US8549260B2 (en) * 2009-01-29 2013-10-01 Infineon Technologies Ag Apparatus for processing data and method for generating manipulated and re-manipulated configuration data for processor
US9292702B2 (en) * 2009-08-20 2016-03-22 International Business Machines Corporation Dynamic switching of security configurations
JP2011048723A (ja) * 2009-08-28 2011-03-10 Fuji Xerox Co Ltd 情報処理プログラム及び情報処理装置
US8621238B1 (en) 2011-07-26 2013-12-31 The United States Of America As Represented By The Secretary Of The Air Force Using software-based decision procedures to control instruction-level execution
RU2510074C2 (ru) * 2012-02-24 2014-03-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ проверки исполняемого кода перед его выполнением
US9804975B2 (en) 2014-06-23 2017-10-31 The Johns Hopkins University Hardware-enforced prevention of buffer overflow
US11093603B2 (en) * 2015-08-26 2021-08-17 Robotic Research, Llc System and method for protecting software from buffer overruns

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1321844A2 (de) * 2001-12-20 2003-06-25 Fujitsu Limited Gerät zum Auffinden von Zugangsberechtigungswidersprüchen und Gerät zum Erzeugen von analysierenden Regeln
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
GB2402236A (en) * 2003-05-27 2004-12-01 Simon Alan Spacey A method and apparatus for securing a computer system

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4096568A (en) * 1976-09-24 1978-06-20 Sperry Rand Corporation Virtual address translator
US4328542A (en) * 1979-11-07 1982-05-04 The Boeing Company Secure implementation of transition machine computer
US6327618B1 (en) * 1998-12-03 2001-12-04 Cisco Technology, Inc. Recognizing and processing conflicts in network management policies
JP3915331B2 (ja) * 1999-08-10 2007-05-16 富士ゼロックス株式会社 共有ドキュメントの編集装置及び編集方法
US6513110B1 (en) * 1999-12-15 2003-01-28 Transmeta Corporation Check instruction and method
US20030023593A1 (en) * 2000-05-11 2003-01-30 Richard Schmidt Real-time adaptive data mining system and method
US7418489B2 (en) * 2000-06-07 2008-08-26 Microsoft Corporation Method and apparatus for applying policies
US20020138706A1 (en) * 2001-03-21 2002-09-26 Littera, Inc. Reader-writer lock method and system
US20040039594A1 (en) * 2002-01-09 2004-02-26 Innerpresence Networks, Inc. Systems and methods for dynamically generating licenses in a rights management system
US7802110B2 (en) * 2004-08-25 2010-09-21 Microsoft Corporation System and method for secure execution of program code

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
EP1321844A2 (de) * 2001-12-20 2003-06-25 Fujitsu Limited Gerät zum Auffinden von Zugangsberechtigungswidersprüchen und Gerät zum Erzeugen von analysierenden Regeln
GB2402236A (en) * 2003-05-27 2004-12-01 Simon Alan Spacey A method and apparatus for securing a computer system

Also Published As

Publication number Publication date
US20060259435A1 (en) 2006-11-16
DE102005021064A1 (de) 2006-11-09
US8024798B2 (en) 2011-09-20

Similar Documents

Publication Publication Date Title
EP3111355B1 (de) Verfahren zum schutz eines computerprogramms gegen beeinflussung und computersystem
DE202013102179U1 (de) System zu detektieren von durch eine virtuelle Maschine ausgeführtem Schadcode
EP1933248A1 (de) Verfahren zur sicheren Datenverarbeitung auf einem Computersystem
DE60127310T2 (de) Vorrichtung zum schutz digitaler daten
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
DE102005021064B4 (de) Verfahren und Vorrichtung zum Schutz gegen Buffer Overrun-Attacken
EP3430558B1 (de) Erkennen einer abweichung eines sicherheitszustandes einer recheneinrichtung von einem sollsicherheitszustand
WO2016156095A1 (de) Verfahren zum schutz sicherheitsrelevanter daten in einem cachespeicher
DE112022003368T5 (de) Verschlüsselungsüberwachungsregister und -system
EP1798653B1 (de) Verfahren, Computerprogrammprodukt und Vorrichtung zum Schützen eines einen Funktionsblock aufweisenden Programms
DE102014204417A1 (de) Vorrichtung und Verfahren zum Detektieren einer Manipulation an einem Programmcode
DE102021212994B3 (de) Verfahren zur Erkennung von auf eine Manipulation hindeutenden Anomalien während eines sicheren Startvorgangs einer softwaregesteuerten Vorrichtung
WO2004114131A1 (de) Verfahren zum nachladen einer software in den bootsektor eines programmierbaren lesespeicher
WO2016169646A1 (de) System und verfahren zur überwachung der integrität einer von einem serversystem an ein clientsystem ausgelieferten komponente
EP3568793B1 (de) Verfahren und computer mit einer sicherung gegen cyberkriminelle bedrohungen
DE10208442A1 (de) Hochsicherheits-Server als Datenverarbeitungsanlage
EP4430501B1 (de) Verfahren und zugehörige computersysteme zur sicherung der integrität von daten
EP4441645A1 (de) Verfahren zur steuerung des zugriffs eines users auf ein netzwerk, netzwerk und computerprogramm
DE19734585C2 (de) Verfahren und Vorrichtung zur Überwachung von Informationsflüssen in Computersystemen
DE102014213454A1 (de) Verfahren und System zur Erkennung einer Manipulation von Datensätzen
EP1105798B1 (de) Verfahren, anordnung sowie ein satz mehrerer anordnungen zum schutz mehrerer programme und/oder mehrerer dateien vor einem unbefugten zugriff durch einen prozess
EP3588340B1 (de) Computerimplementiertes verfahren zum betreiben einer datenspeichereinrichtung
DE102004047191A1 (de) Manipulationsgeschütztes Mikroprozessorsystem und Betriebsverfahren dafür
WO2013068217A1 (de) Verfahren zum schutz gegen reverse-engineering eines computerprogramms
DE102007059798B3 (de) Verfahren zur Verschlüsselung von ausführbarem Programmcode, insbesondere als Schutz gegen unautorisierte Vervielfältigung, Manipulation und unautorisierten Betrieb

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8364 No opposition during term of opposition
R081 Change of applicant/patentee

Owner name: SIEMENS HEALTHCARE GMBH, DE

Free format text: FORMER OWNER: SIEMENS AKTIENGESELLSCHAFT, 80333 MUENCHEN, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0021220000

Ipc: G06F0021120000

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee