COMPILING EXECUTABLE CODE INTO A LESS-TRUSTED ADDRESS SPACE
First Claim
1. In a computerized environment comprising a memory, as well as a JIT compiler and one or more application programs loaded in the memory, a method of executing managed code so that untrusted program code can be compiled and executed in a manner that does not threaten or otherwise compromise system security, comprising:
- executing an application program from a first address space set with a first set of permissions for accessing a shared memory heap;
receiving one or more requests from the application program to compile one or more sets of intermediate language instructions;
compiling the one or more sets of intermediate language instructions into newly compiled code using a JIT compiler running in a second address space that has a second set of permissions for accessing the shared memory heap; and
passing the newly compiled code to the shared memory heap, wherein the application program can retrieve and execute the newly compiled code from the first address space.
2 Assignments
0 Petitions
Accused Products
Abstract
Unsafe application programs that implement managed code can be executed in a secure fashion. In particular, an operating system can be configured to execute an application program in user mode, but handle managed code compilation through a type-safe JIT compiler operating in kernel mode. The operating system can also designate a single memory location to be accessed through multiple address spaces with different permission sets. An application program operating in user mode can be executed in the read/execute address space, while the JIT compiler operates in a read/write address space. When encountering one or more pointers to intermediate language code, the application runtime can send one or more compilation requests to a kernel mode security component, which validates the requests. If validated, the JIT compiler will compile the requested intermediate language code, and the application program can access the compiled code from a shared memory heap.
65 Citations
20 Claims
-
1. In a computerized environment comprising a memory, as well as a JIT compiler and one or more application programs loaded in the memory, a method of executing managed code so that untrusted program code can be compiled and executed in a manner that does not threaten or otherwise compromise system security, comprising:
-
executing an application program from a first address space set with a first set of permissions for accessing a shared memory heap; receiving one or more requests from the application program to compile one or more sets of intermediate language instructions; compiling the one or more sets of intermediate language instructions into newly compiled code using a JIT compiler running in a second address space that has a second set of permissions for accessing the shared memory heap; and passing the newly compiled code to the shared memory heap, wherein the application program can retrieve and execute the newly compiled code from the first address space. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
14. In a computerized environment comprising a storage, a JIT compiler, and one or more application programs loaded in memory, a method of generating computer executable program code in a manner that uses JIT compilation while avoiding security violations, comprising:
-
receiving application program code that includes executable code and code to be compiled; executing the executable code in a lower-privilege mode and in a first address space; identifying one or more pointers in the executable code for at least some code to be compiled; switching to a higher-privilege mode; and compiling the at least some code in a different address space using a compiler operating in the higher-privilege mode. - View Dependent Claims (15, 16, 17, 18, 19)
-
-
20. In a computerized environment comprising a memory, a JIT compiler, and one or more application programs loaded in the memory, a computer program storage product having computer executable instructions stored thereon that, when executed, cause one or more processors to perform a method comprising:
-
executing an application program from a first address space set with a first set of permissions for accessing a shared memory heap; receiving one or more requests from the application program to compile one or more sets of intermediate language instructions; compiling the one or more sets of intermediate language instructions into newly compiled code using a JIT compiler running in a second address space that has a second set of permissions for accessing the shared memory heap; and passing the newly compiled code to the shared memory heap, wherein the application program can retrieve and execute the newly compiled code from the first address space.
-
Specification