[go: up one dir, main page]

DE69802834T2 - Verbesserung der sicherheit für nicht-vertrauten ausführbaren code - Google Patents

Verbesserung der sicherheit für nicht-vertrauten ausführbaren code

Info

Publication number
DE69802834T2
DE69802834T2 DE69802834T DE69802834T DE69802834T2 DE 69802834 T2 DE69802834 T2 DE 69802834T2 DE 69802834 T DE69802834 T DE 69802834T DE 69802834 T DE69802834 T DE 69802834T DE 69802834 T2 DE69802834 T2 DE 69802834T2
Authority
DE
Germany
Prior art keywords
code
program
untrusted
untrusted program
emulator
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 - Lifetime
Application number
DE69802834T
Other languages
English (en)
Other versions
DE69802834D1 (de
Inventor
Sudeep Bharati
Barry Bond
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.)
Microsoft Corp
Original Assignee
Microsoft 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 Microsoft Corp filed Critical Microsoft Corp
Application granted granted Critical
Publication of DE69802834D1 publication Critical patent/DE69802834D1/de
Publication of DE69802834T2 publication Critical patent/DE69802834T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

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
    • G06F21/53Monitoring 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 executing in a restricted environment, e.g. sandbox or secure virtual machine
    • 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

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)
  • Devices For Executing Special Programs (AREA)

