DE69802834T2 - Verbesserung der sicherheit für nicht-vertrauten ausführbaren code - Google Patents
Verbesserung der sicherheit für nicht-vertrauten ausführbaren codeInfo
- 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
Links
- 238000000034 method Methods 0.000 claims description 26
- 238000013519 translation Methods 0.000 claims description 14
- 230000003287 optical effect Effects 0.000 claims description 8
- 230000003068 static effect Effects 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 5
- 238000004891 communication Methods 0.000 claims description 4
- 238000012795 verification Methods 0.000 claims 3
- 238000012544 monitoring process Methods 0.000 claims 2
- 244000035744 Hura crepitans Species 0.000 description 42
- 239000008186 active pharmaceutical agent Substances 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 238000013459 approach Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 241000700605 Viruses Species 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000007943 implant Substances 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/54—Monitoring 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
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1997
- 1997-08-28 US US08/919,844 patent/US6275938B1/en not_active Expired - Lifetime
-
1998
- 1998-08-25 WO PCT/US1998/017553 patent/WO1999010795A1/en active IP Right Grant
- 1998-08-25 DE DE69802834T patent/DE69802834T2/de not_active Expired - Lifetime
- 1998-08-25 EP EP98941045A patent/EP1021753B1/de not_active Expired - Lifetime
- 1998-08-25 JP JP2000508048A patent/JP3572016B2/ja not_active Expired - Fee Related
-
2003
- 2003-11-25 JP JP2003394633A patent/JP4528517B2/ja not_active Expired - Fee Related
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 "Firmware" | |
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 |