DE202010018492U1 - Dynamic insertion and deletion of program code for static analysis based sandboxes - Google Patents

Dynamic insertion and deletion of program code for static analysis based sandboxes

Info

Publication number
DE202010018492U1
DE202010018492U1 DE202010018492.4U DE202010018492U DE202010018492U1 DE 202010018492 U1 DE202010018492 U1 DE 202010018492U1 DE 202010018492 U DE202010018492 U DE 202010018492U DE 202010018492 U1 DE202010018492 U1 DE 202010018492U1
Authority
DE
Germany
Prior art keywords
program code
instruction
memory
instructions
part
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.)
Active
Application number
DE202010018492.4U
Other languages
German (de)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority to US26650009P priority Critical
Priority to US61/266,500 priority
Priority to US12/956,860 priority
Priority to US12/956,860 priority patent/US8621619B2/en
Application filed by Google LLC filed Critical Google LLC
Publication of DE202010018492U1 publication Critical patent/DE202010018492U1/en
Application status is Active legal-status Critical
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating

Abstract

Rechnersystem, das einen mit einem Speicher gekoppelten Prozessor umfasst, worin der Speicher Anweisungen speichert, die den Prozessor zu Folgendem veranlassen: A computer system comprising a processor coupled to a memory, wherein said storage stores instructions that cause the processor to:
das Empfangen einer Anweisung (302), um einen neuen Teil von Programmcode (402) in eine in der Sandbox befindlichen Anwendung einzufügen; receiving an instruction (302) to insert a new piece of program code (402) in a located in the sandbox application;
das Schreiben (304) des neuen Teils des Programmcodes (402) in einem ersten Bereich eines sicheren Teils (108) des Speichers, der von der in der Sandbox befindlichen Anwendung nicht ausgeführt werden kann; writing (304) of the new part of the program code (402) in a first region of a secure part (108) of the memory that can not be executed by the application located in the sandbox;
das Validieren (306) des neuen Teils des Programmcodes (402); validating (306) of the new part of the program code (402); und and
das Schreiben (312) des validierten Teils des Programmcodes in einen zweiten Bereich (214) des sicheren Teils (108) des Speichers, der von der in der Sandbox befindlichen Anwendung ausgeführt werden kann. writing (312) the validated portion of the program code in a second area (214) of the secure part (108) of memory that can be executed by located in the sandbox application.