Description

    Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft elektronische Datenverarbeitung und insbesondere das Vermeiden einer Systembeschädigung aus der Ausführung von Programmen, die nicht vertrauenswürdigen Code enthalten.
  • Hintergrund der Erfindung
  • Fortschritte bei Internet-Browsern erschaffen dynamische und interaktive Seiten im World Wide Web. Jedoch schaffen die Fortschritte auch erhöhte Computersystem-Sicherheitsgefahren, die davon herrühren können, lediglich eine Web-Seite zu betrachten. Internet-Browser laden automatisch Programme oder anderen ausführbaren Code, die in die Web-Seite eingebettet sind, herunter und führen sie aus. Die Fähigkeit, Programme von einem entfernten Computer herunterzuladen und auszuführen, setzt den Wirtscomputer verschiedenen Sicherheitsrisiken aus. Feindliche Programme können zum Beispiel ein Computersystem oder Daten auf dem Computersystem modifizieren, Benutzerdaten, wie Paßwörter und Bankkontoinformationen stehlen, oder Systembetriebsmittel für den Benutzer unbrauchbar machen. Als Ergebnis sind Sicherheitsfragen bei der Entwicklung von Internet-Anwendungen entscheidend.
  • Eine Herangehensweise des Stands der Technik liefert Sicherheit für einen besondere Form von ausführbaren Code, der als Java-Applets bekannt ist. Das Quellprogramm des ausführbaren Codes wird geschrieben und zu plattformunabhängigen Byte- Code konvertiert heruntergeladen. Der plattformunabhängige in Token umgewandelte Byte-Code läuft auf einer virtuellen Maschine, die strenge Grenzen darauf anwendet, was der ausführbare Code tun kann. Der ausführbare Code in der Herangehensweise des Stands der Technik hat nur einen sehr begrenzten Zugriff auf das Betriebssystem. Wenn die Java-Sprache mächtiger wird, muß sie folglich viele Funktionen duplizieren, die das Betriebssystem schon ausführt.
  • Ein Artikel aus eSafe technologies mit dem Datum 28. April 1997 mit dem Titel "New Anti-Vandal Software Provides 'Next Generation' PC Protection," beschreibt ein Produkt, das einen Sandbox-Speicher einsetzt, der außerhalb des Speichers liegende Zugriffe von einem nicht vertrauenswürdigen Anwendungsprogramm beschränkt. Die europäische Patentanmeldung 0667572 A1, eingereicht am 24. Januar 1995, beschreibt ein System zur Verhinderung eines unberechtigten Gebrauchs von Betriebsmitteln durch Modifizieren einer Kopfdatei von Anwendungsprogrammen, um Verknüpfungen mit einem Betriebssystemkern durch Verknüpfungen mit einem Abfangprogramm zu ersetzen, das den Lizensierungsstatus eines Anwendungsprogramms bestimmt, wenn es aufgerufen wird, jedoch bevor es ausgeführt werden kann.
  • ActiveX-Controls sind eine Form ausführbaren Codes, die die eingeschränkten Fähigkeiten von Java vermeiden. ActiveX ist ein Ergebnis zweier Technologien von Microsoft Corp., die als OLE (Objektverküpfung und -Einbettung) und COM (Komponentenobjektmodell) bezeichnet werden. ActiveX unterstützt Merkmale, die es ihm ermöglichen, das Internet auszunutzen. Zum Beispiel kann eine ActiveX-Control automatisch herunter geladen und durch einen Web-Browser ausgeführt werden.
  • Da ActiveX-Controls in Maschinencode geschrieben sind, haben sie vollen Zugriff auf das Betriebssystem und den Arbeitsspeicher, in dem die Controls laufen. Dieser Zugriff ist mächtig, wenn die Control in einer eng gesteuerten Umgebung, wie einer Erweiterung einer eigenständigen Anwendung läuft. Jedoch schafft der volle Zugriff auf das Betriebssystem ernste Sicherheitsprobleme, wenn ActiveX-Controls von unbekannten oder nicht vertrauenswürdigen Quellen im Internet durch eine an Anwendung, wie dem Web-Browser Internet Explorer heruntergeladen werden. ActiveX-Controls sind dazu bestimmt, auf alle Dienste des Betriebssystems zuzugreifen. Eine feindliche ActiveX- Control könnte nach Informationen auf der Festplatte des Wirtssystems suchen, einen Virus implantieren oder das Wirtssystem beschädigen. Das Problem mit dem unbeschränkten Zugriff von ActiveX auf das Betriebssystem ist es, daß der unbeschränkte Zugriff das Wirtssystem in die Gefahr von Sicherheitslücken bringt.
  • Folglich gibt es einen Bedarf nach einer Form ausführbaren Codes mit der Fähigkeit, auf die Leistung des Wirtsbetriebssystem zuzugreifen, jedoch ohne die Sicherheit des Wirtsystems aufs Spiel zu setzen.
  • Zusammenfassung der Erfindung
  • Die vorliegende Erfindung implementiert ein Sicherheitsverfahren für nicht vertrauenswürdigen ausführbaren Code, der in direkt ausführbaren Maschinencode geschrieben ist. Der ausführbare Code wird in einen vorher zugewiesenen Speicherbereich, oder Sandbox geladen, von dem Verweise auf den außerhalb liegenden Speicher beschränkt sind. Prüfungen ("Schnüffel-Code"), die zum ausführbaren Code hinzugefügt werden, verstärken diese Beschränkungen während der Ausführung. Herkömmliche Anwendungsprogramm-Schnittstellen- (API)-Aufrufe im nicht vertrauenswürdigen Code werden durch Übersetzungscode-Module ("Thunks") ersetzt, die es dem ausführbaren Code gestatten, auf das Wirtsbetriebssystem zuzugreifen, während Lücken der Sicherheit des Wirtsystems verhindert werden. Statische Verknüpfungen in der Steuerung oder dem Applet werden durch Aufrufe an Thunk- Module ersetzt. Wenn ein API-Aufruf während der Ausführung gemacht wird, wird die Kontrolle an den Thunk übertragen, der feststellt, ob der API-Aufruf einer ist, von dem zugelassen werden sollte, auf dem Betriebssystem ausgeführt zu werden oder nicht.
  • Ein Aspekt der Erfindung ist ein Verfahren zur Ausführung eines nicht vertrauenswürdigen Programms, wie im unabhängigen Anspruch 1 definiert, und ein entsprechender Emulator, wie im Anspruch 17 definiert.
  • Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist eine Systemansicht einer exemplarischen Computerumgebung, in der die vorliegende Erfindung implementiert werden kann.
  • Fig. 2 ist ein Blockdiagramm einer Ausführungsumgebung, die die vorliegende Erfindung enthält.
  • Fig. 3 ist ein Ablaufplan, der die Hauptschritte der Erfindung beschreibt.
  • Fig. 4 ist ein vereinfachtes Blockdiagramm eines Sandbox-Bereichs im Speicher.
  • Detaillierte Beschreibung der Erfindung
  • In der folgenden detaillierten Beschreibung der Ausführungsformen wird auf die beigefügten Zeichnungen bezug genommen, die einen Teil hiervon bilden, und in denen illustrativ spezifische Ausführungsformen gezeigt werden, in denen die Erfindung praktiziert werden kann. Diese Ausführungsformen werden ausreichend detailliert beschrieben, um es Fachleuten zu ermöglichen, die Erfindung zu praktizieren, und es ist zu verstehen, daß andere Ausführungsformen genutzt werden können und daß strukturelle, logische und elektrische Änderungen vorgenommen werden können, ohne den Geist und Rahmen der vorliegenden Erfindungen zu verlassen. Die folgende detaillierte Beschreibung ist daher nicht in einem einschränkenden Sinne aufzufassen, und der Rahmen der vorliegenden Erfindungen wird nur durch die beigefügten Ansprüche definiert. Die Numerierung der Figuren wird so vorgenommen, daß identische Komponenten, die in mehreren Figuren erscheinen, durch dieselben Bezugsziffern identifiziert werden.
  • Fig. 1 und die folgende Erläuterung sind dazu bestimmt. eine kurze, allgemeine Beschreibung einer geeigneten Computerumgebung zu liefern, in der die Erfindung implementiert werden kann. Obwohl es nicht erforderlich ist, wird die Erfindung im allgemeinen Kontext computerausführbarer Befehle beschrieben, wie Programmodulen, die durch einen Personal-Computer ausgeführt werden. Im allgemeinen umfassen Programmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Überdies werden Fachleute erkennen, daß die Erfindung mit anderen Computersystem-Konfigurationen praktiziert werden kann, einschließlich Taschengeräten, Multiprozessorsystemen, mirkroprozessorbasierende oder programmierbare Konsumelektronik, Netzwerk-PCs, Minicomputern, Großrechnern und dergleichen. Die Erfindung kann auch in verteilten Computerumgebungen praktiziert werden, wo Aufgaben durch entfernte Verarbeitungsvorrichtungen ausgeführt werden, die durch ein Kommunikationsnetz verbunden sind. In einer verteilten Computerumgebung können Programmodule sowohl in lokalen als auch entfernten Speichervorrichtungen lokalisiert sein.
  • Fig. 1 stellt eine kurze, allgemeine Beschreibung einer geeigneten Computerumgebung bereit, in der die Erfindung implementiert werden kann. Die Erfindung wird im folgenden im allgemeinen Kontext computerausführbarer Befehle beschrieben, wie Programmodulen, die durch einen Personal-Computer (PC) ausgeführt werden; jedoch sind andere Umgebungen möglich. Programmodule umfassen Routinen, Programme, Objekte, Komponenten, Datenstrukturen, usw., die bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Fachleute werden erkennen, daß die Erfindung mit anderen Computersystem-Konfigurationen praktiziert werden kann, einschließlich Taschengeräten, Multiprozessorsystemen, mirkroprozessorbasierende oder programmierbare Konsumelektronik, Netzwerk-PCs, Minicomputern, Großrechnern und dergleichen. Die Erfindung kann auch in verteilten Computerumgebungen praktiziert werden, wo Aufgaben durch entfernte Verarbeitungsvorrichtungen ausgeführt werden, die durch ein Kommunikationsnetz verbunden sind. In einer verteilten Computerumgebung können Programmodule sowohl in lokalen als auch entfernten Speichervorrichtungen lokalisiert sein.
  • Fig. 1 zeigt ein exemplarisches System zur Implementierung der Erfindung. Es setzt eine universelle Computervorrichtung in der Form eines herkömmlichen Personalcomputers 20 ein, der eine Verarbeitungseinheit 21, einen Systemspeicher 22, und einen Systembus 23 aufweist, der den Systemspeicher und andere Systemkomponenten mit der Verarbeitungseinheit 21 koppelt. Der Systembus 23 kann irgendeiner verschiedener Typen sein, einschließlich einem Speicherbus oder Speicherkontroller, einem Peripheriebus und einem lokalen Bus, und kann irgendeine einer Vielfalt von Busstrukturen verwenden. Der Systemspeicher 22 weist einen Festwertspeicher (ROM) 24 und einen Direktzugriffsspeicher (RAM) 25 auf. Ein Basis Eingabe-/Ausgabesystem (BIOS) 26, das im ROM 24 gespeichert ist, enthält die Basisroutinen, die Informationen zwischen Komponenten des Personalcomputers 20 übertragen. Das BIOS 24 enthält auch Startroutinen für das System. Der Personal-Computer 20 weist ferner ein Festplattenlaufwerk 27 zum Schreiben auf und Lesen von einer (nicht gezeigten) Festplatte, ein Magnetplattenlaufwerk 28 zum Schreiben auf und Lesen von einer entfernbaren Magnetplatte 29, und optisches Plattenlaufwerk 30 zum Schreiben auf und Lesen von einer entfernbaren optischen Platte 31, wie einer CD-ROM oder anderen optischen Medium auf. Das Festplattenlaufwerk 27, das Magnetplattenlaufwerk 28 und das optische Plattenlaufwerk 30 sind mit dem Systembus 23 jeweils durch eine Festplatten-Laufwerk-Schnittstelle 32, eine Magnetplattenlaufwerk-Schnittstelle 33 und eine Schnittstelle für eine optisches Plattenlaufwerk 34 verbunden. Die Laufwerke und ihre zugehörigen computerlesbaren Medien stellen eine nichtflüchtige Speicherung computerlesbarer Befehle, Datenstrukturen, Programmodulen und anderen Daten für den Personal-Computer 20 bereit. Obwohl die hierin exemplarisch beschriebene Umgebung eine Festplatte, eine entfernbare Magnetplatte 29 und eine entfernbare optische Platte 31 einsetzt, werden Fachleute erkennen, daß andere Arten von computerlesbaren Medien, die Daten speichern können, auf die durch einen Computer zugegriffen werden kann, ebenfalls in der exemplarischen Betriebsumgebung verwendet werden können. Solche Medien können Magnetkassetten, Flash-Speicherkarten, DVDs, Bernoulli-Kassetten, RAMs, ROMs und dergleichen umfassen.
  • Programmodule können auf der Festplatte, der Magnetplatte 29, der optischen Platte 31, dem ROM 24 und RAM 25 gespeichert sein. Programmodule können das Betriebssystem 35, ein oder mehrere Anwendungsprogramme 36, andere Programmodule 37 und Programmdaten 38 umfassen. Ein Benutzer kann Kommandos und Informationen in den Personal-Computer 20 durch Eingabevorrichtungen wie einer Tastatur 40 und einer Zeigervorrichtung 42 eingeben. Andere (nicht gezeigte) Eingabevorrichtungen können ein Mikrophon, einen Joystick, ein Gamepad, eine Satellitenschüssel, einen Scanner oder dergleichen umfassen. Diese und andere Eingabevorrichtungen sind häufig mit der Verarbeitungseinheit 21 durch einen seriellen Schnittstellenport 46 verbunden, der mit dem Systembus 23 gekoppelt ist; sie können jedoch durch andere Schnittstellen verbunden sind, die in Fig. 1 nicht gezeigt werden, wie einen Parallelport, einen Gameport oder eine universellen seriellen Bus (USB). Ein Monitor 47 oder andere Anzeigevorrichtung ist ebenfalls mit einem Systembus 23 über eine Schnittstelle, wie einen Videoadapter 48 verbunden. Zusätzlich zum Monitor weisen Personal-Computer typischerweise andere (nicht gezeigte) periphere Ausgabevorrichtungen, wie Lautsprecher und Drucker auf.
  • Personal-Computer 20 können in einer Netzwerkumgebung arbeiten, wobei logische Verbindungen zu einem oder mehreren entfernten Computern wie einem entfernten Computer 49 verwendet werden. Der entfernte Computer 49 kann ein anderer Personal- Computer, ein Server, ein Router, ein Netzwerk-PC, eine gleichrangige Vorrichtung oder ein anderer gemeinsamer Netzwerkknoten sein. Er weist typischerweise viele oder alle der Komponenten auf, die oben in Verbindung mit dem Personal-Computer 20 beschrieben werden; jedoch wird in Fig. 1 nur einer Speichervorrichtung 50 dargestellt. Die in Fig. 1 dargestellten logischen Verbindungen umfassen ein lokales Netz (LAN) 51 und ein weiträumiges Netz (WAN) 52. Solche Netzwerkumgebungen sind in Büros, unternehmensweiten Computernetzen, Intranets und dem Internet üblich.
  • Wenn er in einer LAN-Netzwerkumgebung plaziert ist, ist der PC 20 mit dem lokalen Netz 51 durch eine Netzschnittstelle oder einen Adapter 53 verbunden. Wenn er in einer WAN-Netzwerkumgebung, wie dem Internet verwendet wird, weist der PC 20 typischerweise ein Modem 54 oder andere Einrichtungen zum Herstellen von Verbindungen über das Netz 52 auf. Das Modem 54 kann sich innerhalb oder außerhalb des PC 20 befinden, und ist mit dem Systembus 23 über einen seriellen Schnittstellenport 46 verbuden. In einer Netzwerkumgebung können Programmodule, die so dargestellt sind, daß sie sich innerhalb 20 befinden oder Abschnitte derselben in einer entfernten Speichervorrichtung 50 gespeichert sein. Natürlich sind die gezeigten Netzverbindungen illustrativ, und es können andere Einrichtungen zur Herstellung einer Kommunikationsverbindung zwischen den Computern eingesetzt werden.
  • In der vorliegenden Erfindung lädt ein herkömmlicher Web- Browser, der auf einem Personal-Computer 20 als ein Anwendungsprogramm 36 läuft, automatisch ein Applet vom entfernten Computer 49 herunter. Ein "Applet" ist ein kurzes Programm, üblicherweise zur Ausführung einer einzigen Funktion, das dazu bestimmt ist, aus einer anderen Anwendung heraus ausgeführt zu werden. Applets werden häufig von entfernten Computern heruntergeladen, wenn sie benötigt werden, und können manchmal vom lokalen Computer gelöscht werden, nachdem sie durch die primäre Anwendung ausgeführt worden sind.
  • Fig. 2 zeigt eine im wesentlichen herkömmliche Ausführungsumgebung, die Einrichtungen zum Ausführen von Applets unter der Erfindung aufweist. Der Ausdruck "Applet" ist in der Technik nicht präzise definiert. Dieser Ausdruck bezeichnet im allgemeinen ein kleines Programm zur Ausführung einer einzelnen Funktion oder eines beschränkten Bereiches von Funktionen; jedoch begrenzt der Ausdruck nicht von sich aus die Größe des Programms oder seinen Bereich von Funktionen. Applets werden häufig von einer Online-Quelle wie eine WWW-Seite für einen bestimmten Zweck heruntergeladen; in der Tat kann ein Applet heruntergeladen, unmittelbar ausgeführt und dann nach der Ausführung gelöscht werden. In der bevorzugten unten beschriebenen Ausführungsform kann der Ausdruck "Control" oder "ActiveX-Control" als synonym für ein Applet betrachtet werden. Auf jeden Fall ist die Erfindung selbst nicht auf die Verwendung mit kleinen Programmen, heruntergeladenen Programme oder irgend einer anderen spezifischen Form Programm beschränkt. Die Erfindung ist für jedes Programm nützlich, dem nicht "vertraut" wird -- das heißt, ein Programm unsicheren Ursprungs oder Effekts, das das System beschädigen könnte, wenn ihm vollen Zugriff auf die Systembetriebsmittel gegeben würden.
  • Ein Betriebssystem 35, wie Windows95 setzt ein Ladermodul 351 zum Laden eines normalen Anwendungsprogramms 36 in den Speicher ein. Das Programm 36 läuft unter der Kontrolle des OS 35, indem es Befehle direkt an die Verarbeitungseinheit 21 sendet, wie durch die Leitung 361 symbolisiert. Das Programm 36 führt Standard-Anwendungsprogramm-Schnittstellen-(API)-Funktionen aus, indem es Blöcke des API-Codes 352-354 aufruft. Jede API enthält Befehle, die direkt durch den Prozessor 21 ausführbar sind, um eine angegebene niedrige Funktion auszuführen, wie eine Dialogbox auf der Anzeige 47, Fig. 1 anzuzeigen. Das OS 35 umfaßt gewöhnlich Tausende einzelne APIs, die üblicherweise als mehrere Dutzend dynamische Verknüpfungsbibliotheken (DLLs) gepackt sind; im Microsoft Windows NT Betriebssystem, sind diese DLLs insgesamt als "Win32" bekannt.
  • Ein Emulatorprogramm läßt es zu, daß Anwendungsprogramme, die für eine Verarbeitungseinheit 21 geschrieben sind, auf einer anderen Verarbeitungseinheit mit einem anderen Befehlssatz ausgeführt werden. Der besondere, hier eingesetzte Wx86VM- Emulator 39 wurde ursprünglich dazu entwickelt, Programme, die für Intel "x86" Prozessoren (80386, 80486, Pentium, etc.) geschrieben wurden, auf Prozessoren, wie dem Digital Equipment Corp. Alpha und den IBM PowerPC auszuführen. Für den gegenwärtigen Zweck schickt eine etwas modifizierte, Wx86VM genannte Version die meisten Befehle unmodifiziert zum x88-Prozessor 2 1, blockiert oder übersetzt andere jedoch, wie beschrieben wird. Der Wx86VM ahmt Wx86 bei der Ausführung von APIs mittels Übersetzungsmodulen nach, die als "Thunk-Code" (oder nur "Thunks") 391-393 bezeichnet werden, obwohl es hier der Zweck der Thunk-Codes ist, vielmehr Sicherheit als ihren ursprünglichen Zweck bereitzustellen, es zuzulassen, daß API-Aufrufe von einer Plattform API-Code ausführen, der für eine andere Plattform geschrieben ist.
  • Wenn ein Applet, wie 362 ausgeführt werden soll, ruft ein Wirtsprogramm 36, wie ein Internet-Web-Browser den Emulator 39 auf. Der Emulator setzt sein eigenes Ladermodul 396 ein, um den Applet-Code in einen vorbestimmten Speicherbereich zu laden und einen anderen vorbestimmten Speicherbereich für seinen Gebrauch zuzuweisen. Diese Bereiche werden als die "Sandbox" für dieses Applet bezeichnet. Während der Ausführung des Applets kompiliert der Emulator 39 den Code des Applets in einen kompilierten Zwischenspeicher, der außerhalb der Sandbox liegt. Während des Kompilierungsprozesses fügt der Emulator auch den Speicherschnüffelcode 394 in den Zwischenspeicher ein.
  • Da das Applet 362 auf derselben Prozessorplattform 21 läuft, für die es geschrieben wurde, muß der Emulator 39 keine einzelnen Befehle übersetzen (symbolisiert durch Leitung 363), um eine ActiveX-Control auszuführen. Jedoch filtert und übersetzt er sie zum Zweck, Sicherheit bereitzustellen. Zum Beispiel verwenden APIs den x86-Unterbrechungs- (INT)-Befehl, um den Kern des Betriebssystems 35 aufzurufen. Ein INT-Befehl in einer Steuerung könnte daher die API-Thunks 391-393 und den Schnüffel-Code 394 umgehen und den Kern direkt aufrufen. Daher blockiert der Emulator 39 diesen Befehl unbedingt; er erzeugt auf der Leitung 364 überhaupt keinen Ausgabe-Code. Andere problematische Befehle, wie Unterprogramm-Aufrufe (CALL) und Rücksprünge (RET), und unbedingte/bedingte Sprünge (JMP/Jxx), auf der Leitung 363 werden auf der Leitung 364 durch Unterprogramm-Aufrufe ersetzt; wenn einer dieser Befehle simuliert wird, muß der Zwischenspeicher des schon kompilierten Codes durchsucht werden, um die innerhalb des Zwischenspeichers liegenden Adresse des Aufrufs oder Sprungs zu bestimmen.
  • API-Aufrufe vom Applet 362 gehen nicht direkt zum API-Code 352-354 weiter. Vielmehr fängt der Thunk-Code 391-393 sie ab, und entscheidet, was mit ihnen zu geschehen hat. Einige Aufrufe, wie bei 391, können durch den Thunk 391 direkt zur entsprechenden API 352 geschickt werden; diese Aufrufe können keinerlei Zerstörungen am System anrichten, und stellen daher keine Sicherheitsrisiken dar. Andere Thunks, wie 392, können abhängig von bestimmten Eigenschaften dieses besonderen Aufrufs entscheiden, ob sie einen Aufruf zu seinem entsprechenden API 353 schicken oder nicht; oder er kann den Aufruf modifizieren, bevor er ihn der API präsentiert. Einige Thunks, wie 393, verbieten einen Aufruf ihrer API 354 völlig; diese Aufrufe verletzen die Sicherheit des Systems, und können keinem nicht vertrauenswürdigen Applet 362 erlaubt werden.
  • Fig. 3 stellt die Hauptschritte 400 einer Ausführungsform der Erfindung dar, die es zulassen, daß auf einem Personal-Computer 20 ausgeführte Applets auf alle Betriebssystem-Dienste zugreifen, ohne die Sicherheit des Personal-Computers zu beeinträchtigen.
  • In den Schritten 410 lädt eine Wirtsanwendung, wie ein Web- Browser das Applet in einen zugewiesenen Speicherbereich. Der zugewiesene Speichebereich wird in dieser Anmeldung als eine Sandbox bezeichnet. Die Sandbox weist sowohl ein Anfangsspeichersegment, um das Applet zu speichern, als auch ein Laufzeit- Speichersegment für eine adressierbare Speicherung während der Ausführung des Applets auf; diese können in irgendeiner herkömmlichen Weise zugewiesen werden. In dieser Ausführungsform ruft das OS 35 den Emulator 39 im Schritt 411 auf. Der Schritt 412 weist ein Feld oder einen Bereich von Adressen im RAM 22,
  • Fig. 1, zur Speicherung des Codes des Applets 362 zu, und ein anderes Feld für das Applet, um es als einen Lauftzeit-Arbeitsspeicher zu verwenden; diese beiden Felder bilden zusammen die Sandbox, in der das Applet sicher laufen kann, ohne irgendein anderes Applet, Anwendungsprogramm oder andere Einrichtung des Systems zu beeinflussen. Es wird eine WX86-Sandbox für jede Sicherheitsdomäne geben -- das heißt, alle Steuerungen mit denselben Sicherheitseinstellungen spielen in derselben Sandbox. Da Sicherheitseinstellungen einen einheitlichen Ressourcen-Lokalisierer (URL) einer Web-Seite umfassen, weist jede offene Web-Seite mindestens eine Sandbox auf. In der Regel werden alle Steuerungen auf derselben Web-Seite sich in derselben Sandbox befinden. Obwohl ihre üblichen Schnittstellen nicht sicher sind, sind Zwischen-Applet-Aufrufe innerhalbe einer Sandbox akzeptabel.
  • Die Schritte 420 bereiten ein Applet zur Ausführung vor.
  • Der Schritt 421 ersetzt die statischen Verknüpfungen des Applets durch Verknüpfungen mit Thunk-Modulen. Das heißt, der Emulator 39 findet alle Aufrufe an APIs 352-354 innerhalb des Codes des Applets 362 und ändert sich in Aufrufe der entsprechenden Thunks 391-393. Eine statische Verknüpfung ist eine Verknüpfung, die während der Ausführung des Applets konstant bleibt. Eine DLL, oder dynamische Verknüpfungsbibliothek, ist eine Bibliothek ausführbarer Funktionen oder Daten, die durch eine Windows-Anwendung verwendet werden kann. Typischerweise stellt eine DLL eine oder mehrere bestimmte Funktionen bereit, und auf eine DLL wird zugegriffen, indem entweder eine statische oder dynamische Verknüpfung mit der DLL erzeugt wird. DLL- Dateien enden in der folgenden Beschreibung mit der Dateikennung .dll. Eine Thunk-DLL ist eine sichere API innerhalb der Sandbox. Die Thunk-DLLs blockieren oder beschränkten viele APIs, die als nicht sicher erachtet werden. Zum Beispiel wird CreateFile nur an bekannten Stellen erlaubt. Entsprechend wird es einem Applet nicht erlaubt, einen weiteren Prozeß zu erzeugen, um Paßwörter aufzuzeichnen. Wie oben beschrieben, übergeben einige Thunks die Steuerung an die entsprechende API. Zum Beispiel bewirken die Win32-APIs mit dem Namen "CreateWindow", "CreateDialog", "Createlcon", "CreateCursor" und ähnliche Funktionen keine anderen Prozesse, und können nicht vertrauenswürdigen Code erlaubt werden. Andererseits muß dafür gesorgt werden, daß bestimmte andere APIs für nicht vertrauenswürdigen Code vollständig nicht verfügbar sind. Zum Beispiel würde das Zulassen von "CreateProcess" es dem nicht vertrauenswürdigen Applet gestatten, ein weiteres Programm außerhalb der Sandbox auszuführen; Operationen, wie "ExitWindowsEx()" werden völlig blockiert, so daß der nicht vertrauenswürdige Code den gegenwärtigen Benutzer nicht abmelden oder den Computer abschalten kann. Ein Thunk, wie 393 blockiert eine API, indem er einen Fehlercode an die Steuerung zurückgibt, wie durch Leitung 395 symbolisiert.
  • Einige APIs können unter gewissen Umständen oder mit bestimmten Modifikationen zugelassen werden. In diesem Fall führt ein Thunk, wie 392 interne Operationen aus, nach denen er entweder die entsprechende API 353 aufruft oder blockiert, oder modifizierte Parameter an die API übergibt. Zum Beispiel sendet "SendMessage()" normalerweise eine Nachricht an ein Fenster. Der SendMessage-Thunk erlaubt es einer ActiveX-Control, irgendeine Nachricht an Fenster zu senden, die durch jene Steuerung erzeugt worden sind. Jedoch blockiert der Thunk alle Nachrichten, die zum Web-Browser oder einem anderen Anwendungsprogramm gehören. Dies hindert eine Steuerung daran, eine Bresche in die Sicherheit zu schlagen, indem sie eine WM_CHAR-Nachricht sendet, um einen Tastenanschlag zu simulieren, der durch ein Fenster ausgeführt werden soll, das zu einem anderen Programm gehört.
  • Ein anderes Beispiel beinhaltet Win 32 APIs, wie "GlobalAlloc", "HeapCreate", die normalerweise Speicher an irgendeiner Stelle zuweisen. Die Thunks für diese APIs enthalten den gesamten Code der entsprechenden APIs, der neu kompiliert ist, um insgesamt im Sandbox-Speicher zu laufen, und in der Lage ist, Speicher nur innerhalb der Grenzen der Sandbox zuzuweisen.
  • Obwohl es hier nicht gezeigt wird, ist es auch möglich, einen Thunk eine andere API aufrufen zu lassen, als er es normalerweise tun würde, oder um unter mehreren APIs abhängig von Parametern des Aufrufs vom Applet auszuwählen.
  • Schritt 422 kompiliert dann den Code des Applets in Objektcode, der durch den Emulator 39, Fig. 2 ausgeführt werden kann. Die Kompilierung kann mit einem Mal oder teilweise vonstatten gehen, wie der Code benötigt wird; der kompilierte Code wird in einen kompilierter Zwischenspeicher 357, Fig. 4 abgelegt, der außerhalb der Sandbox angeordnet ist. Eine Kompilierung auf diese Art ist gebräuchlich und ist für die Erfindung selbst nicht relevant.
  • Der Schritt 423 fügt einen Prüfcode in den eigenen Code des Applets ein, um die Verbote gegenüber unzulässigen Speicherverweisen zu verstärken. Dieser Prüfcode, der als "Schnüffel-Code" bezeichnet wird, überprüft alle Speicherlese- und Schreibvorgänge, die durch den Code des Applets vorgenommen werden, und erlaubt oder verbietet deren Auftreten. Indem Applets daran gehindert werden, auf Speicher außerhalb der Sandbox zuzugreifen, wird die Sicherheit des Applets erhöht. Indem der gesamte Speichers dem Applet nur aus dem vorher zugewiesenen Bereich bereitgestellt wird, wird der Schnüffel-Code-Zusatz reduziert und es führt zu einer effizienten Überprüfung des Speicherbereichs. Es werden zusätzliche Optimierungstechniken hinzugefügt, indem der Code auf einem Basisblockniveau kompiliert wird. Wenn zum Beispiel mehrere Speicherverweise durch das Applet vorgenommen werden, die dasselbe Register verwenden, könnte der Compiler vielmehr den gesamten Bereich, der durch dieses Register adressierbar ist, nur einmal überprüfen, als getrennte Aufrufe an den Schnüffel-Code für jeden Zugriff zu erzeugen. Detaillierte Beispiele werden in Verbindung mit Fig. 4 gezeigt. Im Grunde läßt es der Schnüffel-Code zu, daß das Applet nur auf RAM-Adressen innerhalb der zugewiesen Sandbox und innerhalb eines bestimmten anderen Speichers verweist, der das System nicht beschädigen kann. (Obwohl der Emulator 39 keine Speicherverweise außerhalb der Sandbox zuläßt, besitzt er die Fähigkeit, Speicherbereich zur Sandbox hinzuzufügen. Für Zwecke, wie geräteunabhängige Pixelmuster-Bilder, ist der zusätzliche Schnüffel-Codezusatz kleiner als die sonst erforderliche Anstrengung, die Bilder in den anfänglichen Sandbox-Bereich zu kopieren.)
  • Die Schritte 430 führen das Applet aus. Der Schritt 431 folgt der Befehlsabfolge.
  • Wenn der gegenwärtige Befehl ein Aufruf an eine API ist, entscheidet die durch den Schritt 421 plazierte Verknüpfung, ob der Aufruf bei Schritt 432 komplett blockiert wird, bei Schritt 433 ausgeführt wird oder bei Schritt 434 weiter verarbeitet wird, und dann entweder blockiert oder zugelassen wird.
  • Wenn der gegenwärtige Befehl ein Speicherverweisbefehl, wie LOAD oder STORE ist, erlaubt der Schritt 435 dem Schritt 436, den Befehl auszuführen, wenn er auf eine Adresse innerhalb seiner Sandbox verweist. Wenn nicht, stellt der Schritt 437 fest, ob der Verweis sonst erlaubt ist. Wenn dem so ist, führt der Schritt 435 ihn aus; andernfalls blockiert der Schritt 438 den Zugriff und gibt einen Fehler zurück. Der Schnüffel-Code implementiert diese Schritte. Andere X86-Befehle werden durch den Schritt 436 direkt ausgeführt. Nach jedem Befehl kehrt die Kontrolle an Schritt 431 zurück. Der Prozeß 400 geht weiter, bis die Wirtsanwendung ihn beendet.
  • In einigen Systemen kann die Ausführung einer API durch einen Block, wie 433 eine weitere Sicherheitspreisgabe darstellen. Wenn ein Argument einer API ein Zeiger auf Daten in der Sandbox ist, gibt es eine kurze Zeitspanne zwischen der Zeit, zu der ein Thunk die Inhalte des Speichers als gültig bestätigt, auf den gezeigt wird, und dem tatsächlichen Aufruf der API. In einem Applet mit mehreren Teilprozessen, könnte ein anderer Ausführungsteilprozeß innerhalb des Applets die Inhalte des Speichers ändern, auf den gezeigt wird, und könnte dadurch nicht als gültig bestätigte Daten an die API übertragen. Um einen solchen Angriff zu verhindern, führt der Block 433-1 eine "Detailkopie" der Argumente einer API durch, und Block 433-2 macht Detailkopien von jedem Rückgabewert von der API. Insbesondere wenn der Schritt 433 eine API ausführt, kopiert der Schritt 433-1 zuerst alle Argumente, die an die API übergeben werden, von ihrer Speicherstelle innerhalb der Sandbox zu einer anderen Speicherstelle außerhalb der Sandbox, bevor die API tatsächlich aufgerufen wird. Da das Applet selbst nicht auf diese Kopie zugreifen kann, bestätigt die API nur Daten als gültig, die schon gesichert worden sind. Der Schritt 433 lagert dann alle Rückgabewerte außerhalb der Sandbox ab; nachdem die API die Ausführung vollendet, kopiert der Schritt 433-2 den Rückgabewert innerhalb der Sandbox für die Verwendung durch das Applet. Das Detailkopieren kann selektiv verwendet werden, falls gewünscht.
  • Fig. 4 ist ein Speicherabbild des Systems RAM 25, das nur die Bereiche zeigt, die für die Erfindung relevant sind. Der vorher zugewiesene Bereich 251 bildet die Sandbox. Er enthält ein Anfangsspeichersegment zur Speicherung eines Applets 362, ein Laufzeitspeichersegment 252 für einen adressierbaren Arbeitsspeicher während der Ausführung des Applets und ein Segment zur Speicherung der Übersetzungscode-Thunks 391-393 (hier nur als Thunk 391 gezeigt). Der Speicher 22 außerhalb der Sandbox 251 enthält die API-DLLs, hier durch 352 dargestellt, und den Kernel32 355. Andere Arbeitsspeicherbereiche werden als 356 dargestellt. Der kompilierter Zwischenspeicher 357 liegt ebenfalls außerhalb der Sandbox 215. Die Speicherstelle von WHKRNL32 352 außerhalb der Sandbox 215 ist besonders wichtig, da es hier ist, wo das Sicherheitsverfahren tatsächlich implementiert ist; wenn er innerhalb der Sandbox liegen würde, könnte ein bösartiges Applet in der Lage sein, die Sicherheit zu beeinträchtigen, indem es ihn modifiziert.
  • Das folgende Beispiel stellt die Operation der Erfindung dar. Wie vorher erwähnt, nutzt diese Ausführungsform den vorher erwähnten Wx86VM-Emulator, um x86-Win32-Applets oder Steuerungen unmodifiziert auf einer x86-Plattform unter dem Windows95- oder Windows NT-Betriebssystem laufen zu lassen.
  • Ein Web-Browser wie der Microsoft Internet Explorer lädt eine als foo.ocx bezeichnete ActiveX-Control (Applet) aus dem Internet auf das Festplattenlaufwerk bei c:\temp\foo.ocx herunter. Die Dateikennung .ocx zeigt eine ActiveX-Control an.
  • Der Internet Explorer sucht dann nach dem Vorhandensein des Wx86VM im System. Wenn die Wx86VM-Komponente verfügbar ist, ruft der Internet Explorer sie auf und stellt alle sicherheitsrelvanten Informationen über die Steuerung bereit und fragt an, die Control zu laden. Wx86VM-Komponenten schauen auf die Sicherheitsinformation, mit der der Internet Explorer sie beliefert hat, und entschieden, ob sie sie in der Wx86VM starten oder sie ein Objekt-Bindeprogramm OLE32 handhabt.
  • Wenn die Control im Wx86VM-Emulator gestartet werden soll, dann erzeugt Wx86VM einen zugewiesenen Speicherbereich oder eine Sandbox 251 für die ActiveX-Control. Wx86VM lädt die ActiveX-Control foo.ocx, (als 362 in Fig. 4 gezeigt) in die Sandbox.
  • Der Wx86VM lädt API-Thunk-DLLs (sichere APIs) wie 391 in die Sandbox. Der Wx86VM ist in der Lage, die Namen der DLLs innerhalb des Laders des Betriebssystems zu modifizieren, wie vollständiger in der vorher erwähnten Anmeldung (Inhaltsvermerk 777.016US1) erläutert. Dies gestattet es dem Wx86VM Thunk-Code zwischen das x86-Bild und die Maschinen-API einzusetzen, um mit Unterschieden der Aufrufkonventionen umzugehen. Die Liste der neu abzubildenden Namen ist in einer Registerdatei gespeichert. Zum Beispiel wird kernel32 (355 in Fig. 4) auf wikrnl32 (als Thunk 391 in Fig. 4 gezeigt) neu abgebildet, und user32.dll wird als wiuser32.dll neu abgebildet. Ein API-Thunk besteht aus zwei DLLs: einen DLL mit dem Präfix "wi", die innerhalb der Wx86VM läuft und der folglich nicht vertraut wird, und einer DLL mit dem Präfix "wh", die außerhalb der Wx86VM läuft und der vertraut wird, ein Sicherheitsverfahren zu implementieren.
  • "Wi"-DLLs weisen dieselben Exporte, wie die Maschinen-DLL auf, für die sie eingesetzt werden. Diese Exporte sind dafür verantwortlich, aus der Sandbox auf die Wx86.dll umzuschalten, die dann den geeigneten Thunk im sicheren Modus aufruft; dies implementiert ferner das Sicherheitsverfahren für jene API. Wenn es keine Sicherheitsbedeutung für eine bestimmte API gibt, dann ruft der Thunk nur die Maschinen-API auf. Dieser Aufruf, der als "BOP" bezeichnet wird, ist typischerweise ein ungültiger x86-Operationscode, der der Wx86.dll signalisiert, daß es notwendig ist, daß eine Modusumschaltung stattfindet. Der BOP- Befehl weist die Form "BOP (DLL #, API #)" auf. Wenn der Wx86VM den BOP an die wirtsseitige Thunk-DLL absetzt, die das Präfix "wh" aufweist, (wie whkrnl32, 352 in Fig. 4), hat diese DLL Zugriff auf den Registersatz und Stapel der Sandbox, so daß die DLL Parameter vom Stapel der Sandbox auf den Maschinenstapel kopieren kann, die Argumente der API für gültig erklären, den Aufruf vornehmen und den Rückgabewert in das EAX-Register der Sandbox bewegen kann.
  • Wenn zum Beispiel ein x86-Applet oder -Control eine statische Verknüpfung mit kernel32!CreateFile aufweist, löst der Wx86VM die Verknüpfung zu wikrnl32!CreateFile auf. Wenn das Applet CreateFile aufruft, führt wikrnl32!CreateFile einen BOP- Befehl aus, der von der Sandbox auf maschinenspezifisch umschaltet, und Wx861DispatchBop() in Wx86VMI.dll aufruft. Wx86DispatchBop() setzt den Aufruf an whkrnl32!whCreateFile() ab. Diese Funktion ruft den maschinenspezifischen kernel32!CreateFile() auf, kopiert den Rückgabewert in das simulierte EAX-Register, und springt zurückt.
  • Der Wx86VM lädt auch den Code des Emulators 39, Wx86cpu.dll. Während der Ausführung eines Applets, hält der Emulation an, wenn der Prozessor einen BOP-Befehl antrifft.
  • Die Ausführung des Applets beginnt mit der Kompilierung des benötigten Codes und indem der Code in den kompilierter Zwischenspeicher gegeben wird. Der kompilierte Code weist Schnüffel-Prüfungen in sich auf, um zu verifizieren, daß die Speicher-Lese- oder Speicher-Schreiboperation eine sichere Operation ist. Wenn der Speicher, auf den zugegriffen wird, außerhalb des vorbestimmten Sandboxbereichs liegt, wird die Operation, die versucht, auf den Speicher zuzugreifen, fehlschlagen. Wenn zum Beispiel das Applet foo.ocx den Befehl MOV EAX,[ESI+4] enthält, dann wird der Compiler den Schnüffel-Code vor dem MOV- Befehl einfügen, um zu verifizieren, daß der Befehl sicher ist. So wird der folgende Befehl
  • MOV EAX, [ESI+4]
  • zu:
  • LEA ECX, [ESI+4]
  • CALL SNIFFREAD4.ECX
  • MOV EAX, [ECX]
  • nachdem der Schnüffel-Code eingefügt worden ist.
  • Da der Schnüffel-Code einen Zusatz hinzufügt, können zusätzliche Optimierungstechniken angewendet werden, wenn der Code auf einem Basisblockniveau kompiliert wird. Wenn zum Beispiel das Applet mehrere Speicherverweise macht, die dasselbe Register verwenden, kontrolliert der Compiler den gesamten Bereich nur einmal und erzeugt keine getrennten Schnüffel-Aufrufe. So wird, wenn das Applet foo.ocx die folgenden Befehle enthält:
  • MOV EAX, [ESI+4]
  • MOV EDX, [ESI+8]
  • der Schnüffel-Code eher eingefügt als:
  • LEA ECX, [ESI+4]
  • CALL SNIFFREAD8.ECX
  • MOV EAX,[ECX]
  • MOV EDX,[ECX+4]
  • als daß der Schnüffel-Code in der weniger effizienten Weise:
  • LEA ECX,[ESI+4]
  • CALL SNIFFREAD4.ECX
  • MOV EAX, [ECX]
  • LEA ECX, [ESI+4]
  • CALL SNIFFREAD4.ECX
  • MOV EDX, [ECX]
  • eingefügt wird.
  • Die obige Beschreibung ist illustrativ und nicht beschränkend. Es werden Fachleuten bei der Durchsicht der obigen Beschreibung viele andere Ausführungsformen offensichtlich werden. Der Rahmen der Erfindung sollte daher unter Bezugnahme auf die beigefügten Ansprüche zusammen mit dem vollen Rahmen der Äquivalente bestimmt werden, auf die solche Ansprüche einen Rechtsanspruch erheben.

Claims (27)

1. Verfahren zur Ausführung eines nicht vertrauenswürdigen Programms (36), das zur direkten Ausführung auf einer Computer-Plattform (20, 35) geschrieben ist, die einen Speicher (22) und einen Satz Anwendungsprogramm-Schnittstellenmodule (352-354) aufweist, durch Steuerung der Zugriffe, die durch das nicht vertrauenswürdige Programm außerhalb eines begrenzten Speicherbereichs (412) vorgenommen werden, in den es geladen worden ist und von dem es aus ausgeführt wird, gekennzeichnet durch Modifizieren (421, 423) des Codes des nicht vertrauenswürdigen Programms (36) selbst, so daß der nicht vertrauenswürdige Programmcode selbst Zugriffe außerhalb des begrenzten Speicherbereichs während der Zeit kotrolliert, in der die Computer-Plattform den Code des nicht vertrauenswürdigen Programms ausführt.
2. Verfahren nach Anspruch 1, wobei das Modifizieren des Code des nicht vertrauenswürdigen Programms (36) das Einfügen (423) von Prüfcode (394) in den nicht vertrauenswürdigen Programmcode zur Überwachung des Speicherzugriffscode im ursprünglichen nicht vertrauenswürdigen Programm aufweist.
3. Verfahren nach Anspruch 2, wobei der Prüfcode in den nicht vertrauenswürdigen Programmcode nach dem Kompilieren (422) des nicht vertrauenswürdigen Programms (36) eingefügt wird.
4. Verfahren nach Anspruch, 2, wobei der Prüfcode an Speicherblöcken arbeitet, die größer als einzelne Speicheradressen sind.
5. Verfahren nach Anspruch 2, wobei der in den nicht vertrauenswürdigen Programmcode eingefügte Prüfcode (435, 437, 438) mindestens einige Speicherverweise außerhalb des begrenzten Speicherbereichs verbietet.
6. Verfahren nach Anspruch 5, wobei der in den nicht vertrauenswürdigen Programmcode eingefügte Prüfcode (437) bestimmte Speicherverweise außerhalb des begrenzten Speicherbereichs erlaubt.
7. Verfahren nach Anspruch 1, wobei das Modifizieren des Codes des nicht vertrauenswürdigen Programms (36) das Ersetzen (421) von Code im ursprünglichen Programm zum Aufrufen der Anwendungsprogramm-Schnittstellen durch Code aufweist, der stattdessen Übersetzungsmodule aufruft.
8. Verfahren nach Anspruch 7, wobei der Ersetzungsschritt das Ersetzen von statischen Steuerungsverknüpfungen im nicht vertrauenswürdigen Programmcode durch einen Thunk (391-393) aufweist.
9. Verfahren nach Anspruch 7, wobei unterschiedliche Anwendungsprogramm-Schnittstellen mit unterschiedlichen Übersetzungsmodule verbunden sind.
10. Verfahren nach Anspruch 9, wobei einige der Übersetzungsmodule die Ausführung ihrer zugehörigen Anwendungsprogramm-Schnittstellen unbedingt verbieten (432).
11. Verfahren nach Anspruch 9, wobei einige der Übersetzungsmodule die Ausführung ihrer zugehörigen Anwendungsprogramm-Schnittstellen unbedingt erlauben (433).
12. Verfahren nach Anspruch 9, wobei einige der Übersetzungsmodule ferner eine Anfrage nach einer Anwendungsprogramm- Schnittstelle verarbeiten (434) und dann entweder seine Ausführung erlauben oder verbieten.
13. Verfahren nach Anspruch 1, wobei das Modifizieren des Codes des nicht vertrauenswürdigen Programms (36) sowohl aufweist:
Einfügen (423) von Prüfcode in den nicht vertrauenswürdigen Programmcode zur Überwachung des Speicherzugriffscodes im ursprünglichen nicht vertrauenswürdigen Programm; als auch Ersetzen (421) von Code im ursprünglichen Programm zum Aufrufen der Anwendungsprogramm-Schnittstellen durch Code, der stattdessen Übersetzungsmodule aufruft.
14. Verfahren nach Anspruch 13, ferner gekennzeichnet durch Laden mehrerer zusätzlicher Codemodule in den begrenzten Speicherbereich, wobei das nicht vertrauenswürdige Programm auf die zusätzlichen Codemodule (391) zugreifen kann
15. Verfahren nach Anspruch 14, wobei die zusätzlichen Module Übersetzungsmodule aufweisen.
16. Medium, das Darstellungen von Computerbefehlen und Daten zur Ausführung des Verfahrens nach Anspruch 1 aufweist.
17. Emulator zum Ausführen eines in Maschinencode geschriebenen nicht vertrauenswürdigen Programms (36), das direkt durch einen maschinenspezifischen Prozessor (21) ausführbar ist und Anwendungsprogramm-Schnittstellen (352-354) und einen begrenzten Speicherbereich (215) zum Halten des nicht vertrauenswürdigen Programms einsetzt, dadurch gekennzeichnet, daß der Emulator betriebsfähig ist, den Code eines nicht vertrauenswürdigen Programms (36) so zu modifizieren (421, 423), daß wenn das nicht vertrauenswürdige Programm (36) ausgeführt wird, der nicht vertrauenswürdige Programmcode dafür sorgt, Zugriffe außerhalb des begrenzten Speicherbereichs zu kontrollieren.
18. Emulator nach Anspruch 17, wobei der Emulator betriebsfähig ist, den Code des nicht vertrauenswürdigen Programms (36) durch Einfügen (423) von Prüfcode (394) in den nicht vertrauenswürdigen Programmcode zur Überwachung von Speicherzugriffscode im ursprünglichen nicht vertrauenswürdigen Programm zu modifizieren.
19. Emulator nach Anspruch 18, wobei der in den nicht vertrauenswürdigen Programmcode eingefügte Prüfcode mindestens einige Speicherverweise außerhalb des begrenzten Speicherbereichs verbietet (435, 437, 438).
20. Emulator nach Anspruch 17, wobei der Emulator betriebsfähig ist, den Code des nicht vertrauenswürdigen Programms (36) durch Ersetzen (421) von Code im ursprünglichen Programm zum Aufrufen von Anwendungsprogramm-Schnittstellen durch Code, der stattdessen Übersetzungsmodule aufruft, zu modifizieren.
21. Emulator nach Anspruch 20, wobei die Übersetzungsmodule Thunks (391-393) sind.
22. Emulator nach Anspruch 20, wobei unterschiedliche Übersetzungsmodule betriebsfähig sind, selektiv die Ausführung der Anwendungsprogramm-Schnittstellen erlauben und verbieten, die mit den unterschiedlichen Übersetzungsmodulen verbunden sind.
23. Aufzeichnungsmedium, das Daten speichert, die für computerimplementierbare Prozessorschritte kennzeichnend sind, die zur Erzeugung eines Emulators nach einem der Ansprüche 17-22 innerhalb eines programmierbaren Computers angepaßt sind.
24. Aufzeichnungsmedium, das Daten speichert, die für computerimplementierbare Prozessorschritte kennzeichnend sind, die angepaßt sind, einen programmierbaren Computer dazu veranlassen, ein Verfahren nach einem der Ansprüche 1-16 auszuführen.
25. Aufzeichnungsmedium nach einem der Ansprüche 23 oder 24, das eine Computerplatte aufweist.
26. Computerplatte nach Anspruch 25, die eine magnetische, magnetooptische oder optische Platte aufweist.
27. Aufzeichnungsmedium nach Anspruch 23 oder 24, das ein elektrisches Signal aufweist, das über ein Kommunikationsnetz übertragen wird.
DE69802834T 1997-08-28 1998-08-25 Verbesserung der sicherheit für nicht-vertrauten ausführbaren code Expired - Lifetime DE69802834T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/919,844 US6275938B1 (en) 1997-08-28 1997-08-28 Security enhancement for untrusted executable code
PCT/US1998/017553 WO1999010795A1 (en) 1997-08-28 1998-08-25 Security enhancement for untrusted executable code