Description

  • VERWEIS REFERENCE
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. be placed under protection and the object of the utility model only devices in the appended claims for protection are, in accordance with the provisions of the Utility Model Law, defined, but no methods. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen. Insofar as reference is made in the description below, where appropriate reference methods, these references are merely exemplary explanation of the device identified in the appended claims for protection under a protective or devices.
  • TECHNISCHES GEBIET TECHNICAL FIELD
  • Diese Anmeldung bezieht sich im Allgemeinen auf die Rechnersicherheit. This application relates generally to computer security. Genauer gesagt, bezieht sich diese Anmeldung auf ein Verfahren und eine Vorrichtung für das dynamische Hinzufügen und Validieren von nicht vertrauenswürdigem Programmcode zu einem zuvor validierten nicht vertrauenswürdigen Programmcode und die sichere Ausführung des dynamisch hinzugefügten und zuvor validierten nicht vertrauenswürdigen Programmcodes. More specifically, this application relates to a method and apparatus for dynamically adding and validating untrusted program code to a previously validated untrusted program code and the secure execution of dynamically added and previously validated untrusted program code.
  • HINTERGRUND BACKGROUND
  • Als Anwendungsplattform vereint der Modem-Web-Browser eine bemerkenswerte Kombination an Ressourcen, einschließlich des nahtlosen Zugriffs auf Internet-Ressourcen, hoch produktive Programmiersprachen wie JavaScript und den Reichtum des Dokumentobjektmodells (Document Object Model – DOM) zur Grafikdarstellung und Interaktion. As an application platform of the modem web browser brings a remarkable combination of resources, including the seamless access to Internet resources, high-productivity programming languages ​​such as JavaScript and wealth of the Document Object Model (Document Object Model - DOM) graphic display and interaction. Während diese Stärken zur Entwicklung neuer Anwendungen den Browser als Ziel in den Vordergrund setzen, bleiben Browser-basierte Anwendungen oft in Bezug auf die Rechenleistung im Vergleich zu nativen Client-Anwendungen hinter den kritischen Dimensionen zurück. While these strengths to develop new applications use the browser as a target in the foreground, browser-based applications often remain on the computing power compared to the native client applications behind the critical dimensions related.
  • Modem-Web-Browser stellen verschiedene Erweiterungsmechanismen wie ActiveX und NPAPI-Plug-ins zum Laden eines systemeigenen Programmcodes und als Teil einer Web-Anwendung zur Verfügung, die in einem Browser ausgeführt werden kann. Modem Web browser provide various extension mechanisms such as ActiveX and NPAPI plug-ins to load a native program code and as part of a web application available that can run in a browser. Während solche Architekturen Browser-basierten Anwendungen erlauben, die Leistungsmerkmale nativer Anwendungen zu erreichen, erfolgt dies auf Kosten der Sicherheitsmechanismen, die sonst auf Web-Inhalte Browser-basierter Anwendungen angewendet werden. While such architectures allow browser-based applications to achieve the performance of native applications, this is done at the expense of the security mechanisms that are usually applied to Web content browser-based applications. Jüngste Maßnahmen, wie die Validierung und Isolierung oder das Ausführen von systemeigenem Client-Programmcode in einer Sandbox erlauben die Ausführung von systemeigenem Programmcode innerhalb eines Browsers auf eine sichere und zuverlässige Art und Weise. Recent measures, such as the validation and insulation or running native client code in a sandbox to the execution of native code within a browser on a secure and reliable manner. Solche Verfahren wurden beschrieben, beispielsweise in folgenden Patentanmeldungen: „Method for Validating an Untrusted Native Code Module”, Anmeldungs-Serien-Nr. Such methods have been described, for example in the following patent applications: "Method for Validating to Untrusted Native Code Module", Application Serial no. 12/117.634, eingereicht am 8. Mai 2008, „Method for Safely Executing an Untrusted Native Code Module on a Computing Device”, Anmeldungs-Serien-Nr. 12 / 117,634, filed May 8, 2008, "Method for Safely Executing on untrusted native code modules on a computing device," Application Serial no. 12/117.650, eingereicht 8. Mai 2008, „Native Code Module Security for ARM Instruction Set Architectures”, Anmeldungs-Serien-Nr. 12 / 117,650, filed May 8th 2008, "Native Code Module Security for ARM Instruction Set Architectures", Application Serial no. 12/621.286, eingereicht am 18. November 2009 und „Native Code Module Security for 64-bit Instruction Set Architektures”, Anmeldungs-Serien-Nr. 12 / 621,286, filed November 18, 2009, "Native Code Module Security for 64-bit Instruction Set Architektures" Application Serial no. 12/621.266, eingereicht am 31. Juli 2009. 12 / 621,266, filed July 31 of 2009.
  • Das Verfahren und die Vorrichtung in den vorstehend genannten Anwendungen, einschließlich der offenbarten Programmcode-Layout-Regeln und der statischen Programmcode-Analyse, lassen zu, dass beliebiger und nicht vertrauenswürdiger Code sicher als eine Browser-Anwendung ausgeführt werden kann, indem der Programmcode zuverlässig disassembliert und ein Ausführungssteuerungs-Superdiagramm generiert wird. The method and apparatus in the aforementioned applications, including those disclosed program code layout rules and static code analysis can to that arbitrary and untrusted code can be performed safely as a browser application by the program code disassembles reliable and an execution control Super diagram is generated. Sobald der nicht vertrauenswürdige Programmcode zerlegt und ein Ausführungssteuerungs-Superdiagramm generiert wurde, kann jedoch kein neuer Programmcode hinzugefügt werden. Once the untrusted program code disassembled and execution control Super chart was generated, but no new code can be added. Dies verhindert die sichere Ausführung vieler Arten von Programmcode in der Sandbox und als Browser-Anwendung. This prevents the safe design of many types of program code in the sandbox and a browser application. Insbesondere verlassen sich viele aktuellen nativen Anwendungen auf den Einsatz dynamisch gelinkter Bibliotheken („DLLs”) oder die Just-in-Time(„JIT”)-Programmcode-Generierung für eine Flexibilität und Programmiereffizienz. In particular, many current native applications rely on the use of dynamically linked external libraries ( "DLLs") or just-in-time ( "JIT") - Program code generation for flexibility and programming efficiency. Darüber hinaus verwenden viele Modem-Programmiersprachen wie Go, Java und JavaScript aus den gleichen Gründen die dynamische Programmcodegenerierung. In addition, many modem programming languages ​​such as Go, Java and JavaScript for the same reasons to use dynamic code generation. Verfahren, die die Validierung und die Ausführung von nicht vertrauenswürdigem Programmcode in einer Sandbox unter Verwendung von DLLs und der JIT-Programmcode-Generierung erlauben, können die Browser-Nutzung als eine Plattform zur Ausführung nativer Anwendungen darüber hinaus erweitern. Methods that allow the validation and execution of untrusted program code in a sandbox using DLLs and the JIT code generation can extend the browser usage as a platform for the execution of native applications beyond.
  • KURZDARSTELLUNG SUMMARY
  • Auf einer Rechnereinheit implementierte Verfahren und Vorrichtungen werden für das dynamische Einfügen eines neuen Teils von Programmcode in eine in der Sandbox befindlichen Anwendung, der in einen gesicherten Speicher geschrieben und innerhalb einer sicheren Laufzeitumgebung ausgeführt wird, werden offenbart. implemented on a computer unit are methods and apparatus for the dynamic insertion of a new part of the program code in a located in the sandbox application, which is written into a secure memory and executed within a secure runtime environment, are disclosed. Eine Anweisung zum Einfügen des neuen Teils von Programmcode in die in der Sandbox befindlichen Anwendung wird empfangen. An instruction to insert the new portion of program code in the present in the sandbox application is received. Der neue Teil des Programmcodes wird in einen Teil des sicheren Speichers geschrieben, der nicht beschrieben werden kann oder den die in der Sandbox befindliche Anwendung nicht ausführen kann. The new part of the program code is written in a part of the secure memory that can not be described or the application located in the sandbox can not perform. Dieser wird dann geprüft und in einen Teil des sicheren Speichers kopiert, in den nicht geschrieben, der aber durch die in der Sandbox befindlichen Anwendung ausgeführt werden kann. This is then checked and copied to a part of the secure memory, not written to, but which can be executed by the located in the sandbox application.
  • Merkmale und Vorteile der auf einer Rechnereinheit implementierten Verfahren umfassen eines oder mehrere der Folgenden. Features and advantages of the implemented on a computer unit processes include one or more of the following.
  • Beim Schreiben eines validierten neuen Teils des Programmcodes in einen Teil des gesicherten Speichers kann dieser in Anweisungspaketen mit fester Größe geschrieben werden, sodass keine Anweisungen in den Anweisungspaketen die festen Größengrenzen innerhalb eines Teils des sicheren Speichers überschreiten können. When writing a validated new part of the program code into a portion of the secured memory of this can be written in instruction packets of fixed size, so that no instructions may exceed the fixed size limits within a part of the secure memory to the instruction packages. Der Teil des sicheren Speichers, in den Anweisungspakete geschrieben werden, kann anfänglich eine oder mehre Halt-Anweisungen mit fester Größe enthalten. The part of the secure memory is written in the instruction packets may initially contain one or several maintenance instructions with a fixed size. Validierter neuer Programmcode kann in einem zweistufigen Prozess in den sicheren Speicher geschrieben werden; Validated novel program code can be written in a two-step process in the secure memory; hierbei wird ein Restteil eines neuen Anweisungspaketes zuerst in den sicheren Speicher geschrieben, gefolgt von einen Kopfteil, wobei der Kopfteil die Größe der Halt-Anweisung besitzt und der Restteil die Größe des Anweisungspaketes mit fester Größe, abzüglich der Größe der Halt-Anweisung. Here, a residual part of a new instruction packet is first written into the secure memory, followed by a head portion, said head portion having the size of the stop instruction and the rest part of the size of the instruction packet with fixed size minus the size of the halt instruction. Eine Anweisung zum Leeren von Änderungen in die d-Zwischenspeicher und i-Zwischenspeicher des sicheren Speichers kann nach dem Schreiben der Restteile und der Kopfteile der neuen Programmcode-Anweisungspakete ausgeführt werden. An instruction to clear changes in the d-cache and I-cache memory of the secure memory can be performed after writing the rest portions and the head portions of the new program code statement packets.
  • Validiertem neuem Programmcode ist nicht gestattet, das Betriebssystem direkt aufzurufen, den Zustand des sicheren Speichers zu ändern oder direkt eine außerhalb des sicheren Speichers liegende Speicheradresse anzusprechen. Validated a new program code is not allowed to access the operating system directly, to change the state of the secure memory or to address an out of the secure memory memory address directly. Verzweigungsanweisungen im validierten neuen Programmcode müssen gültige Adressen ansprechen. Branch instructions in validated new program code must address valid addresses. Insbesondere müssen indirekte oder nicht statisch bestimmbare Verzweigungsanweisungen auf Adressen, die auf festen Größengrenzen innerhalb des sicheren Speichers ausgerichtet sind, der in der Sandbox befindlichen Anwendung abzielen. In particular, indirect or not static identifiable branch instructions have addresses which are aligned with fixed size limits within the secure memory that aimed located in the sandbox application.
  • Dynamisch hinzugefügter neuer Programmcode kann von der in der Sandbox befindlichen Anwendung, die im sicheren Speicher ausgeführt wird, gelöscht werden. Dynamically added new program code can be deleted from the located in the sandbox application that is running in secure memory. Eine Anweisung zum Löschen eines dynamisch hinzugefügten Programmcode-Paketes kann empfangen werden. An instruction to delete a dynamically added program code package can be received. Das dynamisch hinzugefügte Programmcode-Paket kann gefahrlos gelöscht werden, wenn dieses als Einheit in eine in der Sandbox befindlichen Anwendung eingefügt wurde oder falls dieses keine Intra-Paket-Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer in einem weiteren dynamisch eingefügten Anweisungspaket enthaltenen Anweisung bildet, es sei denn, dass das Anweisungspaket ebenfalls gelöscht wird. The dynamically added program code packet can be safely deleted if it has been inserted as a unit into a located in the sandbox application, or if it does not contain any intra-packet address that forms an execution control transmission destination of an instruction contained in a further effort inserted instruction packet unless, that the instruction packet is also deleted. Wenn das dynamisch hinzugefügte Programmcode-Paket sicher gelöscht werden kann, wird es gelöscht, nachdem alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben. If the dynamically added program code package can be safely deleted, it is deleted after all of the threads of the application located in the sandbox have reached a safe execution point. Nachdem das dynamisch hinzugefügte Programmcode-Paket sicher gelöscht wurde, ist es gestattet, dass alle Threads jenseits des sicheren Ausführungspunktes ausgeführt werden. After the dynamically added program code package has been shredded, it is permitted that all threads are running beyond the safe execution point.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN BRIEF DESCRIPTION OF DRAWINGS
  • 1 1 ist ein Blockdiagramm zur Veranschaulichung eines Systems zum Isolieren von nicht vertrauenswürdigem Programmcode oder für dessen Ablage in einer Sandbox, sodass dieser als sichere Browser-Anwendung ausgeführt werden kann. is a block diagram illustrating a system for isolating or untrusted program code for its storage in a sandbox, so that it can be executed as a secure browser application.
  • 2 2 ist ein Blockdiagramm, dass eine Implementierung eines Native Client-Containers illustriert, der zum Isolieren von nicht vertrauenswürdigem Programmcode oder für dessen Ablage in einer Sandbox verwendet werden kann. is a block diagram showing an implementation of a client Native container illustrated that can be used to isolate or untrusted program code for its storage in a sandbox.
  • 3 3 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens zum dynamischen Einfügen eines neuen Programmcodes in einen nicht vertrauenswürdigen Programmcode, der sich in einem Native Client-Container in der Sandbox befindet. is a flow chart illustrating a method for dynamically adding a new program code into an untrusted program code is located in a native client container in the sandbox.
  • 4a 4a - 4D 4D sind Blockdiagramme zur Veranschaulichung eines Verfahrens zum Schreiben eines neuen Programmcodes in dynamischen Textpaketen in einen Native Client-Container. are block diagrams illustrating a method for writing a new program code into dynamic text packets in a native client container.
  • 5 5 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens für das dynamische Löschen von Programmcode von nicht vertrauenswürdigem Programmcode, der sich in einem Native Client-Container in der Sandbox befindet. is a flowchart illustrating a method for dynamically deleting program code from untrusted program code that is located in a native client containers in the sandbox.
  • 6 6 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens zur Ermittlung, ob der neue Programmcode zum Aufruf eines Zieles oder zu Verzweigen zu einem Ziel, das sich in der Mitte eines Paketes von zuvor validiertem Programmcode befindet. is a flow chart illustrating a method for determining whether the new program code to call a destination or to branch to a target located in the middle of a package of previously validated code.
  • DETAILLIERTE BESCHREIBUNG DETAILED DESCRIPTION
  • 1 1 ist ein Blockdiagramm zur Veranschaulichung eines Systems is a block diagram illustrating a system 100 100 zum Isolieren von nicht vertrauenswürdigem Programmcode oder fÜr dessen Ablage in einer Sandbox, sodass dieser als sichere Browser-Anwendung ausgeführt werden kann. for isolating untrusted program code or its storage in a sandbox, so it can be launched as a secure browser application. Das System umfasst einen Browser The system includes a browser 102 102 , der eine Benutzeroberfläche , A user interface 104 104 für eine Anwendung bietet, die mit nicht vertrauenswürdigem Programmcode geschrieben ist und im Browser ausgeführt werden kann. provides for an application that is written with untrusted program code and can run in the browser. Die Benutzeroberfläche the user interface 104 104 des Browsers the browser 102 102 kann zur Ausführung von nicht vertrauenswürdigem Programmcode, der in HTML oder JavaScript oder einer Kombination der beiden geschrieben ist, verwendet werden. can be used to run untrusted code that is written in HTML or JavaScript or a combination of the two. Der Browser the browser 102 102 kann mit einem oder mehreren Plug-ins, wie dem von der Google, Inc. bereitgestellten Native Client (NaCl) Plug-in can with one or more plug-ins, such as provided by Google, Inc. Native Client (NaCl) plug-in 106 106 , ausgerüstet werden. be equipped. Der Browser the browser 102 102 , die Benutzeroberfläche , The user interface 104 104 und NaCl-Module and NaCl modules 106 106 können miteinander kommunizieren, indem Meldungen an einen Inter-Modul-Kommunikationsdienst („IMC”) übergeben werden. can communicate with each other by messages to an inter-module communication service ( "IMC") are passed. Der IMC-Dienst kann eine Simple Remote Procedure Call(„SRPC”)-Einrichtung, die beteiligten Modulen die Verwendung von Unterprogrammen über Modulgrenzen hinweg ermöglicht, und eine Netscape-Plug-in-Anwendungsprogrammierschnittstelle (NPAPI), die beteiligten Modulen das Interagieren mit dem Browser-Zustand, einschließlich des Öffnens von Uniform Ressource Locaters („URLs”) und den Zugriff auf das Dokumentobjektmodell („DOM”) eines HTML-Dokuments ermöglicht, bereitstellen. The IMC service can be a Simple Remote Procedure Call ( "SRPC") - means the modules involved allows the use of subroutines via module boundaries, and a Netscape plug-in application programming interface (NPAPI), the modules involved interacting with the browser condition, including the opening of uniform resource Locaters ( "URLs") and the access to the document object model ( "DOM") of an HTML document allows to deploy.
  • Navigiert ein Benutzer auf eine Website mit einer Anwendung, die in nicht vertrauenswürdigem Programmcode zur Ausführung im Browser A user navigates to a website with an application in untrusted program code for execution in the browser 102 102 geschrieben ist, lädt und führt der Browser is written loads and runs the browser 102 102 die JavaScript-Komponenten der Anwendung aus und das NaCl-Plug-in the JavaScript components of the application and the NaCl plug-in 106 106 lädt den nicht vertrauenswürdigen Programmcode in den NaCl-Container loads the untrusted program code in the NaCl containers 108 108 . , Der NaCl-Container The NaCl containers 108 108 ist ein Bereich von sicherem Speicher, der in dem Adressraum der Services-Laufzeit is a range of secure memory in the address space of the Services runtime 110 110 vorhanden ist. is available. Die Service-Laufzeit The service runtime 110 110 ist eine vertrauenswürdige Anwendung, die nativ für die Rechnereinheit des Benutzers ist und die mit dem Browser is a trusted application, which is native to the computer unit of the user and the browser 102 102 , der Benutzeroberfläche , The user interface 104 104 und dem NaCl Plug-in NaCl and the plug-in 106 106 über den IMC-Dienst kommunizieren kann. can communicate via the IMC service. Die Service-Laufzeit The service runtime 110 110 bietet Speicher-Managementoperationen, das Erstellen und Löschen von Threads sowie anderer Dienste auf Systemebene für nicht vertrauenswürdige Anwendungen, die in NaCl-Container provides storage management operations, creating and deleting threads, and other system-level services for untrusted applications in NaCl container 108 108 geladen werden. Loading.
  • 2 2 ist ein Blockdiagramm, dass eine Implementierung eines Native Client-Containers is a block diagram showing an implementation of a client Native container 108 108 illustriert, der zum Isolieren von nicht vertrauenswürdigem Programmcode oder für dessen Ablage in einer Sandbox verwendet werden kann. illustrated, which can be used to isolate or untrusted program code for its storage in a sandbox. Beim Erstellen eines NaCl-Containers When creating a NaCl container 108 108 wird dieser im Adressraum der Services-Laufzeit is this in the address space of the Services runtime 110 110 erstellt. created. Die Service-Laufzeit The service runtime 110 110 initialisiert einen ersten oder vertrauenswürdigen Textteil initializes a first or trusted portion of text 202 202 des Adressraums des NaCl-Containers the address space of the container NaCl 108 108 mit vertrauenswürdigem Programmcode, der als „Trampolin” oder als Aufruftore with untrusted program code as a "trampoline" or call gates 204 204 und and 206 206 fungieren kann, und wirkt als „Sprungbrett” oder Rückkehrtor can act, and act as a "springboard" or Rückkehrtor 208 208 für nicht vertrauenswürdigen Programmcode. for untrusted program code. Als vertrauenswürdiger Programmcode sind die Trampoline As a trusted program code are the Trampoline 204 204 und and 206 206 und das Sprungbrett and the Springboard 208 208 nicht abhängig von der nachfolgend erläuterten statischen Analysis, der nicht vertrauenswürdiger Programmcode ausgesetzt ist. is not dependent on the exposed explained below static analysis, the untrusted program code. Die Trampoline the Trampoline 204 204 und and 206 206 und das Sprungbrett and the Springboard 208 208 ermöglichen die Übertragung von Daten und der Kontrolle zwischen der Service-Laufzeit enable the transmission of data and control between the service runtime 110 110 und dem nicht vertrauenswürdigen Programmcode. and the untrusted program code. Nicht vertrauenswürdiger Programmcode, der einen Aufruf auf Systemebene oder andere, ansonsten verbotene Anweisungen ausführen möchte, kann dies durch Aufruf eines Trampolins wie Trampolin Untrusted program code that wants to run a call at the system level or other, otherwise prohibited instructions, can be done by calling a trampoline as trampoline 204 204 zur Service-Laufzeit the service runtime 110 110 durchführen. carry out. Nach Aufruf des Trampolins überlässt der nicht vertrauenswürdige Programmcode die Ausführungssteuerung der Service-Laufzeit After calling the trampoline the untrusted program code leaves the execution control of the service runtime 110 110 , die entscheiden kann, ob der gewünschte Systemaufruf erfolgt oder ob die ansonsten verbotene Operation im Auftrag des nicht vertrauenswürdigen Programmcodes ausgeführt werden kann. Which can decide whether the desired system call is made or whether the otherwise prohibited operation can be performed on behalf of the untrusted program code. Nach Ausführung des erforderlichen Aufrufs oder der verbotenen Operation kann die Services-Laufzeit After execution of the required call or prohibited operation, the service runtime can 110 110 keine, die gesamten oder einen Teil der Ergebnisse an den nicht vertrauenswürdigen Programmcode durch Aufruf eines Sprungbrettes wie Sprungbrett none, all or a portion of the results to the untrusted program code by calling a springboard as springboard 208 208 die Ausführungssteuerung an den nicht vertrauenswürdigen Programmcode zurückgeben. return execution control to the untrusted program code. Sprungbrett springboard 208 208 kann ebenfalls von der Service-Laufzeit can also by the service runtime 110 110 zum Starten des Haupt-Threads oder des mindestens einen neuen Threads des nicht vertrauenswürdigen Programmcodes der Anwendung verwendet werden. be used to start the main thread or the at least one new thread of the untrusted program code of the application. Sprungbrett springboard 208 208 kann für Implementierungen verwendeten werden, die auf 32 Bit-x86-Architekturen ausgeführt werden. can be used for implementations that are performed on 32-bit x86 architectures. Für andere Architekturen, wie 64 Bit-x86- oder ARM-Architekturen, kann das Sprungbrett For other architectures, such as 64-bit x86 or ARM architectures that can springboard 208 208 entfallen. omitted.
  • Neben dem Initialisieren des vertrauenswürdigen Textteils In addition to initializing the trusted document body 202 202 des Adressraumes des NaCl-Containers the address space of the container NaCl 108 108 kann die Service-Laufzeit can the service runtime 110 110 Anweisungen des nicht vertrauenswürdigen Programmcodes („UC”) in einen zweiten oder UC-Textteil Instructions of the untrusted program code ( "UC") in a second body part or UC 212 212 des Adressenraumes des NaCl-Containers the address space of the container NaCl 108 108 und die UC-Daten in einen dritten oder UC-Datenteil and the UC data in a third data part or UC- 216 216 oder Adressraum des NaCl-Containers or address space of the container NaCl 108 108 schreiben. write. Zwischen dem UC-Text Between the UC-Text 212 212 und den UC-Daten and UC data 216 216 kann die Service-Laufzeit einen vierten oder dynamischen Textteil , the service runtime a fourth or dynamic part of the text 214 214 umfassen, der zum Hinzufügen von dynamischem neuem Programmcode des nicht vertrauenswürdigen Programmcodes verwendet werden kann, der zunächst in den NaCl-Container include that can be used to add new dynamic code of the untrusted program code first in the NaCl containers 108 108 geladen wird. is loaded. Der dynamische Textteil The dynamic part of the text 214 214 ist einen Teil des Adressraumes des NaCl-Containers is a part of the address space of the container NaCl 108 108 , den die Service-Laufzeit Which the service runtime 110 110 zur Ausführung der in der Sandbox befindlichen Anwendung oder zur Isolierung von Programmcode, der dynamisch von der nicht vertrauenswürdigen Anwendung erstellt oder hinzugefügt wird, beispielsweise durch den Einsatz der Just-in-Time-Programmierung oder durch die Verknüpfung mit einer dynamisch gelinkten Bibliothek („DLL”), verwenden kann. (To run the application located in the sandbox or isolation of program code that is dynamically created or added by the untrusted application, such as through the use of just-in-time programming or by linking with a dynamic link library "DLL ") can use.
  • Beim Initialisieren des vertrauenswürdigen Textteils When initializing the trusted document body 202 202 , des UC-Textteils , The UC-text part 212 212 , des dynamischen Textteils , The dynamic part of the text 214 214 und des UC-Datenteils and UC data part 216 216 des Adressraumes des NaCl-Containers the address space of the container NaCl 108 108 (welcher innerhalb des Adressraumes der Service-Laufzeit (Which is within the address space of the service runtime 110 110 liegt), erfolgt dies durch die Service-Laufzeit is), this is done by the service runtime 110 110 in einer Weise, bei der alle Maschinen-Programmcode-Anweisungen so geschrieben werden, dass sich keine festen Byte-Grenzen überlappen. in a way in which all machine-code instructions are written so that overlapping no fixed byte boundaries. Die Maschinen-Programmcode-Anweisungen zwischen jeweils zwei festen Byte-Grenzen werden „Anweisungspakete” und die Grenzen selbst werden Rand genannt. The machine program code instructions between any two fixed byte boundaries are "instruction packages" and the limits themselves are called edge. Die Service-Laufzeit The service runtime 110 110 kopiert Maschinencode in den vertrauenswürdigen Textteil copied code within the trusted portion of text 202 202 , UC-Textteil UC body part 212 212 , den dynamischen Textteil , The dynamic part of the text 214 214 und den UC-Datenteil and UC data part 216 216 , sodass alle indirekten oder statisch nicht bestimmbaren Ziele der Maschinencode-Verzweigungsanweisungen (wie z. B. Goto- und Switch-Anweisungen) ausgerichtet sind, dh, am Rande eines Anweisungspaketes beginnen. So that all indirect or statically undetermined objectives of the machine-code branch instructions (such as. For example, goto and switch statements) are aligned, that is, starting at the edge of an instruction packet. Wie hierin verwendet ist ein indirektes oder nicht statisch bestimmbares Ziel einer Maschinencode-Verzweigungsanweisung ein Ziel, dessen Adresse von Daten innerhalb der Maschinencode-Anweisung selbst bestimmt werden kann. As used herein is an indirect or not statically determinable target of a machine-code branch instruction a destination whose address data within the machine code instruction can be determined even. Im Gegensatz hierzu ist ein statisch bestimmbares Ziel der Maschinencode-Anweisung ein Ziel, dessen Adresse von Daten in der Maschinencode-Anweisung bestimmt werden kann. In contrast, a statically determinable objective of the machine code instruction is a destination whose address can be determined from data in the machine code instruction. Maschinencode-Anweisungen müssen so geschrieben werden, dass die Ziele aller indirekten Verzweigungsanweisungen auf den Rand eines Anweisungspakets ausgerichtet sind, und können die Auffüllung von Teilen der Maschinen-Programmcodeanweisungen mit „Noop”- oder indirekten Maschinencode-Verzweigungsanweisungen mit Pseudoanweisungen erfordern, die auf den Rand eines Anweisungspaketes ausgerichtet sind. Machine code instructions must be written so that the objectives of all indirect branch instructions are aligned on the edge of an instruction packet, and the replenishment of parts of the machine-code instructions with "Noop" can - or indirect machine code branch instructions require pseudo instructions on the edge an instruction packet are aligned. Bei einer Implementierung sind die Anweisungspakete innerhalb des Adressraumes des NaCl-Containers In one implementation, the instruction packets are within the address space of the container NaCl 108 108 32 Bytes groß. 32 bytes in size. Andere Anweisungspaketgrößen sind möglich, einschließlich, jedoch nicht beschränkt auf Anweisungspakete mit einer Größe von 16 Byte, 64 Byte und 128 Byte. Other instruction packet sizes are possible, including, but not limited to instruction packets with a size of 16 bytes, 64 bytes and 128 bytes.
  • In In 2 2 ist eine Anzahl von Anweisungspaketen is a number of instruction packages 220 220 - 238 238 im dynamischen Textteil in the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 dargestellt. shown. Zwar nicht explizit in While not explicitly 2 2 gezeigt, beginnt die Anweisung für Trampolin demonstrated the instruction for trampoline begins 204 204 in vertrauenswürdigen Textteil in trusted text part 202 202 am Rande eines ersten Anweisungspaketes, während die Anweisung für Trampolin on the edge of a first instruction packet while the statement on trampoline 206 206 am Rande eines dritten Anweisungspaketes beginnt. begins at the edge of a third instruction packet. Der nicht vertrauenswürdige Programmcode kann nicht das Sprungbrett The untrusted code can not be the springboard 208 208 aufrufen (das die Kontrolle an den nicht vertrauenswürdigen Programmcode zurückgibt) und nur die Trampoline call (the control to the untrusted program code returns) and only the Trampoline 204 204 und and 206 206 am Rande ihrer jeweiligen Anweisungspakete aufrufen. Calling on the edge of their respective instruction packets. Zur Gewährleistung der Sicherheit kann der nicht vertrauenswürdige Programmcode nicht die Mitte der Anweisungspakete für Trampoline To ensure the safety of the untrusted program code can not the center of the instruction packages for trampolines 204 204 oder or 206 206 oder Sprungbrett or springboard 208 208 adressieren oder aufrufen. address or call. In einer Implementierung werden die ersten 64 KB Speicher im Adressraum des NaCl-Containers In one implementation, the first 64 KB of memory in the address space of the container NaCl 108 108 nicht verwendet und der Rand oder das erste Byte des ersten Anweisungspaketes kann bei 64 KB des NaCl-Containers not used and the edge or the first byte of the first instruction packet may at 64 KB of NaCl container 108 108 liegen. lie. Diese Implementierung ist zur Erkennung von NULL-Zeiger-Dereferenzierungsfehler nützlich. This implementation is useful for detecting NULL pointer Dereferenzierungsfehler. Und, wie bereits erwähnt, kann in 64 Bit-x86- und ARM-Architekturen das Sprungbrett And, as already mentioned, in 64-bit x86 and ARM architectures, the springboard 208 208 vorhanden sein, wird aber nicht benötigt. be present, but is not required.
  • Wenn die Service-Laufzeit If the service runtime 110 110 den UC-Textteil UC body part 212 212 und den UC-Datenteil and UC data part 216 216 des NaCl-Containers of NaCl container 108 108 erstellt, führt diese eine statische Analyse des nicht vertrauenswürdigen Programmcodes aus, um Sicherheitsrisiken vor der Ausführung von nicht vertrauenswürdigem Programmcode zu erkennen. created, it performs a static analysis of the untrusted program code to detect security risks before running untrusted code. Dies umfasst die Anwendung einer Reihe von strukturellen und Ausrichtungsregeln auf die Daten und den Programmcode im vertrauenswürdigen Textteil This includes the application of a number of structural and alignment rules to the data and program code in the trusted part of the text 202 202 , UC-Textteil UC body part 212 212 , dynamischen Textteil , Dynamic text part 214 214 und UC-Datenteil and UC data part 216 216 des NaCl-Containers of NaCl container 108 108 , was eine zuverlässige Disassemblierung und Analyse der Daten und des Programmcodes ermöglicht. Which enables a reliable disassembly and analysis of the data and the program code. Die strukturellen und Ausrichtungsregeln anfordern, dass (a) der vertrauenswürdige Textteil The structural and alignment rules request that (a) the trusted part of the text 202 202 an der 64 KB-Adresse im NaCl-Container at the 64K address in the NaCl containers 108 108 beginnt und an einer Adresse, die ein ganzzahliges Vielfaches der festen Größe des Anweisungspaketes ist, endet, (b) der UC-Textteil and begins at an address that is an integer multiple of the fixed amount of the command packet ends, (b) the text portion UC- 212 212 unmittelbar nach dem vertrauenswürdigen Textteil immediately after the trusted part of the text 202 202 beginnt und an einer Adresse, die ein ganzzahliges Vielfaches der festen Größe des Anweisungspaketes ist, endet und nach dem Laden nicht beschreibbar ist, (c) alle indirekten oder statisch nicht bestimmbaren Steuerungsübertragungen des nicht vertrauenswürdigen Programmcodes eine NaCl-Sprung-Pseudoanweisung verwenden, die sicherstellt, dass das Ziel der Steuerungsübertragung am Rande eines Anweisungspaketes beginnt, (d) der Maschinencode bis zur nächsten Seite des Speichers mit Halt-Anweisungen aufgefüllt wird, (e) der nicht vertrauenswürdige Programmcode keine Anweisungen oder Pseudoanweisungen enthält, die den Rand eines Anweisungspaketes mit fester Größe überschreiten (dh, die über zwei oder mehr Anweisungspakete geschrieben sind), (f) alle gültigen Anweisungsadressen durch eine Fall-Through-Disassemblierung, beginnend mit der Adresse des UC-Textteils and ends at an address that is an integer multiple of the fixed amount of the command packet ends and after loading is not writable, (c) using a NaCl-hop pseudo-statement, all indirect or statically undetermined control transmissions of the untrusted program code that ensures that the objective of controlling transmission starts at the edge of an instruction packet, (d) the machine code is padded to the next page of the memory to hold instructions, (e) does not contain instructions or pseudo-instructions of the untrusted program code corresponding to the edge of an instruction packet with a fixed size exceeds (ie, which are written on two or more command packets), (f) all the valid instruction addresses by a fall-through disassembly, starting with the address of the UC-text portion 212 212 , erreicht werden können und (g) alle Ziele von direkten oder indirekten statisch bestimmbaren Steuerungsübertragungen gültige Anweisungen sind. Can be achieved, and (g) all the targets of direct or indirect control statically determinable transfers are valid instructions. Wie hier verwendet, ist eine Halt-Anweisung jede Anweisung, die einen Fehler generiert und die nicht die feste Größe des Anweisungspaketes überschreitet. As used herein, a stop instruction is any instruction that generates an error and does not exceed the fixed amount of the command packet.
  • Mit der Implementierung dieser strukturellen und Ausrichtungsregeln kann ein Validatormodul innerhalb der Service-Laufzeit With the implementation of these structural and alignment rules a Validatormodul can within the service runtime 110 110 den nicht vertrauenswürdigen Programmcode prüfen, um sicherzustellen, dass (i) keine Daten außerhalb des Sandbox-Speicherplatzes des Native Client-Containers Check the untrusted program code to ensure that (i) no data outside the sandbox space of Native Client container 108 108 direkt geladen oder gespeichert werden, (ii) keine unsicheren Anweisungen aufgerufen, und (iii) die Ausführungssteuerung für nicht vertrauenswürdigen Programmcode nur sicher gültige Anweisungsadressen innerhalb des Speicherplatzes des Native Client-Containers be directly loaded or saved, (ii) called unsafe instructions, and (iii) execution control for untrusted program code only safe valid instruction addresses within the memory space of the Native Client container 108 108 anspricht, einschließlich der Adressen der Service-Laufzeit-Trampoline und Sprungbretter (falls vorhanden), die, wie vorstehend erläutert, an den Rändern der Anweisungspakete beginnen. responsive, including the addresses of the service runtime trampolines and diving boards (if any), as described above, starting at the edges of instruction packages. Zu unzulässigen Arten von unsicheren Anweisungen in dem nicht vertrauenswürdigen Programmcode zählen beispielsweise Anweisungen, die das Betriebssystem direkt aufrufen und Anweisungen, die den Speicherzustand des NaCl-Containers Impermissible types of unsafe instructions in the untrusted program code, for example, include instructions that call the operating system directly and instructions that the memory state of the NaCl container 108 108 oder der Service-Laufzeit or service runtime 110 110 ändern könnten. could change. Alle indirekten oder statisch nicht bestimmbaren Verzweigungsanweisungen innerhalb des nicht vertrauenswürdigen Programmcodes müssen mit Pseudoanweisungen implementiert oder durch diese ersetzt werden, die sicherstellen, dass Ziele der Verzweigungsanweisungen die Ränder der Anweisungspakete mit fester Größe sind. All indirect or statically undetermined branch instructions within the untrusted program code must be implemented with pseudo instructions or replaced by this, to ensure that objects of the branch instructions are the edges of the instruction packets of fixed size. Für eine gegebene indirekte Verzweigungsanweisung wird dies durch die Anwendung einer Maske auf die systemeigene Programmcodeadresse der Verzweigungsanweisung und durch einen Sprung zu der maskierten Adresse erzielt. For a given indirect branch instruction, this is achieved by applying a mask to the native code address of the branch instruction and a jump to the masked address.
  • Das Erstellen und Initialisieren des dynamischen Textteils Creating and initializing the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 durch die Service-Laufzeit by the service runtime 110 110 erfolgt durch das Schreiben einer ganzzahligen Anzahl von Anweisungspaketen mit fester Größe in den dynamischen Textteil is carried out by writing an integer number of instruction packets of fixed size in the dynamic part of the text 214 214 , wie z. Such. B. die in As in 2 2 dargestellten Pakete packages shown 220 220 - 238 238 , wobei jedes Anweisungspaket eine oder mehrere Halt-Anweisungen enthält. Wherein each command packet includes one or more stop orders. Wie bereits erwähnt, wird hier eine Halt-Anweisung verwendet, um jede Anweisung in jeder Rechnerarchitektur zu identifizieren, die einen Fehler generieren oder sonst dazu führen könnte, dass der im NaCl-Container As already mentioned, a stop instruction is used to identify each statement in each computer architecture that generate an error or otherwise could lead to here that the NaCl containers 108 108 ausgeführte nicht vertrauenswürdige Programmcode abgebrochen wird, wenn dieser versucht, nicht validierte Daten im dynamischen Textteil running untrusted code is canceled if he tries, non-validated data in dynamic text part 214 214 zu interpretieren und auszuführen. to interpret and execute. Beispielsweise könnte bei 86x-Implementierungen die Halt-Anweisung eine HLT-Anweisung sein, die die CPU stoppt, bevor weitere Anweisungen ausgeführt werden. For example, with 86x implementations, the maintenance statement could be a HLT instruction that stops the CPU before further instructions are executed. Im Allgemeinen ist die Größe der Halt-Anweisung kleiner als die Größe des Anweisungspaketes, und das Anweisungspaket sollte eine Vielzahl von Halt-Anweisungen (nicht dargestellt) enthalten. In general, the size of the HALT instruction is smaller than the size of the instruction packet and the command packet should a plurality of hold statements (not shown). Die Halt-Anweisung wird zunächst in den dynamischen Textteil The halt statement is first in the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 geschrieben, um eine unbeabsichtigte Interpretation und Ausführung aller möglichen, sich im dynamischen Textteil written to an unintended interpretation and execution all possible, in the dynamic part of the text 214 214 befindenden Daten zu verhindern. To prevent data that are available. 3 3 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens is a flow diagram illustrating a method 300 300 zum dynamischen Einfügen von neuem Programmcode in nicht vertrauenswürdigen Programmcode, der zuvor validiert wurde und der sich in einem nativen Client-Container in der Sandbox befindet. for dynamically inserting a new code into untrusted program code that has been previously validated and is located in a native client containers in the sandbox. Wie vorstehend erläutert, verlassen sich viele native Anwendungen auf die Fähigkeit, neuen Programmcode zur Laufzeit zu generieren oder zu verlinken, um ihre Flexibilität oder Programmiereffizienz zu erhöhen. As explained above, many native applications rely on the ability to generate new code at run time or to increase their flexibility and programming efficiency to link. Beispiele umfassen Anwendungen, die auf dynamisch verlinkten Bibliotheken (DLLs) und Anwendungen zur Erstellung von Just-in-Time(JIT)-Programmcode (dh, Programmcode wird zur Laufzeit generierten, aber nur falls und wenn dies erforderlich ist) beruhen. Examples include applications that dynamically linked libraries (DLLs) and applications to create just-in-time (JIT) program code (ie, program code is generated at runtime, but only if and when required) are based. Das Verfahren the procedure 300 300 ermöglicht das sichere Ausführen solcher Anwendungen als Browser-Anwendungen, indem neuer Programmcode zu bereits validiertem, in einem nativen Client-Container in der Sandbox befindlichen Anwendungscode hinzugefügt wird. allows a safe execution of such applications as browser applications by new program code is added to already validated, located in a native client containers in the sandbox application code.
  • Wie in As in 3 3 dargestellt, sendet ein Thread einer zuvor validierten, aber nicht vertrauenswürdigen Anwendung, die neuen Programmcode in die Anwendung einfügen will, eine Anforderung an die Service-Laufzeit shown, sends a thread of a previously validated but not trusted application, the new code will include in the application a request to the service runtime 110 110 . , Die Service-Laufzeit The service runtime 110 110 empfängt die Anforderung ( receives the request ( 302 302 ). ). In einer Implementierung wird die Anforderung zum Einfügen eines neuen Programmcodes in den vertrauenswürdigen Textteil In one implementation, the request to insert a new program code into the trusted portion of text 202 202 des NaCl-Containers of NaCl container 108 108 durch ein Trampolin (z. B. Trampolin (By a trampoline z. B. trampoline 204 204 ) empfangen und enthält einen Zeiger auf den neuen Programmcode, den die nicht vertrauenswürdige Anwendung einfügen möchte, sowie eine Adresse im dynamischen Textteil ) Received and contains a pointer to the new program code that the untrusted application want to insert, and an address in the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 , an der der neue Programmcode eingefügt werden soll. Where the new program code to be inserted. Die Service-Laufzeit The service runtime 110 110 lädt den neuen Programmcode und schreibt diesen in einen Bereich des Speichers, der weder von der nicht vertrauenswürdigen Anwendung ( invites the new program code and writes it into an area of ​​memory that neither (of the untrusted application 304 304 ) ausführbar noch für diese zum Schreiben zugänglich ist. ) Is open to those writing executed yet. Der Bereich des Speichers kann beispielsweise ein außerhalb des Adressraumes des NaCl-Containers The range of memory may, for example, an outside of the address space of the container NaCl 108 108 liegender Bereich sein, der aber im Adressraum der Service-Laufzeit be lying area but in the address space of the service runtime 110 110 liegt. lies. Dies verhindert die Änderung des neuen Programmcodes durch die nicht vertrauenswürdige Anwendung, während dieser von der Service-Laufzeit This prevents the change in the new program code by the untrusted application, while that of the service runtime 110 110 validiert wird. is validated.
  • In einer Implementierung wendet die Service-Laufzeit In one implementation, the service period applies 110 110 beim Schreiben des neuen Programmcodes in den Bereich des Speichers, der für das Schreiben für die nicht vertrauenswürdige Anwendung nicht zugänglich oder von dieser nicht ausführbar ist, den gleichen Satz von strukturellen und Ausrichtungsregeln an, die ursprünglich auf den nicht vertrauenswürdigen Anwendungscode angewendet wurden, wie vorstehend ausführlicher erläutert. when writing the new program code into the region of memory that is not accessible for writing to the non-trusted application or of this not be executed, the same set of structural and alignment rules that were originally applied to the non-trusted application code, as above explained in more detail. Dazu gehören das Schreiben des neuen Programmcodes, sodass keine Anweisungen die Grenzen der Anweisungspakete mit fester Größe überlappen und damit alle indirekten oder statisch nicht bestimmbaren Verzweigungsanweisungen den Rand des Anweisungspaketes ansprechen. This includes writing the new program code, so no instructions overlap the boundaries of instruction packets of fixed size and therefore any indirect or statically undetermined branch instructions to address the edge of the instruction packet. Dies erfolgt, um eine leichte und zuverlässige Disassemblierung und Analyse des neuen Programmcodes zu ermöglichen. This is done to allow easy and reliable disassembly and analysis of the new program code. In anderen Implementierungen muss die Service-Laufzeit In other implementations, the service runtime must 110 110 beim Schreiben des neuen Programmcodes in den Bereich des Speichers diese strukturellen und Ausrichtungsregeln nicht anwenden, falls dieser nicht für die nicht vertrauenswürdige Anwendung zum Schreiben zugänglich oder ausführbar ist. while writing the new program code in the area of ​​memory these structural and not use alignment rules if it is not open to the untrusted application to write or executable. Da der neue Programmcode in diesen anderen Implementierungen noch validiert werden muss, ist es erforderlich, dass die Service-Laufzeit Since the new program code in these other implementations has yet to be validated, it is necessary that the service runtime 110 110 die Validierung des Programmcodes so durchführt, als ob dieser tatsächlich für die Anwendung der für den nicht vertrauenswürdigen, in den UC-Textteil so performs the validation of the program code, as if this fact for the application of the untrusted, the UC-text part 210 210 geschriebenen Anwendungscode anfänglich geltenden strukturellen und Ausrichtungsregeln geschrieben worden wäre. written application code applicable initially structural and alignment rules were written. Sobald der neue Programmcode in einen Bereich des Speichers geschrieben wurde, der weder von der nicht vertrauenswürdige Anwendung ( Once the new code has been written in an area of ​​memory that neither (of the untrusted application 304 304 ) ausführbar noch für das Schreiben zugänglich ist, versucht die Service-Laufzeit, den neuen Programmcode ( ) Is executable still accessible for writing, the service runtime tries the new program code ( 306 306 ) zu validieren. ) To validate. Ist die Validierung nicht erfolgreich, lehnt die Service-Laufzeit If the validation fails, rejects the service runtime 110 110 den neuen Programmcode ( the new program code ( 310 310 ) ab. ) From. Ist die Validierung jedoch erfolgreich, kopiert die Service-Laufzeit If the validation, however successful, copies the service runtime 110 110 den neuen Programmcode in einen Bereich des dynamischen Textteils the new program code in a region of the dynamic part of the text 214 214 , den die nicht vertrauenswürdige Anwendung ( By the untrusted application ( 312 312 ) ausführen kann, der jedoch von dieser nicht beschreibbar ist. can perform), but which of these is not writable. Bei einer Implementierung kopiert die Service-Laufzeit In one implementation, the service runtime copies 110 110 beispielsweise den neuen Programmcode auf die Adresse im dynamischen Textteil For example, the new program code to the address in the dynamic part of the text 214 214 , der von der nicht vertrauenswürdigen Anwendung angefordert wurde. Which was requested by the untrusted application. Der neue Programmcode wird in einem zweistufigen Prozess in den dynamischen Textteil The new program code is a two-step process in the dynamic part of the text 214 214 kopiert, der nachfolgend in Anlehnung an copied, the following on the basis of 4 4 erläutert wird, wobei sichergestellt ist, dass kein teilweise kopierter Programmcode für die nicht vertrauenswürdige Anwendung zugänglich noch von dieser ausführbar ist. is explained, it being ensured that no partially copied program code for the untrusted application is accessible executable even by the latter.
  • Der von der Service-Laufzeit That of the service runtime 110 110 auf den neuen Programmcode ausgeführte Validierungsprozess ist fast identisch zu dem (vorstehend) erläuterten Validierungsprozess, den die Service-Laufzeit Validation process carried out on the new program code is almost identical to the described (supra) validation process which the service runtime 110 110 auf den nicht vertrauenswürdigen Anwendungscode ausgeführt hatte, als dieser zuerst in den NaCl-Container had run on the untrusted application code, as this first in the NaCl containers 108 108 geladen wurde. was loaded. Der gleiche Satz von strukturellen und Ausrichtungsregeln gilt für den neuen Programmcode, um sicherzustellen, dass dieser, wie vorstehend erläutert, zuverlässig disassembliert werden kann. The same set of structural and alignment rules apply for the new program code that this, as explained above, can be reliably disassembled to ensure. Die gleichen Validierungsregeln werden ebenfalls angewendet, namentlich, dass (i) keine Daten direkt vom Adressraum des Native Client-Containers The same validation rules are also used, notably that (i) no data from the address space of the client Native container 108 108 geladen oder außerhalb von diesem gespeichert werden, (ii) dass keine unsicheren Anweisungen, wie vorstehend definiert, aufgerufen werden, und (iii) die Ausführungssteuerung für den neuen Programmcode spricht sicher nur gültige Anweisungsadressen innerhalb des Adressraumes des Native Client-Containers be loaded or stored outside the latter, (ii) that no unsafe instructions, as defined above, are invoked, and (iii) the execution control to the new program code speaks sure only valid instruction addresses within the address space of the native client container 108 108 an. on. Um die sichere Ansprache der Anweisungsadressen innerhalb des Native Client-Containers The reliable response to the instruction addresses within the Native Client container 108 108 zu gewährleisten, werden alle indirekten oder statisch nicht bestimmbaren Verzweigungsanweisungen innerhalb des neuen Programmcodes durch NaCl-Sprung-Pseudoanweisungen ersetzt. to ensure all indirect or statically undetermined branch instructions to be replaced within the new program code by NaCl-hop pseudo instructions. Hierdurch wird sichergestellt, dass die Ziele der Verzweigungsanweisungen an den Rändern der Anweisungspakete mit fester Größe innerhalb des Adressraumes des NaCl-Containers This ensures that the objectives of branch instructions at the edges of the instruction packets of fixed size within the address space of the container NaCl 108 108 liegen. lie.
  • Darüber hinaus ermöglicht der Validierungsprozess dem neuen Programmcode, alle statisch bestimmbaren Sprünge oder Verzweigungen zu einer Adresse vorzunehmen, die sich in der Mitte eines neuen Programmcode-Anweisungspaketes befindet. In addition, the validation process enables the new program code, all statically determinable jumps or branches to an address to make, which is located in the center of a new program code instruction packet. In einer Implementierung verbietet der Validierungsprozess dem neuen Programmcode den Sprung oder eine Verzweigung zu einer statisch bestimmbaren Adresse in der Mitte eines Anweisungspaketes eines zuvor validierten Programmcodes – unabhängig davon, ob dieser Programmcode der anfänglich nicht vertrauenswürdige Anwendungscode oder ein dynamischer Programmcode war, der zuvor validiert und zu dem anfänglich nicht vertrauenswürdigen Programmcode hinzugefügt wurde. In one implementation, the validation process prohibits the new program code to jump or branch to a statically determinable address in the middle of an instruction packet of a previously validated program codes - regardless of whether this program code initially untrusted application code or a dynamic program code was that validates earlier and was added to the initially untrusted program code. In einer alternativen Implementierung ermöglicht der Validierungsprozess dem neuen Programmcode einige statisch bestimmbare Sprünge oder Verzweigungen zu Adressen, die sich in der Mitte eines Anweisungspaketes eines zuvor validierten Programmcodes befindet. In an alternative implementation of the validation process enables the new program code some statically determinable jumps or branches to addresses located in the middle of an instruction packet of a previously validated program code. Dies wird nachfolgend näher erläutert, mit Bezug auf This is explained in more detail below with reference to 6 6 . ,
  • 4A 4A - 4D 4D sind Blockdiagramme zur Veranschaulichung eines Verfahrens zum Schreiben eines neuen Programmcodes in den dynamischen Textteil are block diagrams illustrating a method for writing a new program code in the dynamic part of the text 214 214 des Native Client-Containers the Native Client container 108 108 . , Wie in As in 4a 4a , ein in den dynamischen Textteil , A text in the dynamic part 214 214 eines Native Client-Containers a Native Client container 108 108 (nicht dargestellt) zu kopierendes neues Programmcodesegment (Not shown) to be copied new program code segment 402 402 , kann eine beliebige Größe besitzen und erfordert mindestens ein Anweisungspaket mit fester Größe (z. B. , An arbitrary size and can have at least requires an instruction package with fixed-size (z. B. 220 220 - 224 224 ) innerhalb des dynamischen Textteils ) Within the dynamic part of the text 214 214 . , Jedes Anweisungspaket innerhalb des dynamischen Textteils Each instruction packet within the dynamic part of the text 214 214 wird mit einer Vielzahl von Halt-Anweisungen initialisiert, wie vorstehend erläutert. is initialized with a variety of maintenance instructions, as explained above. Der Bereich innerhalb eines Anweisungspaketes, der durch die erste Halt-Anweisung belegt ist, wird als Kopf The area within an instruction packet, which is occupied by the first stop instruction, as the head 404 404 des Anweisungspaketes angesehen und der Bereich, der den Rest des Anweisungspaketes bildet, gilt als Rest Viewed of the instruction packet and the portion forming the remainder of the instruction packet is considered residual 406 406 des Anweisungspaketes. the instruction packet. In einer 86x-Architektur besitzt die Halt-Anweisung eine Breite von 1 Byte und der Kopf In a 86x architecture, the HALT instruction has a width of 1 byte, and the head 404 404 eines 32 Byte-Anweisungspaketes besitzt eine Breite von 1 Byte, während der Rest of a 32 byte instruction package has a width of 1 byte, while the remainder 406 406 eine Breite von 31 Byte besitzt. has a width of 31 bytes. In ähnlicher Weise gilt für ARM-Architekturen eine Breite von 4 Byte für die Halt-Anweisung und der Kopf Similarly applies to ARM architectures a width of 4 bytes for the HALT instruction and the head 404 404 eines 32 Byte-Anweisungspaketes besitzt eine Breite von 4 Byte, während der Rest of a 32 byte instruction package has a width of 4 bytes, while the remainder 406 406 eine Breite von 28 Byte besitzt. has a width of 28 bytes. Andere Implementierungen sind natürlich ebenfalls möglich. Other implementations are of course also possible. Beispielsweise kann, wie vorstehend erläutert, das Anweisungspaket eine Breite von 16, 32, 64 oder 128 Byte besitzen. For example, the command packet, as explained above, have a width of 16, 32, 64, or 128 bytes. In diesen Implementierungen ist die Größe des Restteils In these implementations, the size of the residual part 406 406 mehr oder weniger von der Größe des Anweisungspaketes abhängig. more or less depending on the size of the instruction packet. Darüber hinaus kann, wie vorstehend erkennbar ist, die Halt-Anweisung verschiedene Größen bei verschiedenen Rechnerarchitekturen besitzen, und die Kopf- Moreover, as mentioned above can be seen, the maintenance statement have different sizes for different computer architectures, and the head 404 404 und Rest and rest 406 406 -Teile eines Anweisungspaketes können sich in der Größe, je nach Größe der Halt-Anweisung, unterscheiden. Parts of an instruction packet may differ in size, differ depending on the size of the HALT instruction.
  • Wie in As in 4B 4B gezeigt, unterteilt die Service-Laufzeit shown, divides the service runtime 110 110 zuerst, bevor diese das neue Programmcode-Segment first, before this, the new program code segment 402 402 in den dynamischen Textteil in the dynamic part of the text 214 214 kopiert, das neue Programmcode-Segment copied, the new program code segment 402 402 in eine Vielzahl von Anweisungspaketen mit fester Größe in a plurality of instruction packets of fixed size 420 420 - 424 424 , von denen jedes einem jeweiligen Anweisungspaket mit fester Größe in dem dynamischen Textteil Each of which a respective instruction packet with a fixed size in the dynamic part of the text 214 214 entspricht (beispielsweise Anweisungspakete corresponds to (for example, instruction packets 220 220 - 224 224 ). ). Darüber hinaus segmentiert die Service-Laufzeit In addition, segments the service runtime 110 110 jedes Anweisungspaket mit fester Größe each instruction package with fixed size 420 420 - 424 424 in einen Kopfteil in a header 408 408 und in einen Restteil and a residual part 410 410 , die jeweils dem Kopfteil Each said head portion 404 404 und dem Restteil and the rest part 406 406 der Anweisungspakete im dynamischen Textteil the instruction packets in the dynamic part of the text 214 214 entsprechen. correspond.
  • Wie in As in 4C 4C gezeigt, kopiert die Service-Laufzeit shown copies the service runtime 110 110 , nachdem diese das neue Programmcode-Segment After it the new program code segment 402 402 in eine Vielzahl von Anweisungspaketen mit fester Größe in a plurality of instruction packets of fixed size 420 420 - 424 424 segmentiert hat, wobei die Segmente des Weiteren jeweils in einen Kopfteil has segmented, wherein the segments further respectively in a head portion 408 408 und einen Restteil and a residual part 410 410 segmentiert werden, den Restteil are segmented, the rest part 410 410 eines jeden der Anweisungspakete mit fester Größe of each of the instruction packets of fixed size 420 420 - 424 424 in den Restteil in the rest part 406 406 der entsprechenden Anweisungspakete the corresponding instruction packets 220 220 - 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 . , Jedes der Anweisungspakete Each of the instruction packages 220 220 - 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 besteht jetzt aus einem Kopfteil now consists of a head part 404 404 , der eine Halt-Anweisung enthält, und einem Restteil Which contains a HALT instruction, and a remainder partial 406 406 , der den Restteil That the rest part 410 410 eines entsprechenden Anweisungspaketes mit fester Größe a corresponding instruction packet having a fixed size 420 420 - 424 424 des neuen Programmcode-Segmentes the new program code segment 402 402 enthält. contains. Bei einer Implementierung wird, wenn das letzte Anweisungspaket (z. B. Anweisungspaket In one implementation, when the last statement package (z. B. instruction Package 424 424 ) des neuen Programmcode-Segmentes ) Of the new program code segment 402 402 kleiner ist, als sein entsprechendes Anweisungspaket is smaller than its corresponding instruction packet 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 , entweder das Ende des Anweisungspaketes , Either the end of the instruction packet 424 424 mit Halt-Anweisungen vor dem Kopieren in das Anweisungspaket with maintenance instructions before copying them into the instruction package 224 224 aufgefüllt oder wird, wie gezeigt, der nach dem Kopieren des Anweisungspaketes is filled or, as shown, after copying the instruction packet 424 424 im Anweisungspaket in the instruction packet 224 224 verbleibende Speicherplatz wird mit Halt-Anweisungen aufgefüllt. remaining space is filled up with maintenance instructions.
  • Wie in As in 4D 4D gezeigt, kopiert in der zweiten Phase des Kopiervorgangs die Service-Laufzeit shown copied in the second phase of the copying operation, the service runtime 110 110 den Kopfteil the headboard 408 408 aller Anweisungspakete all instruction packages 420 420 - 424 424 des neuen Programmcode-Segmentes the new program code segment 402 402 in das Kopfteil in the headboard 404 404 der entsprechenden Anweisungspakete the corresponding instruction packets 220 220 - 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 . , Dies überschreibt die Halt-Anweisungen im Kopfteil This overrides the maintenance instructions in the header 404 404 der Anweisungspakete the instruction packages 220 220 - 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 . , Zu diesem Zeitpunkt wurde das gesamte validierte neue Programmcodesegment At this point, the entire validated new program code segment 402 402 in den dynamischen Textteil in the dynamic part of the text 214 214 kopiert und wird verfügbar sowie Bestandteil des sich in der Sandbox befindenden nicht vertrauenswürdigen Anwendungscodes im NaCl-Container copied and is available as well as part of in the sandbox that are available untrusted application code in the NaCl containers 108 108 . ,
  • Nachdem die Service-Laufzeit After the service runtime 110 110 die Anweisungspakete mit fester Größe the instruction packets of fixed size 420 420 - 424 424 in die Anweisungspakete in the instruction packages 220 220 - 224 224 im dynamischen Textteil in the dynamic part of the text 214 214 kopiert hat, werden die Änderungen an dem Datenzwischenspeicher („d-Zwischenspeicher”) des Prozessors, in dem die Service-Laufzeit copied, the changes to the data cache ( "D-cache") of the processor in which the service runtime 110 110 ausgeführt wird, geleert (dh, in den Speicher (RAM) geschrieben). empty (ie, into the memory (RAM) is written) is carried out. Dies bewirkt, dass der Anweisungs-Zwischenspeicher des Prozessors („i-Zwischenspeicher”) zunächst invalidiert und zum Speichern der in den neu geschriebenen Anweisungspaketen This causes the instruction cache of the processor ( "i-cache") is first invalidated and for storing in the rewritten instruction packets 420 420 - 424 424 enthaltenen Anweisungen aktualisiert wird. Instructions that will be updated. In einigen Implementierungen werden die im i-Zwischenspeicher gespeicherten Anweisungen über einen expliziten Befehl invalidiert. In some implementations, the data stored in the i-latch instructions on an explicit command are invalidated. In anderen Implementierungen (mit Snoopy-Zwischenspeicher) bemerkt der i-Zwischenspeicher automatisch die in dem d-Zwischenspeicher vorgenommenen Änderungen, wenn die Service-Laufzeit In other implementations (with Snoopy cache) of the i-cache automatically detects the changes in the d-latch when the service runtime 110 110 die Anweisungspakete mit fester Größe the instruction packets of fixed size 420 420 - 424 424 in den d-Zwischenspeicher schreibt. writes in the d-cache. In diesen Implementierungen kann der i-Zwischenspeicher die aktuell gespeicherten Anweisungen invalidieren und aktualisierte Anweisungen erhalten, die die in den dynamisch generierten und validierten Anweisungspaketen mit fester Größe In these implementations, the i-cache may invalidate the instructions currently stored and updated instructions received, the dynamically generated in and validated instruction packets of fixed size 420 420 - 424 424 enthaltenen Anweisungen umfassen. Include instructions contained.
  • Der Zwei-Phasen-Kopiervorgang offenbart sich in den The two-copying process is revealed in the 4A 4A - 4D 4D wird zur Verhinderung ausgeführt, dass ein Thread der nicht vertrauenswürdigen Anwendung Anweisungen eines teilweise in dem dynamischen Textteil is performed to prevent that a thread of the untrusted application instructions of a part in the dynamic part of the text 214 214 geschriebenen Anweisungspaketes lädt und ausführt (z. B. durch Untersuchen des d-Zwischenspeichers, bevor das gesamte Anweisungspaket geschrieben wurde sowie ein automatisches Senden von im d-Zwischenspeicher ermittelten Änderungen an den i-Zwischenspeicher). written instruction packet loads and runs (eg., by examining the D-latch before the entire command packet has been written and an automatic sending determined in the d-latch changes to the i-cache). Da alle teilweise geschriebenen Anweisungspakete Since all instruction packets written-partial 420 420 - 424 424 mit einer Halt-Anweisung beginnen, wird jeder Thread der nicht vertrauenswürdigen Anwendung, der versucht, eine Anweisung eines teilweise geschriebenen Anweisungspaketes zu laden und auszuführen, sofort beendet. start with a stop order, each thread of the untrusted application that attempts to load an instruction of a partially written statement package and run is terminated immediately.
  • 5 5 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens zum dynamischen Löschen von Programmcode einer nicht vertrauenswürdigen Anwendung, die sich in der Sandbox eines Native Client-Containers befindet. is a flow chart illustrating a method for dynamically erasing program code of an untrusted application is in the sandbox a native client container. Wie in As in 5 5 , versucht ein Thread der nicht vertrauenswürdigen Anwendung (darunter kann sich dynamisch hinzugefügter, nicht vertrauenswürdiger Programmcode befinden) einen Programmcodeblock aus der Anwendung zu löschen, sendet dieser eine Anforderung an die Service-Laufzeit Tries a thread of the untrusted application (including can dynamically added, untrusted program code are located) of deleting a program block of code from the application, it sends a request to the service runtime 110 110 , die die Anforderung ( That (the request 502 502 ) erhält. ) Is obtained. In einer Implementierung empfängt ein Trampolin (z. B. Trampolin In one implementation, a trampoline receives (z. B. trampoline 206 206 ) in dem vertrauenswürdigen Textteil ) In the trusted part of the text 202 202 des NaCl-Containers of NaCl container 108 108 die Anforderung zum Löschen eines Programmcodeblocks und erhält einen Zeiger auf die Adresse des zu löschenden Programmcodeblocks sowie die Größe des zu löschenden Programmcodeblocks. the request to delete a code block and a pointer to the address of the erased code block and the size of the erased code block. Der nicht vertrauenswürdige Anwendungs-Thread, der die Service-Laufzeit The untrusted application thread of the service runtime 110 110 zum Löschen des Programmcodeblocks auffordert, sendet ebenfalls Meldungen an alle anderen Anwendungs-Threads, um diese über den zu löschenden Programmcode zu informieren. asks for deletion of the code block, also sends messages to all other application threads to inform them of the program code to be deleted. Wenn die anderen Threads diese Meldung empfangen, setzen diese die Ausführung aus oder gehen in einen sicheren Ausführungsmodus über. If the other threads receive this message, it shall suspend the execution or go over to a safe execution mode. In einer Implementierung können die anderen Threads deren Ausführung durch einen Aufruf eines Trampolins zur Service-Laufzeit In one implementation, the other threads can their execution by a call of a trampoline for service runtime 110 110 aussetzen. expose. In anderen Implementierungen, in denen bestimmte Systemaufrufe erlaubt sind, können die anderen Threads ihre Ausführung einfach durch einen Systemaufruf aussetzen, wodurch deren Ausführung unterbrochen und die Ausführungssteuerung an das Betriebssystem zurückgegeben wird. In other implementations, in which certain system calls are allowed, the other threads can easily expose their execution by a system call, which interrupted their execution and the execution control is returned to the operating system. In weiteren Implementierungen können andere Threads weiterhin den Programmcode nach Erhalt der Löschmeldung ausführen, können aber nur sichere Anweisungen ausführen (z. B. Anweisungen, die keinen Anwendungscode aufrufen, der dynamisch zum dynamischen Textteil In other implementations, other threads can still run the program code after receiving the delete message, but can only secure execute instructions (eg. As instructions that call no application code dynamically for dynamic text part 214 214 des NaCl-Containers of NaCl container 108 108 hinzugefügt wurde). has been added). In dieser Implementierung können Threads der Anwendung eine sichere Ausführungsmarkierung setzen, die angibt, dass diese nur sichere Anweisungen ausführen. In this implementation, threads of the application can set a secure execution mark indicating that these instructions only safe to run.
  • Erhält die Service-Laufzeit Receives the service runtime 110 110 eine Anforderung zum Löschen eines Programmcodeblocks von einem Anwendungs-Thread, wird geprüft, ob der zu löschenden Programmcodeblock vollständig innerhalb des dynamischen Textteils a request for deleting a program code blocks from one application thread, it is checked whether the program to be erased code block completely within the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 ( ( 504 504 ) liegt. ) lies. Dies stellt sicher, dass nur der dynamisch in den NaCl-Container This ensures that only the dynamic in the NaCl containers 108 108 eingefügte Anwendungscode aus dem Container gelöscht werden kann, wie vorstehend beschrieben wurde. Inserted application code can be deleted from the container, as described above. Die Service-Laufzeit The service runtime 110 110 ermittelt, dass einige oder alle der zu löschenden Programmcodeblöcke auf eine Speicheradresse geladen wurden, die außerhalb des dynamischen Textteils determined that some or all of the program code to be deleted blocks were charged to a memory address outside the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 liegen, deshalb verweigert die Service-Laufzeit are, therefore, denied the service runtime 110 110 die Anforderung zum Löschen des Programmcodeblocks ( (The request to delete the code block 506 506 ) und gibt die Ausführungssteuerung wieder zurück an den Thread der Anwendung, der diese aufgerufen hatte. ) And passes execution control back to the thread of the application, which had called them. Falls die Service-Laufzeit If the service runtime 110 110 feststellt, dass der zu löschende Programmcodeblock vollständig innerhalb des dynamischen Textteils determines that the program to be deleted code block completely within the dynamic part of the text 214 214 des NaCl-Containers of NaCl container 108 108 ( ( 504 504 ) liegt, ermittelt diese dann, ob der Programmcodeblock zuvor als eine atomare Einheit, dh, als ein ganzer Programmcodeblock ( ) Is, this then determines whether the code block previously (as an atomic unit, that is, as a whole program code block 508 508 ), eingefügt wurde. ), Was inserted. Ermittelt die Service-Laufzeit Determines the service runtime 110 110 , dass der Programmcodeblock zuvor als eine atomare Einheit ( That the program code block previously (as an atomic unit 508 508 ) eingefügt wurde, akzeptiert diese die Anforderung zum Löschen des Programmcodeblocks ( ) Has been inserted, they accept the request to delete the code block ( 512 512 ). ). Ermittelt jedoch die Service-Laufzeit However determines the service runtime 110 110 , dass der Programmcodeblock zuvor nicht als eine atomare Einheit ( That the program code block not previously (as an atomic unit 508 508 ) eingefügt wurde, stellt diese fest, ob der Programmcodeblock irgendeine interne Adresse enthält, die Ziel eines nicht vertrauenswürdigen Anwendungscodes sind (dh aufgerufen werden), der nicht ebenfalls zu löschen ( ) Was added, detects this, whether the program code block contains any internal address, the destination of a non-trusted application codes (to be called that is) not to delete the likewise ( 510 510 ) ist. ) Is. Falls ja, dann verweigert die Service-Laufzeit erneut die Anforderung zum Löschen des Programmcodeblocks ( If so, then the service runtime denies the request to delete the code block (again 506 506 ), und der Thread der Anwendung, der diese aufgerufen hatte, erhält erneut die Ausführungssteuerung. ), And the thread of the application, which had called them receives the execution control again. Ermittelt die Service-Laufzeit Determines the service runtime 110 110 jedoch, dass der Programmcodeblock keine beliebige interne Adresse enthält, die Ziel eines nicht vertrauenswürdigen Anwendungscodes sind, der nicht ebenfalls gelöscht ( however, that the program code block does not contain any internal address, the destination of a non-trusted application codes which does not also deleted ( 510 510 ) werden soll, akzeptiert diese die Anforderung zur Löschung des Programmcodeblocks ( to be), it accepts the request for deleting the program code block ( 512 512 ). ).
  • Sobald die Service-Laufzeit Once the service runtime 110 110 die Anforderung zur Löschung des Programmcodeblocks ( the request for deletion of the program code block ( 512 512 ) akzeptiert, wartet diese, bis alle derzeitig ausgeführten Anwendungs-Threads deren Ausführung aussetzen oder in einen sicheren Ausführungsmodus ( ) Accepted, it waits until all the application threads currently running to suspend their execution, or (in a secure execution mode 514 514 ) übergehen. ) Merge. Wie hier verwendet, ist ein sicherer Ausführungsmodus ein Ausführungsmodus, in dem ein nicht vertrauenswürdiger Programmcode einen begrenzten Satz von Anweisungen ausführt, wobei die Anweisungen nicht versuchen, einen dynamisch hinzugefügten Programmcode aufzurufen oder auszuführen. As used herein, a secure execution mode is an execution mode in which an untrusted program code performs a limited set of instructions, the instructions do not attempt to access a program code dynamically added or run. Dies geschieht zur Sicherstellung, dass keine aktuell ausgeführten Anwendungs-Threads versuchen, einen zu löschenden Programmcode aufzurufen. This is done to ensure that no currently running application threads try to call one to delete code. Bei einer Implementierung können Anwendungs-Threads durch Aufruf eines Trampolins In one implementation, application threads can call a trampoline 204 204 oder or 206 206 zur Service-Laufzeit the service runtime 110 110 in einen sicheren Ausführungsmodus übergehen. proceed in a secure execution mode. In dieser Implementierung kann die Service-Laufzeit In this implementation, the service runtime 110 110 durch Zählung der Anzahl der das Trampolin by counting the number of the trampoline 204 204 oder or 206 206 aufgerufenen Threads und einem Vergleich mit der gezählten Gesamtanzahl der Anwendungs-Threads ermitteln, ob alle Anwendungs-Threads in den sicheren Ausführungsmodus übergegangen sind. called threads and comparing the counted total number of application threads to determine if all application threads have been transferred to the safe execution mode. In einer anderen Implementierung können Anwendungs-Threads den sicheren Ausführungsmodus durch das Setzen einer sicheren Ausführungsmarkierung und der Ausführung eines begrenzten Satzes von Anweisungen, die keinen dynamisch eingefügten Programmcode aufrufen, kennzeichnen. In another implementation, application threads can secure execution mode flag by setting a secure execution flag and the execution of a limited set of instructions that call does not dynamically inserted code. In dieser Implementierung kann die Service-Laufzeit In this implementation, the service runtime 110 110 ermitteln, ob sich alle Anwendungs-Threads in einem sicheren Ausführungsmodus befinden, in dem diese die Anzahl der Threads, die die sichere Ausführungsmarkierung gesetzt haben, zählt und diese Anzahl mit der Gesamtanzahl der Threads vergleicht. determine whether all application threads are in a secure execution mode in which this the number of threads that have set the safe execution mark counts and compares this number with the total number of threads.
  • Sobald die Service-Laufzeit Once the service runtime 110 110 bestimmt, dass alle ausgeführten Threads entweder die Ausführung ausgesetzt haben oder sich in einem sicheren Ausführungsmodus befinden, schreibt diese die mindestens eine Halt-Anweisung über den gesamten zu löschenden ( determines that all running threads are exposed to either the execution or is in a secure execution mode, it writes the at least one stop instruction over the entire region to be deleted ( 516 516 ) Programmcodeblock. ) Program code block. Anschließend gibt diese die Ausführungssteuerung an den Anwendungs-Thread, der das Löschen des Programmcodeblocks angefordert hatte, und an die Anwendungs-Threads, die die Ausführung ausgesetzt hatten, zurück und signalisiert den sich im sicheren Ausführungsmodus befindenden Anwendungs-Threads, dass diese den sicheren Ausführungsmodus ( Then passes this execution control to the application thread that requested the deletion of the code block, and the application threads that had suspended the execution, back and signaled the that are available in the secure execution mode application threads that this secure execution mode ( 518 518 ) verlassen können. ) being able to leave. Dies kann, z. This can, for example. B. durch Aufruf eines Sprungbrettes für jene Anwendungs-Threads, die ihre Ausführung durch Aufruf eines Trampolins zur Service-Laufzeit angehalten hatten oder durch das Löschen einer sicheren Ausführungsmarkierung, die durch die Anwendungs-Threads gesetzt wurden, die sich einem sicheren Ausführungsmodus befinden, erfolgen. For example, by calling a springboard for those application threads that had their execution halted by calling a trampoline for service runtime or by deleting a secure execution flag that have been set by the application threads that are a secure execution mode occur , Anzumerken ist, dass nach Fortsetzung der Ausführung oder dem Beenden des sicheren Ausführungsmodus einige Anwendungs-Threads den gerade gelöschten Programmcodeblock aufrufen könnten. It should be noted that some application threads could call the just erased code block by continuing the execution or the termination of the secure execution mode. Wenn diese dies tun, werden sie die Halt-Anweisung ausführen, die die Service-Laufzeit If these do this, they will carry out the maintenance statement that the service runtime 110 110 über den gelöschten Programmcodeblock geschrieben hatte, wodurch die Ausführung der CPU sofort angehalten wird. had written about the deleted program code block, so that the execution of the CPU is stopped immediately. Somit gewährleistet dies keine korrekte Ausführung des Programmcodes, aber dieses Löschverfahren sorgt für eine sichere Ausführung von nicht vertrauenswürdigem Anwendungscode. Thus, this does not ensure correct execution of the program code, but this deletion method ensures safe execution of untrusted application code.
  • 6 6 ist ein Ablaufdiagramm zur Veranschaulichung eines Verfahrens zur Ermittlung, ob dem neuen Programmcode ein Aufruf oder eine Verzweigung zu einer Adresse in der Mitte eines Anweisungspaketes mit fester Größe eines zuvor validierten Programmcodes gestattet ist. is a flow chart illustrating a method for determining whether the new program code, a call is permitted or branching to an address in the middle of a command packet having a fixed size of a previously validated program code. Wie in der Figur gezeigt, kann die Service-Laufzeit As shown in the figure, the service life may 110 110 bei der Validierung eines neuen Programmcodes ermitteln, ob der neue Programmcode einen Sprung oder eine Verzweigung zu einer Zieladresse versucht, die nicht am Rande eines Anweisungspaketes eines zuvor validierten Programmcodes ( determined during the validation of a new program code, whether the new program code attempts a jump or branch to a target address that does not (at the edge of an instruction packet of a previously validated program code 602 602 ) liegt. ) lies. In einer Implementierung sind solche Anweisungen nicht zulässig, und die Service-Laufzeit In one implementation, such statements are not allowed, and the service runtime 110 110 würde den neuen Programmcode ablehnen. would reject the new code. Bei der in When in 6 6 dargestellten Implementierung ermittelt die Service-Laufzeit Implementation shown determines the service runtime 110 110 zunächst die Grenzen des Anweisungspaketes eines zuvor validierten Programmcodes, der das Sprung- oder Verzweigungsziel ( First, the boundaries of the instruction packet of a previously validated program code (the jump or branch target 604 604 ) enthält. ) Contains. Die Service-Laufzeit The service runtime 110 110 führt dann eine Untermenge des Validierungsalgorithmus auf das Anweisungspaket aus, um zu ermitteln, ob das Anweisungspaket NaCl-Pseudoanweisungen ( then performs a subset of the validation algorithm to the instruction package to determine whether the instruction packet NaCl pseudo-instructions ( 606 606 ) enthält. ) Contains. Solche Anweisungen können beispielsweise die vorstehend beschriebene NaCl-Sprunganweisung umfassen, was sicherstellt, dass alle Sprünge oder Verzweigungen zu einer Adresse am Rande eines Anweisungspaketes erfolgen. Such instructions may for example comprise the above-described NaCl jump instruction, which ensures that all jumps or branches to an address on the edge of an instruction packet done. Die Sprung- oder Verzweigungsanweisung in dem neuen Programmcode ( The jump or branch instruction in the new program code ( 608 608 ) ist zulässig, falls das Anweisungspaket keine NaCl-Pseudoanweisungen enthält oder die Zieladresse der Sprung- oder Verzweigungsanweisung des neuen Programmcodes keine NaCl Pseudoanweisungen innerhalb des Anweisungspaketes teilt. ) Is allowed if the instruction package contains no NaCl pseudo-instructions, or the destination address of the jump or branch instruction of the new program code does not share NaCl pseudo instructions within the instruction packet. Teilt jedoch die Zieladresse der Sprung- oder Verzweigungsanweisung des neuen Programmcodes eine NaCl-Pseudoanweisung innerhalb des Anweisungspaketes, wird der neue Programmcode abgelehnt ( but shares the destination address of the jump or branch instruction of the new program code, a pseudo-NaCl instruction within the instruction packet, the new program code is rejected ( 610 610 ), und die Service-Laufzeit ), And the service runtime 110 110 gibt die Kontrolle, wie vorstehend beschrieben, an den aufrufenden Thread zurück. are in control, as described above, back to the calling thread.
  • In den vorstehend beschriebenen Verfahren und Vorrichtungen wurde das Hinzufügen von nicht vertrauenswürdigem neuem Programmcode zu einem Speicher-Container, der eine zuvor validierte, aber nicht vertrauenswürdige Anwendung enthält, durch die Anwendung bestimmter struktureller und Ausrichtungsregeln auf beide, den zuvor validierten, aber nicht vertrauenswürdigen Anwendungscode und den neu einzufügenden Programmcode, erlaubt. In the above-described methods and apparatuses adding untrusted new program code has become a storage container that contains a previously validated, but untrusted application, by the application of certain structural and alignment rules on both the previously validated, but untrusted application code and the newly inserted code allows. Dies ermöglicht die zuverlässige Disassemblierung von nicht vertrauenswürdigem Anwendungscode und neuem Programmcode. This enables reliable disassembly of untrusted application code and new code. In anderen Implementierungen kann die Komplexität der Anwendung solcher strukturellen und Ausrichtungsregeln durch das Schreiben von nicht vertrauenswürdigem Anwendungs- und neuem Programmcode auf Speicherseiten, die vom Betriebssystem interpretiert und verstanden werden können, statt der Ausrichtung von Anweisungspaketen innerhalb des NaCl-Containers In other implementations, the complexity of the application of such structural and alignment rules by writing untrusted application and a new program code to memory pages that can be interpreted by the operating system and understood, instead of aligning instruction packets within the NaCl container 108 108 , die von der Service-Laufzeit Provided by the service runtime 110 110 interpretiert und verstanden werden, vermieden werden. be interpreted and understood, be avoided. In dieser Implementierung kann die Service-Laufzeit In this implementation, the service runtime 110 110 nicht vertrauenswürdigen Anwendungscode oder neuen Programmcode auf nicht ausführbare Speicherseiten schreiben, bevor eine Validierung des Programmcodes vorgenommen wird. Write untrusted application code or new code on non-executable memory pages before a validation of the program code is made. Falls die Service-Laufzeit If the service runtime 110 110 den Programmcode nachfolgend validiert, kann diese die Ausführungsbits der Speicherseite für eine zulässige Ausführung des Programmcodes setzen und die Seite an einem Ort innerhalb des dynamischen Textteils the program code validated below, this may set the executed bits of the memory page for a valid execution of the program code and the side at a location within the dynamic part of the text 214 214 abbilden, der von nicht vertrauenswürdigem Programmcode lesbar und ausführbar ist, der aber von nicht vertrauenswürdigem Programmcode nicht beschrieben werden kann. map that is readable by untrusted program code and executable, but which can not be described by untrusted code. Für das Löschen von Programmcode kann die Service-Laufzeit For deleting code the service life may 110 110 zuerst auf das Aussetzen der Ausführung aller laufenden Threads warten oder in einen Ausführungsmodus übergehen, wie vorstehend beschrieben, anschließend die Ausführungsbits der Speicherseite, auf die der Programmcode geschrieben wurde, deaktivieren, den Programmcode sicher löschen und dessen weitere Ausführung durch eine nicht vertrauenswürdige Anwendung verhindern. first wait for the suspension of the execution of all running threads or go into a run mode as described above, then the execute bits of the memory page to which the code has been written, clear, safely delete the code and prevent its further execution by an untrusted application. Alternativ kann die Speicherseite mit Halt-Anweisungen überschrieben werden. Alternatively, the memory page can be overwritten with maintenance instructions.
  • Implementierungen der verschiedenen, hier beschriebenen Techniken können in eine digitale Elektronikschaltung, Rechnerhardware, Firmware, Software oder Kombinationen derselben implementiert werden. Implementations of the various techniques described herein may be implemented in the same digital electronic circuitry, computer hardware, firmware, software or combinations thereof. Implementierungen können als ein Rechnerprogrammprodukt implementiert werden, dh, als ein materielles, auf einem maschinenlesbaren Speichermedium verkörpertes Rechnerprogramm zur Ausführung von oder zur Steuerung des Betriebs einer Datenverarbeitungsvorrichtung, z. Implementations may be implemented as a computer program product, that is, as a material, embodied on a machine-readable storage medium, the computer program for execution by, or to control the operation of a data processing apparatus such. B. eines programmierbaren Prozessors, einer Rechnereinheit oder mehreren Rechnereinheiten. For example, a programmable processor, a computer unit or a plurality of computer units. Ein Rechnerprogramm, wie das/die obenstehend beschriebenen Rechnerprogramm(e), kann in jeder beliebigen Form von Programmiersprache geschrieben werden, einschließlich kompilierter oder übersetzter Sprachen, und das Programm kann in jeder beliebigen Form eingesetzt werden, auch als eigenständiges Programm oder als Modul, Komponente, Subroutine oder als sonstige Einheit, die sich zur Verwendung innerhalb einer Rechnerumgebung eignet. A computer program, such as the / the computer program described above (e), can be written in any form of programming language, including compiled or translated languages, and the program can be used in any form, including as a stand-alone program or as a module, component , subroutine, or other unit suitable for use within a computing environment. Ein Rechnerprogramm kann auf einer oder mehreren Rechnereinheiten ausgeführt werden, die an einem Standort angeordnet oder über mehrere Standorte verteilt und über ein Kommunikationsnetzwerk verbunden sind. A computer program can be executed on one or more computer units, which are located at one site or distributed across multiple sites and interconnected by a communication network.
  • Die beschriebenen Verfahrensschritte können von einem oder mehreren programmierbaren Prozessoren durchgeführt werden, die ein oder mehrere Rechnerprogramme ausführen, um Funktionen durch Vornahme von Operationen auf Eingangsdaten und das Generieren von Ausgaben auszuführen. The method steps described can be carried out by one or more programmable processors executing one or more computer programs to perform functions by performing operations on input data and generating output. Verfahrensschritte können auch durch Sonderzweckschaltungen durchgeführt werden, und der Apparat kann als Sonderzweckschaltungen implementiert werden, z. Process steps can be carried out by special purpose circuits, and the apparatus can be implemented as special purpose circuits such. B. ein FPGA (Field Programmable Gate Array) oder eine ASIC (anwendungsspezifische integrierte Schaltung). As an FPGA (Field Programmable Gate Array) or an ASIC (application specific integrated circuit).
  • Prozessoren, die zur Ausführung eines Rechnerprogramms geeignet sind, schließen beispielsweise sowohl allgemeine und als auch Spezial-Mikroprozessoren sowie alle Arten eines oder mehrerer Prozessoren jeglicher Art von Digitalrechner ein. Processors that are capable of executing a computer program, for example, include both general and special purpose microprocessors, as well as well as all kinds of one or more processors of any kind of digital computer. Ganz allgemein nimmt ein Prozessor Befehle und Daten von einem Festwertspeicher oder einem Arbeitsspeicher oder von beiden entgegen. More generally accepts a processor will receive instructions and data from a read-only memory or a random access memory or both. Elemente einer Rechnereinheit sind ein Prozessor zum Ausführen von Befehlen und ein oder mehrere Speichergeräte zum Speichern von Befehlen und Daten. Elements of a computer are a processor unit for executing instructions and one or more memory devices for storing instructions and data. Ganz allgemein kann eine Rechnereinheit auch ein oder mehrere Massenspeichergeräte zum Speichern von Daten, z. Generally speaking, a computer unit may also include one or more mass storage devices for storing data, eg. B. Magnet-, magnetooptische oder optische Disketten bzw. eine operativ mit solch einem Speichergerät gekoppelte Rechnereinheit umfassen, um Daten von diesem zu empfangen bzw. Daten an dieses zu übertragen. include for example magnetic, magneto-optical or optical disks or a surgically coupled with such a storage device processing unit to receive data from or transfer data to it. Informationsträger, die zum Speichern von Rechnerprogrammanweisungen und -daten geeignet sind, umfassen alle Formen von nicht flüchtigen Speichern, einschließlich beispielsweise Halbleiter-Speichergeräte, wie z. Information carriers suitable for storing computer program instructions and data include all forms of nonvolatile memory, including, for example, semiconductor memory devices, such. B. EPROM, EEPROM und Flash-Speicher, Magnetplatten, wie z. As EPROM, EEPROM, and flash memory, magnetic disks such. B. interne Festplatten oder Wechseldatenträger, magnetooptische Platten und CD-ROMs sowie DVD-ROMs. As internal hard disks or removable media, magneto-optical disks and CD-ROMs and DVD-ROMs. Prozessor und Speicher können durch logische Sonderzweckschaltungen ergänzt werden oder darin eingebaut sein. Processor and memory can be supplemented by special purpose logic circuits, or incorporated therein.
  • Um für eine Interaktion mit einem Benutzer zu sorgen, können Implementierungen auf einer Rechnereinheit mit einem Anzeigegerät, wie z. In order to provide for interaction with a user, implementations may be on a computer unit with a display device such. B. einem Kathodenstrahlröhren-(CRT) oder Flüssigkristalldisplay-(LCD)-Monitor zum Anzeigen von Informationen für den Benutzer und einer Tastatur und einer Zeigeeinrichtung, wie z. As a cathode ray tube (CRT) or liquid crystal display (LCD) monitor for displaying information to the user and a keyboard and a pointing device such. B. eine Maus oder ein Trackball, über die der Benutzer Eingaben an die Rechnereinheit vornehmen kann, implementiert werden. As a mouse or a trackball, by which the user can enter data to the computer unit can be implemented. Es können auch andere Arten von Einrichtungen verwendet werden, um für eine Interaktion mit einem Nutzer zu sorgen; It can also be used other types of facilities in order to provide for interaction with a user; beispielsweise kann eine dem Benutzer gelieferte Rückkopplung beliebiger Form von sensorischer Rückkopplung vorliegen, z. For example, there may be a feedback supplied to the user any form of sensory feedback, z. B. eine visuelle Rückkopplung, auditive Rückkopplung oder taktile Rückkopplung; B. visual feedback, auditory feedback, or tactile feedback; und die Eingabe von dem Nutzer kann in beliebiger Form empfangen werden, einschließlich akustischer, Sprach- oder taktiler Eingabe. and the input from the user can be received in any form, including acoustic, speech, or tactile input.
  • Implementierungen können in einem Rechnersystem vorgenommen werden, das eine Back-End-Komponente (z. B. einen Datenserver) oder eine Middleware-Komponente (z. B. einen Anwendungsserver) oder eine Front-End-Komponente (z. B. eine Client-Rechnereinheit mit grafischer Benutzeroberfläche oder einem Web-Browser) umfasst, worüber der Benutzer mit einer Implementierung interagieren kann oder eine beliebige Kombination aus solchen Back-End-, Middleware- oder Front-End-Komponenten. Implementations may be performed in a computer system that includes a back-end component (e.g., as a data server), or a middleware component (e.g., example, an application server), or a front-end component (e.g., example, a client includes -Rechnereinheit graphical user interface or a Web browser), what the user can interact with an implementation, or any combination of such back-end, middleware, or front-end components. Die Komponenten können durch eine beliebige Form oder ein beliebiges Medium digitaler Datenkommunikation miteinander verbunden sein, wie z. The components can be interconnected by any form or medium of digital data communication, any such. B. ein Kommunikationsnetzwerk. As a communication network. Beispiele von Kommunikationsnetzwerken beinhalten ein lokales Netzwerk (LAN) und ein Weitverkehrsnetzwerk (WAN), wie z. Examples of communication networks include a local area network (LAN) and a wide area network (WAN), such as. B. das Internet. As the Internet.
  • Während bestimmte Funktionen der beschriebenen Implementierungen, wie hierin beschrieben, gezeigt wurden, erkennt ein Fachmann auf dem Gebiet jedoch, dass hier viele Modifikationen, Alternativen, Änderungen und Abwandlungen möglich sind. While certain features of the described implementations as described herein, have been shown, one skilled in the art, however, that many modifications, alternatives, changes and modifications are possible. Es sollte daher verstanden werden, dass die angehangenen Ansprüche alle solchen derartigen Modifikationen und Änderungen, die in den Anwendungsbereich der Ausführungsformen fallen, umfassen. It should be understood, therefore, that the claims be overhung all such such modifications and changes as fall within the scope of embodiments include.