Publications (2)

Publication Number Publication Date
DE69802834D1 DE69802834D1 (de) 2002-01-17
DE69802834T2 true DE69802834T2 (de) 2002-09-12

Family

ID=25442736

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69802834T Expired - Lifetime DE69802834T2 (de) 1997-08-28 1998-08-25 Verbesserung der sicherheit für nicht-vertrauten ausführbaren code

Country Status (5)

Country Link
US (1) US6275938B1 (de)
EP (1) EP1021753B1 (de)
JP (2) JP3572016B2 (de)
DE (1) DE69802834T2 (de)
WO (1) WO1999010795A1 (de)

Families Citing this family (287)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7147068B2 (en) 1994-10-14 2006-12-12 Weatherford / Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US6868906B1 (en) 1994-10-14 2005-03-22 Weatherford/Lamb, Inc. Closed-loop conveyance systems for well servicing
US7013997B2 (en) 1994-10-14 2006-03-21 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7100710B2 (en) 1994-10-14 2006-09-05 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7036610B1 (en) 1994-10-14 2006-05-02 Weatherford / Lamb, Inc. Apparatus and method for completing oil and gas wells
US7108084B2 (en) 1994-10-14 2006-09-19 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7040420B2 (en) 1994-10-14 2006-05-09 Weatherford/Lamb, Inc. Methods and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US7228901B2 (en) 1994-10-14 2007-06-12 Weatherford/Lamb, Inc. Method and apparatus for cementing drill strings in place for one pass drilling and completion of oil and gas wells
US8079086B1 (en) * 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US6536520B1 (en) 2000-04-17 2003-03-25 Weatherford/Lamb, Inc. Top drive casing system
US7509722B2 (en) 1997-09-02 2009-03-31 Weatherford/Lamb, Inc. Positioning and spinning device
US6742596B2 (en) 2001-05-17 2004-06-01 Weatherford/Lamb, Inc. Apparatus and methods for tubular makeup interlock
IL121815A (en) * 1997-09-22 2000-09-28 Security 7 Software Ltd Method and system for the identification and the suppression of executable objects
US7047369B1 (en) * 1997-09-25 2006-05-16 Aladdin Knowledge Systems Ltd. Software application environment
US6584495B1 (en) * 1998-01-30 2003-06-24 Microsoft Corporation Unshared scratch space
US6480952B2 (en) 1998-05-26 2002-11-12 Advanced Micro Devices, Inc. Emulation coprocessor
GB9815809D0 (en) 1998-07-22 1998-09-16 Appleton Robert P Casing running tool
GB2340858A (en) 1998-08-24 2000-03-01 Weatherford Lamb Methods and apparatus for facilitating the connection of tubulars using a top drive
GB2340859A (en) 1998-08-24 2000-03-01 Weatherford Lamb Method and apparatus for facilitating the connection of tubulars using a top drive
GB2340857A (en) 1998-08-24 2000-03-01 Weatherford Lamb An apparatus for facilitating the connection of tubulars and alignment with a top drive
JP2000122814A (ja) * 1998-10-15 2000-04-28 Hitachi Ltd 拡張型ネットワーク接続二次記憶方法及び装置
US6691230B1 (en) * 1998-10-15 2004-02-10 International Business Machines Corporation Method and system for extending Java applets sand box with public client storage
GB9825102D0 (en) 1998-11-16 1999-01-13 Insignia Solutions Plc Computer system
US7181486B1 (en) 1998-12-07 2007-02-20 Network Ice Corporation Method and apparatus for remote installation of network drivers and software
JP4501280B2 (ja) 1998-12-09 2010-07-14 インターナショナル・ビジネス・マシーンズ・コーポレーション ネットワークおよびコンピュータシステムセキュリティを提供する方法および装置
DE69926802D1 (de) 1998-12-22 2005-09-22 Weatherford Lamb Verfahren und vorrichtung zum profilieren und verbinden von rohren
US7188687B2 (en) 1998-12-22 2007-03-13 Weatherford/Lamb, Inc. Downhole filter
GB2345074A (en) 1998-12-24 2000-06-28 Weatherford Lamb Floating joint to facilitate the connection of tubulars using a top drive
GB2347441B (en) 1998-12-24 2003-03-05 Weatherford Lamb Apparatus and method for facilitating the connection of tubulars using a top drive
US6896075B2 (en) 2002-10-11 2005-05-24 Weatherford/Lamb, Inc. Apparatus and methods for drilling with casing
US7311148B2 (en) 1999-02-25 2007-12-25 Weatherford/Lamb, Inc. Methods and apparatus for wellbore construction and completion
US6857487B2 (en) 2002-12-30 2005-02-22 Weatherford/Lamb, Inc. Drilling with concentric strings of casing
FR2790844B1 (fr) * 1999-03-09 2001-05-25 Gemplus Card Int Procede et dispositif de surveillance du deroulement d'un programme, dispositif programme permettant la surveillance de son programme
US7451484B1 (en) * 1999-05-27 2008-11-11 International Business Machines Corporation Method for enabling a program written in untrusted code to interact with a security subsystem of a hosting operating system
US6779117B1 (en) * 1999-07-23 2004-08-17 Cybersoft, Inc. Authentication program for a computer operating system
US7346929B1 (en) 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
US7089591B1 (en) 1999-07-30 2006-08-08 Symantec Corporation Generic detection and elimination of marco viruses
US6968539B1 (en) * 1999-09-30 2005-11-22 International Business Machines Corporation Methods and apparatus for a web application processing system
US7281268B2 (en) * 1999-11-14 2007-10-09 Mcafee, Inc. System, method and computer program product for detection of unwanted processes
US8006243B2 (en) 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US7336790B1 (en) 1999-12-10 2008-02-26 Sun Microsystems Inc. Decoupling access control from key management in a network
US7765581B1 (en) 1999-12-10 2010-07-27 Oracle America, Inc. System and method for enabling scalable security in a virtual private network
CA2393754C (en) 1999-12-22 2009-10-20 Weatherford/Lamb, Inc. Drilling bit for drilling while running casing
GB2359908B (en) * 2000-03-04 2004-09-15 Motorola Inc Communication system architecture and method of controlling data download to subscriber equipment
US6836888B1 (en) * 2000-03-17 2004-12-28 Lucent Technologies Inc. System for reverse sandboxing
US7334650B2 (en) 2000-04-13 2008-02-26 Weatherford/Lamb, Inc. Apparatus and methods for drilling a wellbore using casing
US7325610B2 (en) 2000-04-17 2008-02-05 Weatherford/Lamb, Inc. Methods and apparatus for handling and drilling with tubulars or casing
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
US7089428B2 (en) 2000-04-28 2006-08-08 Internet Security Systems, Inc. Method and system for managing computer security information
AU2001257400A1 (en) 2000-04-28 2001-11-12 Internet Security Systems, Inc. System and method for managing security events on a network
GB0010378D0 (en) 2000-04-28 2000-06-14 Bbl Downhole Tools Ltd Expandable apparatus for drift and reaming a borehole
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
US7827085B1 (en) 2000-06-23 2010-11-02 Ebs Group Limited Conversational dealing in an anonymous trading system
US7333952B1 (en) 2000-06-23 2008-02-19 Ebs Group Limited Compound order handling in an anonymous trading system
US6983259B1 (en) 2000-06-23 2006-01-03 Ebs Group Limited Anonymous trading system
US7024386B1 (en) 2000-06-23 2006-04-04 Ebs Group Limited Credit handling in an anonymous trading system
US7184982B1 (en) 2000-06-23 2007-02-27 Ebs Group Limited Architecture for anonymous trading system
GB2364586B (en) 2000-06-23 2004-06-16 Ebs Nominees Ltd Deal matching in an anonymous trading system
US7366690B1 (en) 2000-06-23 2008-04-29 Ebs Group Limited Architecture for anonymous trading system
US6907531B1 (en) 2000-06-30 2005-06-14 Internet Security Systems, Inc. Method and system for identifying, fixing, and updating security vulnerabilities
US7162649B1 (en) 2000-06-30 2007-01-09 Internet Security Systems, Inc. Method and apparatus for network assessment and authentication
US7093239B1 (en) 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
GB2365463B (en) 2000-08-01 2005-02-16 Renovus Ltd Drilling method
US7178166B1 (en) * 2000-09-19 2007-02-13 Internet Security Systems, Inc. Vulnerability assessment and authentication of a computer by a local scanner
US9027121B2 (en) 2000-10-10 2015-05-05 International Business Machines Corporation Method and system for creating a record for one or more computer security incidents
US7086090B1 (en) * 2000-10-20 2006-08-01 International Business Machines Corporation Method and system for protecting pervasive devices and servers from exchanging viruses
US7146305B2 (en) 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US20020066022A1 (en) * 2000-11-29 2002-05-30 Brad Calder System and method for securing an application for execution on a computer
US7779117B2 (en) 2002-05-31 2010-08-17 Aol Inc. Monitoring digital images
US7130466B2 (en) 2000-12-21 2006-10-31 Cobion Ag System and method for compiling images from a database and comparing the compiled images with known images
US7260845B2 (en) * 2001-01-09 2007-08-21 Gabriel Kedma Sensor for detecting and eliminating inter-process memory breaches in multitasking operating systems
US7613930B2 (en) * 2001-01-19 2009-11-03 Trustware International Limited Method for protecting computer programs and data from hostile code
WO2002062049A2 (en) 2001-01-31 2002-08-08 Timothy David Dodd Method and system for calculating risk in association with a security audit of a computer network
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
WO2002093334A2 (en) * 2001-04-06 2002-11-21 Symantec Corporation Temporal access control for computer virus outbreaks
US20020154635A1 (en) * 2001-04-23 2002-10-24 Sun Microsystems, Inc. System and method for extending private networks onto public infrastructure using supernets
AU2002344308A1 (en) * 2001-05-31 2002-12-09 Internet Security Systems, Inc. Method and system for implementing security devices in a network
US7237264B1 (en) 2001-06-04 2007-06-26 Internet Security Systems, Inc. System and method for preventing network misuse
US20030167350A1 (en) * 2001-06-07 2003-09-04 Curl Corporation Safe I/O through use of opaque I/O objects
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US6920550B2 (en) * 2001-11-15 2005-07-19 Hewlett-Packard Development Company, L.P. System and method for decoding and executing program binaries
US6915513B2 (en) * 2001-11-29 2005-07-05 Hewlett-Packard Development Company, L.P. System and method for dynamically replacing code
US6928536B2 (en) * 2001-11-29 2005-08-09 Hewlett-Packard Development Company, L.P. Dynamic execution layer interface for replacing instructions requiring unavailable hardware functionality with patch code and caching
US7051340B2 (en) * 2001-11-29 2006-05-23 Hewlett-Packard Development Company, L.P. System and method for isolating applications from each other
US20030101439A1 (en) * 2001-11-29 2003-05-29 Giuseppe Desoli System and method for supporting emulation of a computer system through dynamic code caching and transformation
US6907519B2 (en) 2001-11-29 2005-06-14 Hewlett-Packard Development Company, L.P. Systems and methods for integrating emulated and native code
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
AU2003202876A1 (en) 2002-01-04 2003-07-24 Internet Security Systems, Inc. System and method for the managed security control of processes on a computer system
US7607171B1 (en) 2002-01-17 2009-10-20 Avinti, Inc. Virus detection by executing e-mail code in a virtual machine
US9652613B1 (en) 2002-01-17 2017-05-16 Trustwave Holdings, Inc. Virus detection by executing electronic message code in a virtual machine
US7340777B1 (en) * 2003-03-31 2008-03-04 Symantec Corporation In memory heuristic system and method for detecting viruses
GB0206227D0 (en) 2002-03-16 2002-05-01 Weatherford Lamb Bore-lining and drilling
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US20030182653A1 (en) * 2002-03-22 2003-09-25 Giuseppe Desoli Systems and methods for verifying correct execution of emulated code via dynamic state verification
EP1491017A1 (de) * 2002-03-28 2004-12-29 Oleksiy Yuryevich Shevchenko Verfahren und vorrichtung zum schutz gegen unerlaubter zugriff auf einem komputerspeicher
US20030192035A1 (en) * 2002-04-09 2003-10-09 Duesterwald Ald Evelyn Systems and methods for implementing efficient execution transfers between successive translations of stack-based program code in a virtual machine environment
RU2222043C2 (ru) * 2002-04-15 2004-01-20 Алексей Юрьевич Шевченко Способ защиты памяти компьютеров от несанкционированного доступа и устройство для его осуществления
US7370360B2 (en) 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7155742B1 (en) 2002-05-16 2006-12-26 Symantec Corporation Countering infections to communications modules
US7367056B1 (en) 2002-06-04 2008-04-29 Symantec Corporation Countering malicious code infections to computer files that have been infected more than once
AU2003238908A1 (en) 2002-06-06 2003-12-22 Green Border Technologies Method and system for implementing a secure application execution environment using derived user accounts for internet content
US7421713B2 (en) 2002-06-12 2008-09-02 Matsushita Electric Industrial Co., Ltd. Safe service extension platform
US7418729B2 (en) * 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
US7380277B2 (en) 2002-07-22 2008-05-27 Symantec Corporation Preventing e-mail propagation of malicious computer code
US6994176B2 (en) 2002-07-29 2006-02-07 Weatherford/Lamb, Inc. Adjustable rotating guides for spider or elevator
US7478431B1 (en) 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
US20040025165A1 (en) * 2002-08-05 2004-02-05 Giuseppe Desoli Systems and methods for extending operating system functionality for an application
US7730965B2 (en) 2002-12-13 2010-06-08 Weatherford/Lamb, Inc. Retractable joint and cementing shoe for use in completing a wellbore
US6899186B2 (en) 2002-12-13 2005-05-31 Weatherford/Lamb, Inc. Apparatus and method of drilling with casing
US20040133441A1 (en) * 2002-09-04 2004-07-08 Jeffrey Brady Method and program for transferring information from an application
US7469419B2 (en) * 2002-10-07 2008-12-23 Symantec Corporation Detection of malicious computer code
US7303022B2 (en) 2002-10-11 2007-12-04 Weatherford/Lamb, Inc. Wired casing
US7159149B2 (en) * 2002-10-24 2007-01-02 Symantec Corporation Heuristic detection and termination of fast spreading network worm attacks
US7249187B2 (en) * 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US7631353B2 (en) * 2002-12-17 2009-12-08 Symantec Corporation Blocking replication of e-mail worms
FR2849314B1 (fr) * 2002-12-18 2005-03-04 France Telecom Procede de communication entre deux unites, et composant logiciel de confiance pour sa mise en oeuvre
US7594111B2 (en) * 2002-12-19 2009-09-22 Massachusetts Institute Of Technology Secure execution of a computer program
US7603704B2 (en) * 2002-12-19 2009-10-13 Massachusetts Institute Of Technology Secure execution of a computer program using a code cache
US7296293B2 (en) * 2002-12-31 2007-11-13 Symantec Corporation Using a benevolent worm to assess and correct computer security vulnerabilities
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
US7128154B2 (en) 2003-01-30 2006-10-31 Weatherford/Lamb, Inc. Single-direction cementing plug
USRE42877E1 (en) 2003-02-07 2011-11-01 Weatherford/Lamb, Inc. Methods and apparatus for wellbore construction and completion
GB2414502B (en) 2003-02-27 2007-10-17 Weatherford Lamb Drill shoe
US7503397B2 (en) 2004-07-30 2009-03-17 Weatherford/Lamb, Inc. Apparatus and methods of setting and retrieving casing with drilling latch and bottom hole assembly
GB2428059B (en) 2003-03-05 2007-10-10 Weatherford Lamb Method and apparatus for drilling with casing
GB2416360B (en) 2003-03-05 2007-08-22 Weatherford Lamb Drilling with casing latch
CA2677247C (en) 2003-03-05 2012-09-25 Weatherford/Lamb, Inc. Casing running and drilling system
WO2004079150A2 (en) 2003-03-05 2004-09-16 Weatherford/Lamb, Inc. Full bore lined wellbores
US7203959B2 (en) 2003-03-14 2007-04-10 Symantec Corporation Stream scanning through network proxy servers
KR100509650B1 (ko) * 2003-03-14 2005-08-23 주식회사 안철수연구소 코드 삽입 기법을 이용한 악성 스크립트 감지 방법
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
JP2004302516A (ja) * 2003-03-28 2004-10-28 Ntt Docomo Inc 端末装置およびプログラム
US7370707B2 (en) 2003-04-04 2008-05-13 Weatherford/Lamb, Inc. Method and apparatus for handling wellbore tubulars
US8838950B2 (en) 2003-06-23 2014-09-16 International Business Machines Corporation Security architecture for system on chip
US7194732B2 (en) * 2003-06-26 2007-03-20 Hewlett-Packard Development Company, L.P. System and method for facilitating profiling an application
US7650944B1 (en) 2003-07-11 2010-01-26 Weatherford/Lamb, Inc. Vessel for well intervention
US8271774B1 (en) 2003-08-11 2012-09-18 Symantec Corporation Circumstantial blocking of incoming network traffic containing code
US7464408B1 (en) * 2003-08-29 2008-12-09 Solidcore Systems, Inc. Damage containment by translation
US8539063B1 (en) 2003-08-29 2013-09-17 Mcafee, Inc. Method and system for containment of networked application client software by explicit human input
FR2859548B1 (fr) * 2003-09-09 2005-11-25 France Telecom Procede de surveillance de l'execution de programmes sur un ordinateur
US7421680B2 (en) * 2003-09-22 2008-09-02 Microsoft Corporation Persisted specifications of method pre-and post-conditions for static checking
US7264067B2 (en) 2003-10-03 2007-09-04 Weatherford/Lamb, Inc. Method of drilling and completing multiple wellbores inside a single caisson
US7657938B2 (en) 2003-10-28 2010-02-02 International Business Machines Corporation Method and system for protecting computer networks by altering unwanted network data traffic
US7444678B2 (en) * 2003-10-28 2008-10-28 Aol Llc Securing resources from untrusted scripts behind firewalls
FR2862834B1 (fr) * 2003-11-25 2006-03-10 Sagem Procede et dispositif de video-projection
US7840968B1 (en) 2003-12-17 2010-11-23 Mcafee, Inc. Method and system for containment of usage of language interfaces
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US7783735B1 (en) 2004-03-22 2010-08-24 Mcafee, Inc. Containment of network communication
US7337327B1 (en) 2004-03-30 2008-02-26 Symantec Corporation Using mobility tokens to observe malicious mobile code
US20050246773A1 (en) * 2004-04-29 2005-11-03 Microsoft Corporation System and methods for processing partial trust applications
US8108902B2 (en) * 2004-04-30 2012-01-31 Microsoft Corporation System and method for local machine zone lockdown with relation to a network browser
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7284617B2 (en) 2004-05-20 2007-10-23 Weatherford/Lamb, Inc. Casing running head
US7370233B1 (en) 2004-05-21 2008-05-06 Symantec Corporation Verification of desired end-state using a virtual machine environment
US8707251B2 (en) * 2004-06-07 2014-04-22 International Business Machines Corporation Buffered viewing of electronic documents
US7908653B2 (en) * 2004-06-29 2011-03-15 Intel Corporation Method of improving computer security through sandboxing
US7484247B2 (en) 2004-08-07 2009-01-27 Allen F Rozman System and method for protecting a computer system from malicious software
US7441042B1 (en) 2004-08-25 2008-10-21 Symanetc Corporation System and method for correlating network traffic and corresponding file input/output traffic
US7873955B1 (en) 2004-09-07 2011-01-18 Mcafee, Inc. Solidifying the executable software set of a computer
US7690034B1 (en) 2004-09-10 2010-03-30 Symantec Corporation Using behavior blocking mobility tokens to facilitate distributed worm detection
US8819639B2 (en) * 2004-09-15 2014-08-26 Lakeside Software, Inc. System for selectively blocking execution of applications on a computer system
JP4669687B2 (ja) * 2004-09-27 2011-04-13 東芝キヤリア株式会社 マイクロコンピュータのデータ記憶方法
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
JP4845467B2 (ja) 2004-11-08 2011-12-28 株式会社エヌ・ティ・ティ・ドコモ デバイス管理装置、デバイス及びデバイス管理方法
US7698744B2 (en) 2004-12-03 2010-04-13 Whitecell Software Inc. Secure system for allowing the execution of authorized computer program code
US7636856B2 (en) * 2004-12-06 2009-12-22 Microsoft Corporation Proactive computer malware protection through dynamic translation
US20060123398A1 (en) * 2004-12-08 2006-06-08 Mcguire James B Apparatus and method for optimization of virtual machine operation
US20060156400A1 (en) * 2005-01-06 2006-07-13 Gbs Laboratories Llc System and method for preventing unauthorized access to computer devices
US7456837B2 (en) * 2005-01-10 2008-11-25 International Business Machines Corporation Optimized specular highlight generation
CA2538196C (en) 2005-02-28 2011-10-11 Weatherford/Lamb, Inc. Deep water drilling with casing
US8104086B1 (en) 2005-03-03 2012-01-24 Symantec Corporation Heuristically detecting spyware/adware registry activity
US7603552B1 (en) * 2005-05-04 2009-10-13 Mcafee, Inc. Piracy prevention using unique module translation
US8078740B2 (en) 2005-06-03 2011-12-13 Microsoft Corporation Running internet applications with low rights
US7856661B1 (en) 2005-07-14 2010-12-21 Mcafee, Inc. Classification of software on networked systems
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
US8381198B2 (en) * 2005-08-15 2013-02-19 Sony Ericsson Mobile Communications Ab Systems, methods and computer program products for safety checking executable application programs in a module
EP1934742A4 (de) 2005-08-25 2009-08-19 Fortify Software Inc Vorrichtung und verfahren zum analysieren und ergänzen eines programms zur bereitstellung von sicherheit
JP4997242B2 (ja) * 2005-08-25 2012-08-08 フォーティファイ ソフトウェア, エルエルシー セキュリティを提供するためのプログラムの解析および補完のための装置および方法
US8245270B2 (en) 2005-09-01 2012-08-14 Microsoft Corporation Resource based dynamic security authorization
US8484232B2 (en) * 2005-11-22 2013-07-09 International Business Machines Corporation Method, computer arrangement, computer program and computer program product for checking for the presence of control statements in a data value
US8166295B2 (en) * 2005-11-30 2012-04-24 Microsoft Corporation Message security framework
WO2007074565A1 (ja) * 2005-12-27 2007-07-05 Nec Corporation プログラム実行制御方法および装置ならびに実行制御プログラム
US8572729B1 (en) * 2006-01-30 2013-10-29 Mcafee, Inc. System, method and computer program product for interception of user mode code execution and redirection to kernel mode
US7757269B1 (en) * 2006-02-02 2010-07-13 Mcafee, Inc. Enforcing alignment of approved changes and deployed changes in the software change life-cycle
US7926105B2 (en) * 2006-02-28 2011-04-12 Microsoft Corporation Using security-related attributes
US7895573B1 (en) 2006-03-27 2011-02-22 Mcafee, Inc. Execution environment file inventory
US7870387B1 (en) 2006-04-07 2011-01-11 Mcafee, Inc. Program-based authorization
US8352930B1 (en) 2006-04-24 2013-01-08 Mcafee, Inc. Software modification by group to minimize breakage
US7814556B2 (en) * 2006-05-09 2010-10-12 Bea Systems, Inc. System and method for protecting APIs from untrusted or less trusted applications
US7979891B2 (en) * 2006-05-09 2011-07-12 Oracle International Corporation Method and system for securing execution of untrusted applications
US7857052B2 (en) 2006-05-12 2010-12-28 Weatherford/Lamb, Inc. Stage cementing methods used in casing while drilling
US8555404B1 (en) 2006-05-18 2013-10-08 Mcafee, Inc. Connectivity-based authorization
US8276689B2 (en) 2006-05-22 2012-10-02 Weatherford/Lamb, Inc. Methods and apparatus for drilling with casing
EP2296108B1 (de) * 2006-06-15 2012-11-14 Kabushiki Kaisha Toshiba Tragbares elektronisches Gerät und Steuerverfahren dafür
US20080022378A1 (en) * 2006-06-21 2008-01-24 Rolf Repasi Restricting malicious libraries
US8250082B2 (en) 2006-06-23 2012-08-21 Microsoft Corporation Cross domain communication
US8185737B2 (en) 2006-06-23 2012-05-22 Microsoft Corporation Communication across domains
US8239915B1 (en) 2006-06-30 2012-08-07 Symantec Corporation Endpoint management using trust rating data
US8020206B2 (en) * 2006-07-10 2011-09-13 Websense, Inc. System and method of analyzing web content
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
JP2008027306A (ja) * 2006-07-24 2008-02-07 Aplix Corp ユーザ空間仮想化システム
US20080046724A1 (en) * 2006-07-25 2008-02-21 General Dynamics C4 System, Inc. Method for governing interaction between code within a code base
US20080127142A1 (en) * 2006-11-28 2008-05-29 Microsoft Corporation Compiling executable code into a less-trusted address space
US9424154B2 (en) 2007-01-10 2016-08-23 Mcafee, Inc. Method of and system for computer system state checks
US8332929B1 (en) 2007-01-10 2012-12-11 Mcafee, Inc. Method and apparatus for process enforced configuration management
US20080263679A1 (en) * 2007-04-23 2008-10-23 Microsoft Corporation Storing information in closed computing devices
US8321936B1 (en) 2007-05-30 2012-11-27 M86 Security, Inc. System and method for malicious software detection in multiple protocols
US10019570B2 (en) * 2007-06-14 2018-07-10 Microsoft Technology Licensing, Llc Protection and communication abstractions for web browsers
US7671567B2 (en) * 2007-06-15 2010-03-02 Tesla Motors, Inc. Multi-mode charging system for an electric vehicle
US8195931B1 (en) 2007-10-31 2012-06-05 Mcafee, Inc. Application change control
US8245289B2 (en) * 2007-11-09 2012-08-14 International Business Machines Corporation Methods and systems for preventing security breaches
US20090158302A1 (en) * 2007-12-13 2009-06-18 Fiberlink Communications Corporation Api translation for network access control (nac) agent
US20090158407A1 (en) * 2007-12-13 2009-06-18 Fiberlink Communications Corporation Api translation for network access control (nac) agent
US8607324B2 (en) * 2008-01-15 2013-12-10 Microsoft Corporation Untrusted gaming system access to online gaming service
US8621495B2 (en) 2008-01-18 2013-12-31 Microsoft Corporation Methods and apparatus for securing frames from other frames
US8701189B2 (en) 2008-01-31 2014-04-15 Mcafee, Inc. Method of and system for computer system denial-of-service protection
US8201248B2 (en) * 2008-02-18 2012-06-12 Codesealer Aps Authenticating a web page with embedded javascript
US8316101B2 (en) * 2008-03-15 2012-11-20 Microsoft Corporation Resource management system for hosting of user solutions
US8615502B2 (en) 2008-04-18 2013-12-24 Mcafee, Inc. Method of and system for reverse mapping vnode pointers
US8424082B2 (en) 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US9058483B2 (en) 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8230499B1 (en) 2008-05-29 2012-07-24 Symantec Corporation Detecting and blocking unauthorized downloads
US8510753B2 (en) * 2008-06-27 2013-08-13 Microsoft Corporation Untrusted component hosting
US8621424B2 (en) * 2008-06-30 2013-12-31 Yahoo! Inc. Compiler based code modification for use in document ranking
US8353033B1 (en) * 2008-07-02 2013-01-08 Symantec Corporation Collecting malware samples via unauthorized download protection
US9176754B2 (en) 2008-07-16 2015-11-03 Google Inc. Method and system for executing applications using native code modules
US8484721B2 (en) * 2008-08-04 2013-07-09 Moka5, Inc. Locked-down computing environment
JP2010039913A (ja) * 2008-08-07 2010-02-18 Sony Corp 通信装置、通信方法、及びプログラム
US8522200B2 (en) * 2008-08-28 2013-08-27 Microsoft Corporation Detouring in scripting systems
US8510713B1 (en) 2008-10-31 2013-08-13 Google Inc. Method and system for validating a disassembler
US8294723B2 (en) * 2008-11-07 2012-10-23 Google Inc. Hardware-accelerated graphics for web applications using native code modules
US8675000B2 (en) * 2008-11-07 2014-03-18 Google, Inc. Command buffers for web-based graphics rendering
US10419541B2 (en) * 2008-11-26 2019-09-17 Free Stream Media Corp. Remotely control devices over a network without authentication or registration
US8745361B2 (en) * 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US8544003B1 (en) 2008-12-11 2013-09-24 Mcafee, Inc. System and method for managing virtual machine configurations
US20100199357A1 (en) * 2009-02-02 2010-08-05 Microsoft Corporation Secure hosting for untrusted code
US8677329B2 (en) 2009-06-03 2014-03-18 Apple Inc. Methods and apparatuses for a compiler server
US9117071B2 (en) 2009-06-03 2015-08-25 Apple Inc. Methods and apparatuses for secure compilation
US8797337B1 (en) 2009-07-02 2014-08-05 Google Inc. Graphics scenegraph rendering for web applications using native code modules
US8561183B2 (en) 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures
US8341627B2 (en) 2009-08-21 2012-12-25 Mcafee, Inc. Method and system for providing user space address protection from writable memory area in a virtual environment
US8381284B2 (en) 2009-08-21 2013-02-19 Mcafee, Inc. System and method for enforcing security policies in a virtual environment
US9552497B2 (en) 2009-11-10 2017-01-24 Mcafee, Inc. System and method for preventing data loss using virtual machine wrapped applications
US8850428B2 (en) 2009-11-12 2014-09-30 Trustware International Limited User transparent virtualization method for protecting computer programs and data from hostile code
US8621619B2 (en) * 2009-12-03 2013-12-31 Google Inc. Dynamic code insertion for static analysis based sandboxes
US8495607B2 (en) 2010-03-01 2013-07-23 International Business Machines Corporation Performing aggressive code optimization with an ability to rollback changes made by the aggressive optimizations
US8850573B1 (en) * 2010-04-14 2014-09-30 Google Inc. Computing device with untrusted user execution mode
US8938800B2 (en) 2010-07-28 2015-01-20 Mcafee, Inc. System and method for network level protection against malicious software
US8925101B2 (en) 2010-07-28 2014-12-30 Mcafee, Inc. System and method for local protection against malicious software
US8549003B1 (en) 2010-09-12 2013-10-01 Mcafee, Inc. System and method for clustering host inventories
US9075993B2 (en) 2011-01-24 2015-07-07 Mcafee, Inc. System and method for selectively grouping and managing program files
JP5739182B2 (ja) 2011-02-04 2015-06-24 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 制御システム、方法およびプログラム
JP5731223B2 (ja) 2011-02-14 2015-06-10 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 異常検知装置、監視制御システム、異常検知方法、プログラムおよび記録媒体
JP5689333B2 (ja) 2011-02-15 2015-03-25 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation 異常検知システム、異常検知装置、異常検知方法、プログラムおよび記録媒体
US9112830B2 (en) 2011-02-23 2015-08-18 Mcafee, Inc. System and method for interlocking a host and a gateway
US20120331465A1 (en) * 2011-03-02 2012-12-27 Tadao Tanikawa Virtual machine system, virtual machine control method, virtual machine control application, and semiconductor integrated circuit
US8973158B2 (en) 2011-07-20 2015-03-03 Microsoft Technology Licensing Llc Trust level activation
US20130179287A1 (en) * 2011-08-08 2013-07-11 Gennady SLOBODSKIY System and method for electronic distribution of software and data
US9594881B2 (en) 2011-09-09 2017-03-14 Mcafee, Inc. System and method for passive threat detection using virtual memory inspection
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
US8973144B2 (en) 2011-10-13 2015-03-03 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US9069586B2 (en) 2011-10-13 2015-06-30 Mcafee, Inc. System and method for kernel rootkit protection in a hypervisor environment
US8800024B2 (en) 2011-10-17 2014-08-05 Mcafee, Inc. System and method for host-initiated firewall discovery in a network environment
US8713668B2 (en) 2011-10-17 2014-04-29 Mcafee, Inc. System and method for redirected firewall discovery in a network environment
US8739272B1 (en) 2012-04-02 2014-05-27 Mcafee, Inc. System and method for interlocking a host and a gateway
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
US8973146B2 (en) 2012-12-27 2015-03-03 Mcafee, Inc. Herd based scan avoidance system in a network environment
US9262597B2 (en) 2013-03-15 2016-02-16 Microsoft Technology Licensing, Llc Validating normalized code representations
CN105580023B (zh) 2013-10-24 2019-08-16 迈克菲股份有限公司 网络环境中的代理辅助的恶意应用阻止
EP3158489A4 (de) * 2014-06-20 2018-03-14 Waratek Limited Erhöhte sicherheit für virtuelle java-maschinen
US9413774B1 (en) 2014-10-27 2016-08-09 Palo Alto Networks, Inc. Dynamic malware analysis of a URL using a browser executed in an instrumented virtual machine environment
US10162617B2 (en) 2015-04-10 2018-12-25 Google Llc Binary translation into native client
US20170039390A1 (en) * 2015-08-08 2017-02-09 James Alexander KING Methods and systems for privacy preserving third party extension
RU2618946C1 (ru) * 2015-12-18 2017-05-11 Акционерное общество "Лаборатория Касперского" Способ блокировки доступа к данным на мобильных устройствах с использованием API для пользователей с ограниченными возможностями
CN106682498B (zh) * 2016-08-16 2019-12-06 腾讯科技(深圳)有限公司 样本的执行方法和装置
US10628138B2 (en) 2018-02-09 2020-04-21 International Business Machines Corporation Automated management of undesired code use based on predicted valuation and risk analysis
TWI669624B (zh) * 2018-09-19 2019-08-21 宏碁股份有限公司 網頁內容自我保護方法以及伺服器
US11573910B2 (en) * 2019-08-22 2023-02-07 Intel Corporation Apparatus, system and method to define memory information leak zones in a computing system
EP3786826A1 (de) * 2019-08-30 2021-03-03 Barclays Execution Services Limited Sichere validierungspipeline in einer cloud-umgebung von drittanbietern
CN111787088B (zh) 2020-06-28 2023-04-28 百度在线网络技术(北京)有限公司 小程序数据处理的方法和装置
US11902453B2 (en) * 2021-06-25 2024-02-13 Intel Corporation Method, system and apparatus for delayed production code signing for heterogeneous artifacts
TW202437103A (zh) * 2022-11-02 2024-09-16 日商索尼半導體解決方案公司 應用程式提供裝置、應用程式提供方法及程式

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS60245097A (ja) * 1984-05-18 1985-12-04 ブラザー工業株式会社 ソフトウエア販売装置
US4982430A (en) * 1985-04-24 1991-01-01 General Instrument Corporation Bootstrap channel security arrangement for communication network
US4688169A (en) * 1985-05-30 1987-08-18 Joshi Bhagirath S Computer software security system
US4796220A (en) * 1986-12-15 1989-01-03 Pride Software Development Corp. Method of controlling the copying of software
JPS63310043A (ja) * 1987-06-12 1988-12-19 Nec Corp プログラムの不正アドレスアクセス検出方式
JPH0378031A (ja) * 1989-08-22 1991-04-03 Nec Corp 例外検査/代入文オブジェクトの削除方式
US5222134A (en) * 1990-11-07 1993-06-22 Tau Systems Corporation Secure system for activating personal computer software at remote locations
JP3485940B2 (ja) * 1992-03-31 2004-01-13 株式会社東芝 仮想記憶制御装置及び方法
JPH08504976A (ja) 1992-09-21 1996-05-28 ユニロック (シンガポール) プライベート リミテッド ソフトウェア登録システム
US5390314A (en) 1992-10-09 1995-02-14 American Airlines, Inc. Method and apparatus for developing scripts that access mainframe resources that can be executed on various computer systems having different interface languages without modification
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
US5983012A (en) 1993-09-28 1999-11-09 Bull Hn Information Systems Inc. Executing programs of a first system on a second system
JPH07230380A (ja) * 1994-02-15 1995-08-29 Internatl Business Mach Corp <Ibm> 適用業務プログラムの利用管理方法およびシステム
US5644709A (en) 1994-04-21 1997-07-01 Wisconsin Alumni Research Foundation Method for detecting computer memory access errors
JPH08194504A (ja) * 1995-01-13 1996-07-30 Matsushita Electric Works Ltd プログラマブルコントローラ
US5842017A (en) * 1996-01-29 1998-11-24 Digital Equipment Corporation Method and apparatus for forming a translation unit
US5825877A (en) * 1996-06-11 1998-10-20 International Business Machines Corporation Support for portable trusted software
US5812668A (en) * 1996-06-17 1998-09-22 Verifone, Inc. System, method and article of manufacture for verifying the operation of a remote transaction clearance system utilizing a multichannel, extensible, flexible architecture
US5850446A (en) * 1996-06-17 1998-12-15 Verifone, Inc. System, method and article of manufacture for virtual point of sale processing utilizing an extensible, flexible architecture
IL128405A0 (en) * 1996-08-09 2000-01-31 Citrix Systems Cambridge Ltd An end user computer system and a method for operating same
US5805829A (en) * 1996-10-01 1998-09-08 International Business Machines Corp Process for running applets over non-IP networks
US6167522A (en) * 1997-04-01 2000-12-26 Sun Microsystems, Inc. Method and apparatus for providing security for servers executing application programs received via a network