Claims (30)

  1. Rechnersystem, das einen mit einem Speicher gekoppelten Prozessor umfasst, worin der Speicher Anweisungen speichert, die den Prozessor zu Folgendem veranlassen: das Empfangen einer Anweisung ( A computer system comprising a processor coupled to a memory, wherein said storage stores instructions that cause the processor to: receiving an instruction ( 302 302 ), um einen neuen Teil von Programmcode ( ) To a new part of program code ( 402 402 ) in eine in der Sandbox befindlichen Anwendung einzufügen; insert) in a located in the sandbox application; das Schreiben ( the writing ( 304 304 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) in einem ersten Bereich eines sicheren Teils ( ) (In a first region of a secure part 108 108 ) des Speichers, der von der in der Sandbox befindlichen Anwendung nicht ausgeführt werden kann; ) Of the memory that can not be executed by the application located in the sandbox; das Validieren ( validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ); ); und das Schreiben ( and writing ( 312 312 ) des validierten Teils des Programmcodes in einen zweiten Bereich ( () Of the validated portion of the program code in a second area 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers, der von der in der Sandbox befindlichen Anwendung ausgeführt werden kann. ) Of memory that can be executed by located in the sandbox application.
  2. Rechnersystem nach Anspruch 1, worin die im Speicher abgelegte Anweisung, die den Prozessor ( A computer system according to claim 1, wherein the in-memory instruction (the processor 304 304 ) veranlasst, den neuen Teil des Programmcodes ( ) Causes (the new part of the program code 402 402 ) in den ersten Bereich des sicheren Teils ( ) (In the first portion of the secure portion 108 108 ) des Speichers zu schreiben, eine Anweisung zum Schreiben des neuen Teils des Programmcodes ( writing) of memory (an instruction to write the new part of the program code 402 402 ) umfasst, sodass keine Anweisungen über die festen Größengrenzen innerhalb des ersten Bereichs des sicheren Teils ( ) Comprises, so that no instructions concerning the fixed size limits within the first area of ​​the secure part ( 108 108 ) des Speichers geschrieben werden. ) Of the memory to be written.
  3. Rechnersystem nach Anspruch 1 oder 2, worin die im Speicher abgelegte Anweisung, die den Prozessor veranlasst, den validierten Teil des Programmcodes in den zweiten Bereich ( A computer system according to claim 1 or 2, wherein the in-memory instruction that causes the processor, (the validated portion of the program code in the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers zu schreiben ( to write) of the memory ( 312 312 ), eine Anweisung zum Schreiben ( ), An instruction to write ( 312 312 ) des validierten Teils des Programmcodes umfasst, sodass keine Anweisungen über die festen Größengrenzen innerhalb des zweiten Bereichs ( ) Of the validated portion of the program code includes, so that no instructions concerning the fixed size limits within the second region ( 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers geschrieben werden. ) Of the memory to be written.
  4. Rechnersystem nach Anspruch 1, 2 oder 3, worin die im Speicher abgelegte Anweisung die den Prozessor veranlasst, den neuen Teil des Programmcodes ( A computer system according to claim 1, 2 or 3, wherein the instructions stored in the memory causing the processor, the new part of the program code ( 402 402 ) zu validieren ( validate) ( 306 306 ), eine Anweisung zur Ermittlung umfasst, ob keine der Anweisungen in dem neuen Teil des Programmcodes ( ), Includes an instruction for determining whether any of the instructions (in the new part of the program code 402 402 ) direkt das Betriebssystem aufruft. ) Directly calls the operating system.
  5. Rechnersystem nach Anspruch 1, 2 oder 3, worin die im Speicher abgelegte Anweisung, die den Prozessor veranlasst, den neuen Teil des Programmcodes ( A computer system according to claim 1, 2 or 3, wherein the in-memory instruction that causes the processor, (the new part of the program code 402 402 ) zu validieren ( validate) ( 306 306 ), eine Anweisung zur Ermittlung umfasst, ob keine der Anweisungen in dem neuen Teil des Programmcodes ( ), Includes an instruction for determining whether any of the instructions (in the new part of the program code 402 402 ) den Zustand des sicheren Teils ( ) (The state of the secure portion 108 108 ) des Speichers ändern kann. ) May change the memory.
  6. Rechnersystem nach Anspruch 1, 2 und 3, worin die im Speicher abgelegte Anweisung, die den Prozessor veranlasst, den neuen Teil des Programmcodes ( A computer system according to claim 1, 2 and 3, wherein the in-memory instruction that causes the processor, the new part of the program code ( 402 402 ) zu validieren ( validate) ( 306 306 ), eine Anweisung zur Ermittlung umfasst, ob alle indirekten Verzweigungsanweisungen in dem neuen Teil des Programmcodes ( ), Includes an instruction for determining whether any indirect branch instructions (in the new part of the program code 402 402 ) Adressen der in der Sandbox befindlichen Anwendung ansprechen, die auf die festen Größengrenzen ( address) addresses the application located in the sandbox, which (to the fixed size limits 420 420 - 424 424 ) innerhalb des ersten Bereichs des sicheren Teils ( ) (Within the first region of the secure portion 108 108 ) des Speichers ausgerichtet sind. ) Are aligned with the memory.
  7. Rechnersystem nach einem der Ansprüche 1–6, worin die im Speicher abgelegte Anweisung, die den Prozessor veranlasst, den validierten Teil des Programmcodes in den zweiten Bereich ( A computer system according to any one of claims 1-6, wherein the in-memory instruction that causes the processor, (the validated portion of the program code in the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers zu schreiben ( to write) of the memory ( 312 312 ), der von der in der Sandbox befindlichen Anwendung ausgeführt werden kann, Anweisungen zum Schreiben ( ) That can be executed by the located in the sandbox application instructions for writing ( 312 312 ) des validierten Teils des Programmcodes umfasst, sodass alle indirekten Verzweigungsanweisungen im validierten Teil des Programmcodes Adressen der in der Sandbox befindlichen Anwendung ansprechen, die auf die festen Größengrenzen innerhalb des sicheren Teils ( ) Of the validated portion of the program code includes, so that all the indirect branch instructions in the validated portion of the program code addresses of the application located in the sandbox address which (the fixed size limits within the secure portion 108 108 ) des Speichers ausgerichtet sind. ) Are aligned with the memory.
  8. Rechnersystem nach irgendeinem der Ansprüche 1–7, worin die im Speicher abgelegte Anweisung, die den Prozessor veranlasst, den neuen Teil des Programmcodes ( A computer system according to any one of claims 1-7, wherein the in-memory instruction that causes the processor, (the new part of the program code 402 402 ) zu validieren ( validate) ( 306 306 ), eine Anweisung zur Ermittlung umfasst, ob keine der Anweisungen in dem neuen Teil des Programmcodes ( ), Includes an instruction for determining whether any of the instructions (in the new part of the program code 402 402 ) eine Speicheradresse direkt ansprechen, die außerhalb des Bereichs des sicheren Teils ( responsive) a memory address directly, the (outside the scope of the secure portion 108 108 ) des Speichers liegt. ) Of the memory is located.
  9. Rechnersystem nach irgendeinem der Ansprüche 1–8, worin der zweite Bereich ( A computer system according to any one of claims 1-8, wherein the second region ( 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers in Anweisungspakete mit fester Größe ( ) Of the memory into instruction packets (fixed size 220 220 - 238 238 ) unterteilt und jedes Anweisungspaket ( ) Is divided and each instruction packet ( 220 220 - 238 238 ) anfänglich mit einer Vielzahl von Halt-Anweisungen gefüllt wird. ) Is initially filled with a plurality of stop instructions.
  10. Rechnersystem nach Anspruch 9, worin die Anweisung zum Schreiben ( A computer system according to claim 9, wherein the instruction for writing ( 312 312 ) des validierten Teils des Programmcodes in den zweiten Bereich ( () Of the validated portion of the program code in the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers Anweisungen zu Folgendem umfasst: das Segmentieren des validierten Teils des Programmcodes in eine oder mehrere Einheiten ( ) Of said memory comprises instructions to: segmenting the validated portion of the program code into one or more units ( 420 420 - 424 424 ), wobei jede Einheit ( ), Each unit ( 420 420 - 424 424 ) einem Anweisungspaket ( ) (One instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers mit einem Kopfteil ( ) Of the memory (with a head part 408 408 ) und einem Restteil ( ) And a residual part ( 410 410 ) entspricht, worin die Größe des Kopfteils ( ) Wherein the size of the head part ( 408 408 ) der Größe einer Halt-Anweisung und die Größe des Restteils ( ) The size of a HALT instruction and the size of the remainder part ( 410 410 ) der Größe eines Anweisungspaketes ( ) (The size of an instruction packet 220 220 - 224 224 ), abzüglich der Größe der Halt-Anweisung, entspricht; ), Minus the size of the halt instruction, corresponds; Schreiben des Restteils ( Writing the rest part ( 410 410 ) jeder Einheit ( ) Of each unit ( 420 420 - 424 424 ) in das entsprechende Anweisungspaket ( ) (In the corresponding instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers; ) Of the memory; und das Schreiben des Kopfteils ( and the writing of the head ( 408 408 ) jeder Einheit ( ) Of each unit ( 420 420 - 424 424 ) in das entsprechende Anweisungspaket ( ) (In the corresponding instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers. ) Of the memory.
  11. Rechnersystem, das einen mit einem Speicher gekoppelten Prozessor umfasst, worin der Speicher Anweisungen speichert, die den Prozessor zu Folgendem veranlassen: das Empfangen ( A computer system comprising a processor coupled to a memory, wherein said storage stores instructions that cause the processor to: receiving ( 502 502 ) einer Anforderung zum Löschen eines zuvor eingefügten Programmcodeblocks aus einer in der Sandbox befindlichen Anwendung, die in einen sicheren Teil des Speichers ( ) A request to delete a previously inserted code block from a present in the sandbox application (in a secure part of the memory 108 108 ) geschrieben wurde; ) Was written; das Ermitteln ( determining ( 504 504 ), ob der zuvor eingefügte Programmcodeblock sich vollständig innerhalb eines dynamischen Textteils ( ) Whether the previously inserted code block completely (within a dynamic part of the text 214 214 ) des sicheren Teils ( () Of the secure portion 108 108 ) des Speichers befindet; ) Of the memory is; und das Ablehnen ( and rejecting ( 506 506 ) der Anforderung zum Löschen des zuvor eingefügten Programmcodeblocks, wenn ermittelt wird, dass sich der Block nicht vollständig innerhalb des dynamischen Textteils ( ) Of the request to delete the previously inserted code block when it is determined that the block is not complete (within the dynamic part of the text 214 214 ) befindet. ) Is located.
  12. Rechnersystem nach Anspruch 11, worin des Weiteren Anweisungen im Speicher gespeichert sind, die ausführbar sind, wenn der Prozessor ermittelt, dass der zuvor eingefügte Programmcodeblock sich vollständig innerhalb des dynamischen Textteils ( The computer system of claim 11, wherein further instructions are stored in memory that are executable when the processor determines that the previously inserted code block completely (within the dynamic part of the text 214 214 ) befindet, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Ermitteln ( ) Is, including instructions that cause the processor to: determining ( 508 508 ), ob der zuvor in den dynamischen Textteil ( ) Whether the previously (in the dynamic part of the text 214 214 ) eingefügte Programmcodeblock als eine Einheit eingefügt wurde; ) Inserted program code block is inserted as a unit; und wenn der zuvor in den dynamischen Textteil ( and when the previously (in the dynamic part of the text 214 214 ) eingefügte Programmcodeblock als eine Einheit eingefügt wurde: das Warten ( ) Inserted code block was inserted as a unit: the wait ( 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben; That all the threads of the application located in the sandbox have reached a safe execution point); das Löschen des zuvor eingefügten Programmcodes ( the deletion of the previously inserted program code ( 516 516 ); ); und das Signalisieren ( and signaling ( 518 518 ) an alle Threads der in der Sandbox befindlichen Anwendung, dass diese die Ausführung von dem sicheren Ausführungspunkt fortsetzen können. ) That they can continue execution from the safe execution point to all threads of the application located in the sandbox.
  13. Rechnersystem nach Anspruch 12, worin des Weiteren Anweisungen im Speicher gespeichert sind, die ausführbar sind, wenn der Prozessor ermittelt, dass der zuvor eingefügte Programmcodeblock sich vollständig innerhalb des dynamischen Textteils ( The computer system of claim 12, wherein further instructions are stored in memory that are executable when the processor determines that the previously inserted code block completely (within the dynamic part of the text 214 214 ) befindet und nicht als eine einzelne Einheit eingefügt wurde, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Ermitteln ( ), And has not been inserted as a single unit, including instructions that cause the processor to: determining ( 510 510 ), ob der zuvor eingefügte Programmcodeblock eine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung einer in der Sandbox befindlichen Anwendung, die nicht gelöscht werden wird, bildet; ) Whether the previously inserted code block contains an address that is one embodiment of an instruction control transmission destination of an application located in the sandbox, that will not be deleted; und das Ablehnen ( and rejecting ( 506 506 ) der Anforderung, den zuvor eingefügten Programmcodeblock zu löschen, wenn ermittelt wird, dass der zuvor eingefügte Programmcodeblock eine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung der in der Sandbox befindlichen Anwendung bildet, die nicht gelöscht werden wird. ) Of the request to delete the previously inserted code block when it is determined that the previously inserted code block contains an address that is one embodiment control transmission destination of an instruction of the application located in the sandbox, that will not be deleted.
  14. Rechnersystem nach Anspruch 13, worin der Speicher des Weiteren Anweisungen speichert, die ausführbar sind, wenn ermittelt wird, dass der zuvor eingefügte Programmcodeblock keine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung einer in der Sandbox befindlichen Anwendung, die nicht gelöscht werden wird, bildet, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Warten ( The computer system of claim 13, wherein the memory further stores instructions that are executable when it is determined that the previously inserted code block does not address an execution control transmission destination of an instruction of an application located in the sandbox, that will not be deleted, forms, including instructions that cause the processor to: waiting ( 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben; That all the threads of the application located in the sandbox have reached a safe execution point); das Löschen des zuvor eingefügten Programmcodes ( the deletion of the previously inserted program code ( 516 516 ); ); und das Signalisieren ( and signaling ( 518 518 ) an alle Threads der in der Sandbox befindlichen Anwendung, dass diese die Ausführung von dem sicheren Ausführungspunkt fortsetzen können. ) That they can continue execution from the safe execution point to all threads of the application located in the sandbox.
  15. Rechnersystem nach Anspruch 12 oder 14, worin die im Speicher gespeicherte Anweisung zum Warten ( A computer system according to claim 12 or 14, wherein the stored in the memory instruction (for servicing 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben, eine Anweisung zum Warten umfasst, bis alle Threads der in der Sandbox befindlichen Anwendung ein Trampolin ( ) That all the threads of the application located in the sandbox have reached a safe execution point, includes an instruction to wait until all the threads of the application located in the sandbox (a trampoline 206 206 ) erreicht haben oder in einen sicheren Ausführungsmodus übergegangen sind. have reached) or have been transferred to a safe execution mode.
  16. Rechnerprogrammprodukt, das in einem materiellen, von einer Rechnereinheit lesbaren Medium verkörpert ist und Befehle umfasst, die bei der Ausführung durch einen programmierbaren Prozessor diesen zu Folgendem veranlassen: das Empfangen ( A computer program product embodied in a tangible-readable medium and a computer unit comprising instructions that cause it to the following when executed by a programmable processor: receiving ( 302 302 ) einer Anweisung zum Einfügen eines neuen Teils des Programmcodes ( ) An instruction to insert a new part of the program code ( 402 402 ) in eine in der Sandbox befindlichen Anwendung; ) In a located in the sandbox application; Schreiben ( Write ( 304 304 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) in einen ersten Bereich eines sicheren Speichers ( ) (In a first region of a secure memory 108 108 ), der nicht von der in der Sandbox befindlichen Anwendung ausgeführt werden kann; ), Which can not be executed by the application located in the sandbox; das Validieren ( validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ); ); und das Schreiben ( and writing ( 312 312 ) des validierten Teiles des Programmcodes in einen zweiten Bereich ( () Of the validated portion of the program code in a second area 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ), der von der in der Sandbox befindlichen Anwendung ausgeführt werden kann. ) That can be executed by the located in the sandbox application.
  17. Rechnerprogrammprodukt nach Anspruch 16, worin die Anweisung zum Schreiben ( The computer program product of claim 16, wherein the instruction for writing ( 304 304 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) in den ersten Bereich des sicheren Speichers ( ) (In the first area of ​​the secure memory 108 108 ) eine Anweisung zum Schreiben ( ) An instruction to write ( 304 304 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) umfasst, sodass keine Anweisungen über die festen Größengrenzen ( ) Comprises, so that no instructions concerning the fixed size limits ( 420 420 - 424 424 ) innerhalb des ersten Bereichs des sicheren Speichers ( ) (Within the first region of the secure memory 108 108 ) geschrieben werden. ) to be written.
  18. Rechnerprogrammprodukt nach Anspruch 16 oder 17, worin die Anweisung zum Schreiben ( The computer program product of claim 16 or 17, wherein the instruction for writing ( 312 312 ) des validierten Teils des Programmcodes in den zweiten Bereich ( () Of the validated portion of the program code in the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) eine Anweisung zum Schreiben ( ) An instruction to write ( 312 312 ) des validierten Teils des Programmcodes umfasst, sodass keine Anweisungen über die festen Größengrenzen ( ) Of the validated portion of the program code includes, so that no instructions concerning the fixed size limits ( 220 220 - 238 238 ) innerhalb des zweiten Bereichs ( ) (Within the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) geschrieben werden. ) to be written.
  19. Rechnerprogrammprodukt nach Anspruch 16, 17 oder 18, worin die Anweisung zum Validieren ( The computer program product of claim 16, 17 or 18, wherein the instructions for validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) eine Anweisung zur Ermittlung, ob keine der Anweisungen in dem neuen Teil des Programmcodes ( ) An instruction to determine if any of the instructions (in the new part of the program code 402 402 ) das Betriebssystem direkt aufruft, umfasst. ) Calls the operating system directly, includes.
  20. Rechnerprogrammprodukt nach Anspruch 16, 17 oder 18, worin die Anweisung zum Validieren ( The computer program product of claim 16, 17 or 18, wherein the instructions for validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) eine Anweisung zur Ermittlung, ob keine der Anweisungen in dem neuen Teil des Programmcodes ( ) An instruction to determine if any of the instructions (in the new part of the program code 402 402 ) den Zustand des sicheren Speichers ( ) (The state of the secure memory 108 108 ) ändern kann, umfasst. can change), comprising.
  21. Rechnerprogrammprodukt nach Anspruch 16, 17 oder 18, worin die Anweisung zum Validieren ( The computer program product of claim 16, 17 or 18, wherein the instructions for validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) eine Anweisung zur Ermittlung, ob alle indirekten Verzweigungsanweisungen in dem neuen Teil des Programmcodes ( ) An instruction for determining whether any indirect branch instructions (in the new part of the program code 402 402 ) auf Adressen der in der Sandbox befindlichen Anwendung auf den festen Größengrenzen ( ) To addresses of the application located in the sandbox (to the fixed size limits 420 420 - 424 424 ) im ersten Bereich des sicheren Speichers ( ) (In the first area of ​​the secure memory 108 108 ) ausgerichtet sind, umfasst. ) Are aligned, comprising.
  22. Rechnerprogrammprodukt nach irgendeinem der Ansprüche 16–21, worin die Anweisung zum Schreiben ( A computer program product according to any of claims 16-21, wherein the instruction for writing ( 312 312 ) des validierten Teils des Programmcodes in den zweiten Bereich ( () Of the validated portion of the program code in the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) die Anweisung zum Schreiben ( ) The instruction to write ( 312 312 ) des validierten Teils des Programmcodes umfasst, sodass alle indirekten Verzweigungsanweisungen im validierten Teil des Programmcodes Adressen der in der Sandbox befindlichen Anwendung ansprechen, die auf die festen Größengrenzen ( ) Of the validated portion of the program code includes, so that all the indirect branch instructions in the validated portion of the program code addresses of the application located in the sandbox address which (the fixed size limits 220 220 - 238 238 ) innerhalb des zweiten Bereichs ( ) (Within the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) ausgerichtet sind. ) Are aligned.
  23. Rechnerprogrammprodukt nach irgendeinem der Ansprüche 16–22, worin die Anweisung zum Validieren ( A computer program product according to any of claims 16-22, wherein the instructions for validating ( 306 306 ) des neuen Teils des Programmcodes ( () Of the new part of the program code 402 402 ) eine Anweisung zur Ermittlung, ob keine der Anweisungen im neuen Teil des Programmcodes ( ) An instruction to determine if any of the statements in the new part of the program code ( 402 402 ) einen Speicherbereich direkt adressiert, der sich außerhalb des sicheren Speichers ( ) Addresses a memory area directly to the (outside of the secure memory 108 108 ) befindet, umfasst. ), Covers.
  24. Rechnerprogrammprodukt nach irgendeinem der Ansprüche 16–23, worin der zweite Bereich ( A computer program product according to any of claims 16-23, wherein the second region ( 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) in Anweisungspakete ( ) (In instruction packets 220 220 - 238 238 ) mit fester Größe unterteilt ist und jedes Anweisungspaket ( ) Is divided with a fixed size, and each instruction packet ( 220 220 - 238 238 ) anfänglich mit einer Vielzahl von Halt-Anweisungen gefüllt wird. ) Is initially filled with a plurality of stop instructions.
  25. Rechnerprogrammprodukt nach Anspruch 24, worin die Anweisung zum Schreiben ( The computer program product of claim 24, wherein the instruction for writing ( 312 312 ) des validierten Teils des Programmcodes in den zweiten Bereich ( () Of the validated portion of the program code in the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) die folgenden Anweisungen umfasst: das Segmentieren des validierten Teils des Programmcodes in eine oder mehrere Einheiten ( ) Comprises the following steps: segmenting the validated portion of the program code into one or more units ( 420 420 - 424 424 ), wobei jede Einheit ( ), Each unit ( 420 420 - 424 424 ) einem Anweisungspaket ( ) (One instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) mit einem Kopfteil ( ) (With a head part 408 408 ) und einem Restteil ( ) And a residual part ( 410 410 ) entspricht, worin die Größe des Kopfteils ( ) Wherein the size of the head part ( 408 408 ) der Größe einer Halt-Anweisung und die Größe des Restteils ( ) The size of a HALT instruction and the size of the remainder part ( 410 410 ) der Größe eines Anweisungspaketes ( ) (The size of an instruction packet 220 220 - 224 224 ), abzüglich der Größe der Halt-Anweisung, entspricht; ), Minus the size of the halt instruction, corresponds; das Schreiben des Restteils ( writing the remaining part ( 410 410 ) jeder Einheit ( ) Of each unit ( 420 420 - 424 424 ) in das entsprechende Anweisungspaket ( ) (In the corresponding instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ); ); und das Schreiben des Kopfteils ( and the writing of the head ( 408 408 ) jeder Einheit ( ) Of each unit ( 420 420 - 424 424 ) in das entsprechende Anweisungspaket ( ) (In the corresponding instruction packet 220 220 - 224 224 ) im zweiten Bereich ( ) (In the second region 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ). ).
  26. Rechnerprogrammprodukt, das in einem materiellen, von einer Rechnereinheit lesbaren Medium verkörpert ist und Befehle umfasst, die bei der Ausführung durch einen programmierbaren Prozessor diesen zu Folgendem veranlassen: das Empfangen ( A computer program product embodied in a tangible-readable medium and a computer unit comprising instructions that cause it to the following when executed by a programmable processor: receiving ( 502 502 ) einer Anforderung zum Löschen eines zuvor eingefügten Programmcodeblocks aus einer in der Sandbox befindlichen Anwendung, die in einen sicheren Speicher ( ) A request to delete a previously inserted code block from a present in the sandbox application (in a secure memory 108 108 ) geschrieben wurde; ) Was written; das Ermitteln ( determining ( 504 504 ), ob der zuvor eingefügte Programmcodeblock vollständig innerhalb eines dynamischen Textteils ( ) Whether the previously inserted code block completely (within a dynamic part of the text 214 214 ) des sicheren Speichers ( () Of the secure memory 108 108 ) liegt; ) lies; und das Ablehnen ( and rejecting ( 506 506 ) der Anforderung zum Löschen des zuvor eingefügten Programmcodeblocks, wenn ermittelt wird, dass sich der Block nicht vollständig innerhalb des dynamischen Textteils ( ) Of the request to delete the previously inserted code block when it is determined that the block is not complete (within the dynamic part of the text 214 214 ) befindet. ) Is located.
  27. Rechnerprogrammprodukt nach Anspruch 26, des Weiteren Anweisungen umfassend, die ausführbar sind, wenn der Prozessor ermittelt, dass sich der zuvor eingefügte Programmcodeblock vollständig im dynamischen Textteil ( The computer program product of claim 26, further comprising instructions that are executable when the processor determines that the previously inserted code block completely (in the dynamic part of the text 214 214 ) befindet, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Ermitteln ( ) Is, including instructions that cause the processor to: determining ( 508 508 ), ob der zuvor in den dynamischen Textteil ( ) Whether the previously (in the dynamic part of the text 214 214 ) eingefügte Programmcodeblock als eine Einheit eingefügt wurde; ) Inserted program code block is inserted as a unit; und wenn der zuvor in den dynamischen Textteil ( and when the previously (in the dynamic part of the text 214 214 ) eingefügte Programmcodeblock als eine Einheit eingefügt wurde: das Warten ( ) Inserted code block was inserted as a unit: the wait ( 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben; That all the threads of the application located in the sandbox have reached a safe execution point); das Löschen ( the deleting ( 516 516 ) des zuvor eingefügten Programmcodes; ) The previously inserted program code; und das Signalisieren ( and signaling ( 518 518 ) an alle Threads der in der Sandbox befindlichen Anwendung, dass diese die Ausführung von dem sicheren Ausführungspunkt fortsetzen können. ) That they can continue execution from the safe execution point to all threads of the application located in the sandbox.
  28. Rechnerprogrammprodukt nach Anspruch 27, des Weiteren Anweisungen umfassend, die ausführbar sind, wenn der Prozessor ermittelt, dass sich der zuvor eingefügte Programmcodeblock vollständig im dynamischen Textteil ( A computer program product according to claim 27, further comprising instructions that are executable when the processor determines that the previously inserted code block completely (in the dynamic part of the text 214 214 ) befindet und nicht als eine einzelne Einheit eingefügt wurde, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Ermitteln ( ), And has not been inserted as a single unit, including instructions that cause the processor to: determining ( 510 510 ), ob der zuvor eingefügte Programmcodeblock eine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung einer in der Sandbox befindlichen Anwendung, die nicht gelöscht werden wird, bildet; ) Whether the previously inserted code block contains an address that is one embodiment of an instruction control transmission destination of an application located in the sandbox, that will not be deleted; und das Ablehnen ( and rejecting ( 506 506 ) der Anforderung, den zuvor eingefügten Programmcodeblock zu löschen, wenn ermittelt wird, dass der zuvor eingefügte Programmcodeblock eine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung der in der Sandbox befindlichen Anwendung bildet, die nicht gelöscht werden wird. ) Of the request to delete the previously inserted code block when it is determined that the previously inserted code block contains an address that is one embodiment control transmission destination of an instruction of the application located in the sandbox, that will not be deleted.
  29. Rechnersystem nach Anspruch 28, des Weiteren Anweisungen umfassend, die ausführbar sind, wenn der Prozessor ermittelt, dass der zuvor eingefügte Programmcodeblock keine Adresse enthält, die ein Ausführungssteuerungs-Übertragungsziel einer Anweisung einer in der Sandbox befindlichen Anwendung, die nicht gelöscht werden wird, bildet, einschließlich Anweisungen, die den Prozessor zu Folgendem veranlassen: das Warten ( The computer system of claim 28, further comprising instructions comprising executable when the processor determines that the previously inserted code block does not contain address that forms an execution control transmission destination of an instruction of an application located in the sandbox, that will not be erased, including instructions that cause the processor to: waiting ( 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben; That all the threads of the application located in the sandbox have reached a safe execution point); das Löschen des zuvor eingefügten Programmcodes ( the deletion of the previously inserted program code ( 516 516 ); ); und das Signalisieren ( and signaling ( 518 518 ) an alle Threads der in der Sandbox befindlichen Anwendung, dass diese die Ausführung von dem sicheren Ausführungspunkt fortsetzen können. ) That they can continue execution from the safe execution point to all threads of the application located in the sandbox.
  30. Rechnerprogrammprodukt nach Anspruch 27 oder 29, worin die im Speicher gespeicherte Anweisung zum Warten ( A computer program product according to claim 27 or 29, wherein the stored in the memory wait instruction ( 514 514 ), dass alle Threads der in der Sandbox befindlichen Anwendung einen sicheren Ausführungspunkt erreicht haben, eine Anweisung zum Warten ( () That all the threads of the application located in the sandbox have reached a safe execution point, an instruction to wait 514 514 ) umfasst, bis alle Threads der in der Sandbox befindlichen Anwendung ein Trampolin erreicht haben oder in einen sicheren Ausführungsmodus übergegangen sind. ) Includes until all the threads of the application located in the sandbox have reached a trampoline or have been transferred in a secure execution mode.
DE202010018492.4U 2009-12-03 2010-12-02 Dynamic insertion and deletion of program code for static analysis based sandboxes Active DE202010018492U1 (en)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US26650009P true 2009-12-03 2009-12-03
US61/266,500 2009-12-03
US12/956,860 2010-11-30
US12/956,860 US8621619B2 (en) 2009-12-03 2010-11-30 Dynamic code insertion for static analysis based sandboxes

Publications (1)

Publication Number Publication Date
DE202010018492U1 true DE202010018492U1 (en) 2017-01-24

Family

ID=44083346

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202010018492.4U Active DE202010018492U1 (en) 2009-12-03 2010-12-02 Dynamic insertion and deletion of program code for static analysis based sandboxes

Country Status (4)

Country Link
US (3) US8621619B2 (en)
EP (1) EP2507706A2 (en)
DE (1) DE202010018492U1 (en)
WO (1) WO2011068975A2 (en)

Families Citing this family (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8745361B2 (en) 2008-12-02 2014-06-03 Microsoft Corporation Sandboxed execution of plug-ins
US8819399B1 (en) 2009-07-31 2014-08-26 Google Inc. Predicated control flow and store instructions for native code module security
US8627451B2 (en) * 2009-08-21 2014-01-07 Red Hat, Inc. Systems and methods for providing an isolated execution environment for accessing untrusted content
US9684785B2 (en) 2009-12-17 2017-06-20 Red Hat, Inc. Providing multiple isolated execution environments for securely accessing untrusted content
US8589947B2 (en) * 2010-05-11 2013-11-19 The Trustees Of Columbia University In The City Of New York Methods, systems, and media for application fault containment
US9477534B2 (en) 2010-05-18 2016-10-25 Google Inc. Inter-extension messaging
US8484465B1 (en) * 2010-12-08 2013-07-09 Google Inc. Heterogeneous virtual machines sharing a security model
US9027151B2 (en) * 2011-02-17 2015-05-05 Red Hat, Inc. Inhibiting denial-of-service attacks using group controls
US8850574B1 (en) * 2011-02-28 2014-09-30 Google Inc. Safe self-modifying code
US9141360B1 (en) 2011-03-16 2015-09-22 Google Inc. Web application module translation service
US8843764B2 (en) 2011-07-15 2014-09-23 Cavium, Inc. Secure software and hardware association technique
US9465657B2 (en) 2011-07-19 2016-10-11 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9443085B2 (en) 2011-07-19 2016-09-13 Elwha Llc Intrusion detection using taint accumulation
US8813085B2 (en) 2011-07-19 2014-08-19 Elwha Llc Scheduling threads based on priority utilizing entitlement vectors, weight and usage level
US9558034B2 (en) 2011-07-19 2017-01-31 Elwha Llc Entitlement vector for managing resource allocation
US8943313B2 (en) 2011-07-19 2015-01-27 Elwha Llc Fine-grained security in federated data sets
US9460290B2 (en) 2011-07-19 2016-10-04 Elwha Llc Conditional security response using taint vector monitoring
US9798873B2 (en) * 2011-08-04 2017-10-24 Elwha Llc Processor operable to ensure code integrity
US9575903B2 (en) 2011-08-04 2017-02-21 Elwha Llc Security perimeter
GB201115501D0 (en) * 2011-09-08 2011-10-26 Ideaworks 3D Ltd A method and system for producing executable applications
US9170843B2 (en) 2011-09-24 2015-10-27 Elwha Llc Data handling apparatus adapted for scheduling operations according to resource allocation based on entitlement
US8955111B2 (en) 2011-09-24 2015-02-10 Elwha Llc Instruction set adapted for security risk monitoring
US9471373B2 (en) 2011-09-24 2016-10-18 Elwha Llc Entitlement vector for library usage in managing resource allocation and scheduling based on usage and priority
US9098608B2 (en) 2011-10-28 2015-08-04 Elwha Llc Processor configured to allocate resources using an entitlement vector
US9298918B2 (en) 2011-11-30 2016-03-29 Elwha Llc Taint injection and tracking
US8799988B2 (en) 2012-01-25 2014-08-05 Microsoft Corporation Document communication runtime interfaces
US20130254906A1 (en) * 2012-03-22 2013-09-26 Cavium, Inc. Hardware and Software Association and Authentication
WO2013174503A1 (en) * 2012-05-21 2013-11-28 Eth Zurich Secure loader
US8930917B2 (en) * 2012-05-22 2015-01-06 Adobe Systems Incorporated Method and apparatus for mobile application development and testing that avoids repackaging and reinstallation
US9336370B2 (en) * 2012-12-06 2016-05-10 Apple Inc. Method and apparatus for dynamic obfuscation of static data
US9747212B2 (en) 2013-03-15 2017-08-29 International Business Machines Corporation Virtual unifed instruction and data caches including storing program instructions and memory address in CAM indicated by store instruction containing bit directly indicating self modifying code
EP2782010A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Hierarchical resource management
EP2782038A1 (en) * 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Resource management in a processor for trusted and untrusted applications
EP2782007A1 (en) 2013-03-19 2014-09-24 STMicroelectronics (Grenoble 2) SAS Launching multiple applications in containers on a processor
US9223557B1 (en) * 2013-05-08 2015-12-29 Amazon Technologies, Inc. Application provided browser plugin
WO2015050588A2 (en) * 2013-05-31 2015-04-09 Openpeak Inc. Method and system for combining multiple applications into a single binary file while maintaining per process sandboxing
US9384019B2 (en) 2014-03-25 2016-07-05 International Business Machines Corporation Dynamic code injection
EP3230853A4 (en) * 2014-12-09 2019-05-29 Intel Corp System and method for execution of application code compiled according to two instruction set architectures
US9569613B2 (en) * 2014-12-23 2017-02-14 Intel Corporation Techniques for enforcing control flow integrity using binary translation
US9575740B2 (en) * 2015-01-21 2017-02-21 Samsung Electronics Co., Ltd. Apparatus and method for running multiple instances of a same application in mobile devices
CN106485467A (en) * 2016-09-27 2017-03-08 吉林码帝科技有限公司 Job application flow for the disabled
KR101837337B1 (en) 2017-02-14 2018-04-19 한양대학교 에리카산학협력단 Obfuscated method of preventing CFG generation from using debugging tools to transform relative address jump into indirect jump between basic block in native code and apparatus therefor

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5454107A (en) * 1993-11-30 1995-09-26 Vlsi Technologies Cache memory support in an integrated memory system
US5974549A (en) * 1997-03-27 1999-10-26 Soliton Ltd. Security monitor
US6275938B1 (en) * 1997-08-28 2001-08-14 Microsoft Corporation Security enhancement for untrusted executable code
US7478218B2 (en) * 2005-02-18 2009-01-13 Vmware, Inc. Adaptive cache sizing based on monitoring of regenerated and replaced cache entries
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US9058483B2 (en) * 2008-05-08 2015-06-16 Google Inc. Method for validating an untrusted native code module
US8424082B2 (en) * 2008-05-08 2013-04-16 Google Inc. Safely executing an untrusted native code module on a computing device
US8468592B2 (en) * 2009-07-31 2013-06-18 Google Inc. Native code module security for 64-bit instruction set architectures
US8561183B2 (en) * 2009-07-31 2013-10-15 Google Inc. Native code module security for arm instruction set architectures

Also Published As

Publication number Publication date
WO2011068975A3 (en) 2011-09-15
US8621619B2 (en) 2013-12-31
WO2011068975A2 (en) 2011-06-09
EP2507706A2 (en) 2012-10-10
US20110138474A1 (en) 2011-06-09
US20110138473A1 (en) 2011-06-09
US8997225B2 (en) 2015-03-31
US20130333031A1 (en) 2013-12-12
US8464349B2 (en) 2013-06-11

Similar Documents

Publication Publication Date Title
DE69822534T2 (en) Shared memory using variable block sizes for symmetric Multiporzessor groups
US6718438B2 (en) Using feedback to determine the size of an object cache
DE69835100T2 (en) Processor configured to predictive results of the combined transmission, comparison and command simple arithmetic to produce
DE3607889C2 (en)
DE10392470B4 (en) System and method for performing initialization commands a secure environment
DE60036016T2 (en) Quick multithreading for tightly coupled multi-processors
DE69724771T2 (en) core central processor unit with x86 and DSP and a DSP function decoder for imaging x 86 commands to DSP instructions
DE10195999B3 (en) Computer system having a contained in a chipset memory controller for controlling accesses to an isolated store for isolated execution
DE10084556B4 (en) Optimized design of statically very likely predicted branch instructions
DE60005563T2 (en) Rechnersysteminitialisierung by data stored in a memory access sequential bootstrap code
DE112004003066B4 (en) Multiple monitor virtual machines for handling privileged events
DE10197121B4 (en) New processor mode to limit the operation of running on a virtual machine guest software with the support of a virtual machine monitor
DE60313652T2 (en) A method and device for controlling the conversion of program codes
DE69838540T2 (en) Mobile communication system
DE69636029T2 (en) Method and apparatus for data transmission
DE602004008711T2 (en) Arrangement, method and computer data signal for the selective cancellation of prediction of a return stack memory in response to the detection of a non-standard return instruction series
DE60108181T2 (en) Mutability in java
DE19527031C2 (en) Branch processor for a data processing system and method for operating a data processing system
DE69834087T2 (en) Method and apparatus for pre-processing and packaging class files
DE10196007B4 (en) Platform and method for a platform Fernattestieren
DE60014005T2 (en) Method and apparatus for Befehlsvorabholung
DE69635881T2 (en) VLIW-instruction processor having variable length
DE69836469T2 (en) Method and apparatus for propagating a security model to species-specific code
DE10196005B4 (en) Means and methods for isolated execution of commands Isolated
DE60222402T2 (en) Method and system for speculative invalidation of cache lines in a

Legal Events

Date Code Title Description
R207 Utility model specification
R151 Term of protection extended to 8 years
R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R152 Term of protection extended to 10 years