Also Published As

Publication number Publication date
EP1021753A1 (de) 2000-07-26
JP2001514411A (ja) 2001-09-11
WO1999010795A1 (en) 1999-03-04
JP3572016B2 (ja) 2004-09-29
JP4528517B2 (ja) 2010-08-18
US6275938B1 (en) 2001-08-14
DE69802834D1 (de) 2002-01-17
JP2004118866A (ja) 2004-04-15
EP1021753B1 (de) 2001-12-05

Similar Documents

Publication Publication Date Title
DE69802834T2 (de) Verbesserung der sicherheit für nicht-vertrauten ausführbaren code
DE69427252T2 (de) Verfahren und Gerät zur Erkennung von Computerviren
DE69429601T2 (de) Methode zum Kennzeichnen von wandernden objektorientierten Programmen mit Hilfe digitaler Schlüssel
DE69922015T2 (de) Verfahren und vorrichtung zum übersetzen und ausführen von arteigenem code in einer umgebung mit virtuellen maschinen
DE69533005T2 (de) Bytecodeprogramminterpreter, Verfahren und Anordnung mit Vorprüfung von Datentyprestriktionen
DE69803199T2 (de) Erkennung und entfernung von makroviren
DE69032795T2 (de) Verfahren und Vorrichtung zur Aktualisierung in einem EEPROM-Speicher residenter &#34;Firmware&#34;
DE69706440T2 (de) Schutzmittel in einem verteilten rechnersystem
DE69531112T2 (de) Mechanismus zum verknüpfen von dateien auf einem emulierten system mit dem zentralsystem für den zugriff durch emulierte systembenutzer
DE3851049T2 (de) Ein Sicherheitswegmechanismus für ein Betriebssystem.
DE10392470B4 (de) System und Verfahren zum Ausführen von Initialisierungsbefehlen einer gesicherten Umgebung
DE69402852T2 (de) Objektorientiertes host-system
DE60006217T2 (de) Techniken zum gewähren des zugriffs durch eine kontextsperre in einem gerät mit kleinem platzbedarf unter verwendung von einem eingangspunktobjekt
DE112004001605B4 (de) Computersystem, in welchem eine abgesicherte Ausführungsumgebung angewendet wird und in dem eine Speichersteuerung enthalten ist, die zum Löschen des Speichers ausgebildet ist
DE69400871T2 (de) Objektorientiertes betriebssystem
Engler The Exokernel operating system architecture
DE60018505T2 (de) Vertraute Überprüfung von Rechnerprogrammodulen
DE202009019136U1 (de) Systeme zur sicheren Ausführung eines nicht vertrauenswürdigen Nativen Codemoduls auf einer Datenverarbeitungsvorrichtung
DE202009019137U1 (de) Apparat für die Validierung eines nicht vertrauenswürdigen Nativen Code-Moduls
DE69918334T2 (de) Erzeugung von kompilierten programmen für interpretative laufzeitumgebungen
DE10225664A1 (de) System und Verfahren zum Prüfen von Systemabrufereignissen mit Systemabrufumhüllungen
DE10297273T5 (de) Verfahren zur Bereitstellung von Systemintegrität und Legacy-Umgebungsemulation
DE112007001988T5 (de) Gemeinsames Nutzen von Informationen durch Gäste in einer Virtuelle-Maschine-Umgebung
DE102004057490B4 (de) Vorrichtung und Verfahren zum Verarbeiten eines Programmcodes
DE102022214443A1 (de) Verfahren, systeme und computerlesbare medien zum anpassen einer datenebenenpipelineverarbeitung unter verwendung von berkeley-paketfilter-(bpf)-hakeneintrittspunkten

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: ANWALTSKANZLEI GULDE HENGELHAUPT ZIEBIG & SCHNEIDE