The present disclosure relates to virtualization architectures and, more specifically, to secure communication between processes of a guest operating system and a virtualization layer of a virtualization architecture.
Data communication in a network involves the exchange of data between two or more entities interconnected by communication links and sub-networks (segments). The entities are typically software processes executing in operating systems of computers, such as endpoint nodes (endpoints) and intermediate nodes. The intermediate nodes interconnect the communication links and segments to enable transmission of data between the endpoints. A local area network (LAN) is an example of segment that provides relatively short distance communication among the interconnected nodes, whereas a wide area network (WAN) enables long distance communication over links provided by telecommunications facilities. The Internet is an example of a WAN that connects disparate computer networks throughout the world, providing global communication between nodes on various networks.
Malicious software (malware) has become a pervasive problem for nodes coupled to networks, such as the Internet. Malware is often embedded within downloadable content intended to adversely influence or attack normal operations of a node. Whereas operating system vulnerabilities have traditionally been common targets of such malware content, attackers have broadened their attack to exploit vulnerabilities in processes or applications, such as web browsers as well as operating system data structures. For example, malware content may be embedded within objects associated with a web page hosted by a malicious web site.
Various types of security enhanced nodes are often deployed at different segments of the networks. These nodes often employ virtualization systems having virtualization layers to provide enhanced security needed to uncover the presence of malware typically embedded within ingress content propagating over the different network segments. The enhanced security may include anti-virus scanning software that scans the ingress content for viruses and other forms of malware, as well as virtual machine architectures that replay the ingress content in guest operating systems so as to monitor behavior during execution and detect anomalies that may indicate the presence of malware. However, increasingly sophisticated malware may be able to compromise the virtual machines to avoid detection by, e.g., altering states of resources of the nodes, such as operating system data structures. Moreover, strict specifications for some nodes (e.g., endpoints) may require execution of software, despite known vulnerabilities and potential of infection by malware. Thus, a technique to ensure secure communication among the processes executing (as well as operating system data structures) in the guest operating systems and virtualization layers of the nodes is needed.
The above and further advantages of the embodiments herein may be better understood by referring to the following description in conjunction with the accompanying drawings in which like reference numerals indicate identically or functionally similar elements, of which:
The embodiments described herein provide a technique for establishing secure communication between processes of a guest operating system and a virtualization layer of a virtualization architecture executing on a node of a network environment. The virtualization layer may include a user mode portion having hyper-processes and a kernel portion having a micro-hypervisor (i.e., a type of hypervisor operating at a highest privilege level of a physical processor of the node) that cooperate to virtualize the guest operating system within a virtual machine (VM) and to make hardware resources of the node available for use by the guest operating system, either as pass-through resources, emulated resources or a combination thereof. Secure communication is established between a hyper-process of the virtualization layer (i.e., host) and an agent process in the guest operating system (i.e., guest) using a virtual communication device which, in an embodiment, is implemented as shared memory having two memory buffers. Illustratively, a guest-to-host (G2H) buffer is used as a first message box configured to provide unidirectional communication from the agent to the hyper-process of the virtualization layer and a host-to-guest (H2G) buffer is used as a second message box configured to provide unidirectional communication from the hyper-process to the agent. The buffers cooperate to transform the virtual device into a low-latency, high-bandwidth communication interface configured for bi-directional transfer of information between the agent process and the hyper-process, wherein the communication interface also includes a signaling (doorbell) mechanism configured to notify any of the processes (i.e., the agent or hyper-process) that information is available for transfer over the interface.
During initialization, the agent searches for the communication interface by issuing a probe request embodied as a hyper-call having an instruction that causes a VM exit from the virtual machine to the virtualization layer. The probe request also includes an interrupt vector allocated to the agent in the guest operating system. According to the secure communication technique, the interrupt vector is used as a virtual interrupt by the virtualization layer for the H2G doorbell notification to preempt regular execution and invoke an interrupt handler of the agent. Additionally, the interrupt handler may be used to guarantee execution time for the agent in the guest operating system. Upon determining that the probe request originates from an authentic agent, the virtualization layer may respond by exchanging device-specific information about the communication interface with the agent; otherwise the probe request fails in a manner that does not reveal the presence of the interface. A backing store (e.g., memory) for the buffers is provided by the virtualization layer, such that the agent is the only in-guest process aware of the existence of the buffers. That is, the buffers are hidden from the guest operating system by the virtualization layer, which ensures that the guest operating system does not page out (swap) the buffers to disk or modify them in any way. Notably, the agent may select an unused (i.e., conflict-free) address range in a guest-physical address space of the virtual machine where the buffers provided by the virtualization layer appear. Moreover, the virtualization layer may protect (e.g., restrict access permission to) the buffers of the communication interface, e.g., against misuse, by ensuring that the communication interface is only visible when the agent is active (running) and is otherwise inaccessible to the guest operating system and to direct memory access (DMA) operations from input/output (I/O) devices.
In an embodiment, a request/response messaging protocol may be established across the G2H and H2G buffers to enable bi-directional transfer of information between the agent and the virtualization layer. For example, to transfer information to the virtualization layer, the agent loads a request having one or more messages along with an identifier (ID) generated by the agent (e.g., ID X) into the G2H buffer and notifies the virtualization layer by issuing a central processing unit (CPU) instruction (e.g., VMCALL) in the virtual machine that causes a VM exit to the virtualization layer. The CPU instruction acts as a G2H doorbell to notify the virtualization layer that new messages are present in the G2H buffer. Subsequently, the virtualization layer loads a response with the ID of the request (e.g., ID X) into the H2G buffer. Using the request and response IDs in the respective buffers, the agent can determine which response belongs to which request. Likewise to transfer information to the agent, the virtualization layer loads a request having one or messages along with an ID generated by the hyper-process (e.g., ID Y) into the H2G buffer and notifies the agent by injecting (issuing) the virtual interrupt into the guest operating system. The virtual interrupt acts as a H2G doorbell to notify the agent that one or more new messages are present in the H2G buffer. In response (at a later point in time), the agent loads an answer to the message (i.e., a response) with the ID of the request (e.g., ID Y) into the G2H buffer. Again, by matching request and response IDs, the virtualization layer can determine which response belongs to which request.
Advantageously, the technique provides a high-bandwidth, low-latency communication interface between the agent and virtualization layer that is secure and hidden from the guest operating system. The secure communication interface may be used with any messaging protocol to exchange messages for a variety of implementations including disk and network accesses, the latter of which may involve downloading of policy files from the network through the guest operating system and into the virtualization layer. In addition, the interface may be used for secure communication between the agent and the virtualization layer regarding guest process protection, including notifications for processes being created and destroyed, as well as exploit detection events or other alerts. Furthermore, the interface may be used for secure communication between the agent and the virtualization layer through issuance of requests and responses in arbitrary order, including out-of-order. That is, upon receiving a request, the receiving process can either issue a response immediately (synchronously) or at some later point in time (asynchronously).
In an embodiment, the endpoints may illustratively include, e.g., client/server desktop computers, laptop/notebook computers, process controllers, medical devices, data acquisition devices, mobile devices, such as smartphones and tablet computers, and/or any other intelligent, general-purpose or special-purpose electronic device having network connectivity and, particularly for some embodiments, that may be configured to implement a virtualization system. The nodes 200 illustratively communicate by exchanging packets or messages (i.e., network traffic) according to a predefined set of protocols, such as the Transmission Control Protocol/Internet Protocol (TCP/IP); however, it should be noted that additional protocols, such as the HyperText Transfer Protocol Secure (HTTPS), may be advantageously used with the embodiments herein. In the case of private network 130, the intermediate node 2001 may include a firewall or other network device configured to limit or block certain network traffic in an attempt to protect the endpoints from unauthorized users. Unfortunately, such conventional attempts often fail to protect the endpoints, which may be compromised.
The memory 220 may include a plurality of locations that are addressable by the CPU(s) 210 via a memory management unit (MMU 215), as well as the network interface(s) 260 and device(s) 270 via an I/O MMU (IOMMU 255). Note that accesses to/from memory 220 by the CPU(s) 210 may occur directly through the MMU 215 and over the system interconnect 250, whereas accesses to/from the memory by the network interface(s) 260 and device(s) 270 may occur directly through the IOMMU 255 of the system interconnect. That is, a first data path may occur directly from the CPU to the memory 220 via the system interconnect 250 and a second (independent) data path may occur directly from the I/O devices 270 to the memory 220 also via the system interconnect 250. The memory locations may be configured to store software program code (including application programs) and data structures associated with the embodiments described herein. The CPU 210 may include processing elements or logic adapted to execute the software program code, such as modules of a virtualization architecture 300, and manipulate the data structures, such as a process table 245. Exemplary CPUs may include families of instruction set architectures based on the x86 CPU from Intel Corporation of Santa Clara, Calif., the x64 CPU from Advanced Micro Devices of Sunnyvale, Calif., and the ARM CPU from ARM Holdings, plc of the United Kingdom.
A (guest) operating system kernel 230, portions of which are typically resident in memory 220 and executed by the CPU, functionally organizes the node by, inter alia, invoking operations in support of the software program code and application programs executing on the node. A suitable guest operating system kernel 230 may include the Windows® series of operating systems from Microsoft Corp of Redmond, Wash., the MAC OS® and IOS® series of operating systems from Apple Inc. of Cupertino, Calif., the Linux operating system and versions of the Android™ operating system from Google, Inc. of Mountain View, Calif., among others. Suitable application programs may include Adobe Reader® from Adobe Systems Inc. of San Jose, Calif. and Microsoft Word from Microsoft Corp of Redmond, Wash. Illustratively, the software program code may be executed as guest processes 240 of the kernel 230. As used herein, a process (e.g., a guest process) is an instance of software program code (e.g., an application program) executing in the operating system that may be separated (decomposed) into one or more threads, wherein each thread is a sequence of execution within the process.
It will be apparent to those skilled in the art that other types of processing elements and memory, including various computer-readable media, may be used to store and execute program instructions pertaining to the embodiments described herein. Also, while the embodiments herein are described in terms of software program code, processes, and computer applications or programs stored in memory, alternative embodiments may also include the code, processes and programs being embodied as components, logic, and/or modules consisting of hardware, software, firmware, or combinations thereof.
Virtualization Architecture
The micro-hypervisor 320 (i.e., a type of hypervisor operating at a highest privilege level of a physical processor of the node) may be embodied as a light-weight module configured to facilitate run-time security analysis, including exploit and malware detection and threat intelligence, of the guest processes 240 executing on the node 200. As described herein, the micro-hypervisor 320 may cooperate with corresponding hyper-processes 350 of the virtualization layer 310 to virtualize the hardware and control privileges (i.e., access control permissions) to hardware resources of the node that are typically controlled by the guest operating system kernel. Illustratively, the hardware resources may include (physical) CPU(s) 210, memory 220, network interface(s) 260, and devices 270. The micro-hypervisor 320 may be configured to control access to one or more of the resources in response to a request by a guest process 240 to access the resource.
A user mode portion of the virtualization layer 310 includes the hyper-processes 350, examples of which include, inter alia, a guest monitor 352, a threat protection component 354, and a policy manager 356. The guest monitor 352 is illustratively a unique virtual machine monitor (VMM), i.e., a type 0 VMM, which includes virtualization functionality that cooperates with the micro-hypervisor 320 to virtualize the guest operating system within the VM and run one or more micro-virtual machines (micro-VMs). Accordingly, the guest monitor 352 may include computer executable instructions executed by the CPU 210 to perform operations that spawn, configure, and control/implement the VM or any of a plurality of micro-VMs. The guest monitor 352 may further include virtualization functionality that emulates privileged instructions (i.e., an instruction emulator) and devices (i.e., a virtual device emulator) that act as software substitutes for hardware devices not directly assigned to the guest operating system. As such, a set of hardware resources may be virtualized among a plurality of micro-VMs that may access those resources. That is, the guest monitor 352 may create virtual devices (e.g., software state machines) of the hardware resources for use by the micro-VMs that, from the perspective of the guest operating system, appear as physical resources.
As used herein, the term “micro” VM denotes a virtual machine serving as a container that may be restricted to a single guest process (as opposed to the VM which is spawned as a container for the entire guest operating system having many guest processes). In one embodiment, the micro-VMx may be implemented outside of the VM, (i.e., in a separate protection domain) using, e.g., copy-on-write semantics. In another embodiment, the micro-VMi may be implemented inside the VM (i.e., inside a same protection domain as the VM) using, e.g., one or more memory views as described further herein. However, whereas a micro-VM may be restricted to a single guest process, the hardware resources used by that micro-VM, such as memory, may be accessed by a plurality of micro-VMs (and their respective guest processes). As noted, there is only one virtual machine (e.g., VM) per guest operating system on the endpoint. Typically, the guest operating system running in the VM has one “view” of the memory 220, i.e., “guest-physical” memory, corresponding to one nested page table, as described further herein. Accordingly, as described herein, a same nested page table (i.e., memory view) may be used by a plurality of guest processes, each contained in a separate corresponding micro-VM that uses the same nested page table. However, additional views of memory may be created for each guest process, wherein every view corresponds to a different (i.e., separate) nested page table. Thus, different guest processes may view the guest-physical memory differently (e.g., with different translations or different permissions to the host-physical memory).
In an embodiment, the micro-VM may be implemented as such a view (i.e., a guest-physical memory view) of the memory 220, i.e., controlling the host-physical memory (hardware resource) underlying the guest-physical view of memory. Notably, different guest processes 240 may run in different micro-VMs, each of which is controlled by the (same) guest monitor 352 (also controlling the VM) to thereby enable a global view of execution activity in the guest operating system. The micro-VM thus has properties similar to the typical VM, but with less overhead, i.e., no additional guest monitors. In terms of execution, operation of the guest process is controlled and synchronized by the guest operating system kernel 230; however, in terms of access to hardware resources (managed in host mode), operation of the process is controlled by the guest monitor 352. Access to hardware resources may be synchronized among the micro-VMs and the VM by the guest monitor 352 rather than virtually shared. Notably, certain types of hardware resources, such as memory, may not need express synchronization among micro-VMs. For example, each CPU core may have a single memory view (i.e., set of nested page tables) active at a time, so that express synchronization among memory views is unnecessary. As such, memory views may be assigned to multiple micro-VMs with implicit synchronization.
In an embodiment, the privileged interfaces 305 and 315 may be embodied as a set of defined hyper-calls, each of which is an operation that explicitly calls (explicit transition) into the micro-hypervisor. The hyper-calls may originate from one or more hyper-processes 350 of the virtualization layer 310 and are directed to the micro-hypervisor 320 over the privileged interface 315 alternatively, bi-directional communications may originate from a protected component (e.g., an agent) in the guest operating system directed to the micro-hypervisor (virtualization layer) over the privileged interface 305. A transition from the guest operating system to the virtualization layer 310 is called a VM exit. Such a transition may be implicit, e.g., an intercepted operation or page-protection violation, or explicit, such as a VMCALL instruction from guest mode to host mode. Further, as used herein, an inter-process communication (IPC) message between two hyper-processes requires two hyper-calls (i.e., one for each process) for bi-directional communication.
The policy manager 356 may contain computer executable instructions executed by the CPU 210 to perform operations that associate a protection policy with each guest process 240. The threat protection component 354 may include instrumentation logic implemented as heuristics configured to determine the presence of an exploit or malware in any suspicious guest operating system process (kernel or user mode). To that end, the threat protection component 354 may include software program code (e.g., executable machine code) in the form of instrumentation logic (including decision logic) configured to analyze one or more interception points originated by one or more guest processes 240 to invoke the services, e.g., accesses to the hardware resources, of the guest operating system kernel 230. Illustratively, the threat protection component 354 may contain computer executable instructions executed by the CPU 210 to perform operations that initialize and implement the instrumentation logic.
As used herein, an interception point is a point in an instruction stream where control passes to (e.g., is intercepted by) the virtualization layer 310, e.g., the micro-hypervisor 320. Illustratively, the micro-hypervisor can intercept execution inside the guest operating system at arbitrary points such as (i) inside any guest process, (ii) inside the guest operating system kernel, and/or (iii) on transitions between guest processes and the guest operating system kernel. Malicious behavior may then be analyzed by the virtualization layer (e.g., the threat protection component 354), wherein the behavior may occur anywhere in the guest operating system, including in any guest process or in the guest operating system kernel. The virtualization layer 310 may, thus, place interception points at appropriate instruction stream points, whether in a process or in the kernel.
The guest operating system kernel 230 may be configured to include an operating system (OS) specific extension or agent 360 adapted to communicate with the threat protection component 354. The agent 360 illustratively contains executable machine code in the form of logic configured to provide an interface to the threat protection component 354 that allows introspection (examination and/or interception) of contents of internal structures of the guest operating system kernel 230, as well as semantic context associated with such contents. Such virtual machine introspection (VMI) may involve examination of data structures of the guest operating system kernel 230 in a manner that obviates duplication of (i.e., without copying) those structures between the guest and host modes of the virtualization architecture. To that end, the agent 360 may run in host mode ring 3, guest mode ring 0 or guest mode ring 3; however, in an embodiment described herein, the agent 360 illustratively runs in guest mode ring 0 (as a kernel mode driver) and guest mode ring 3 (as a user mode application). Accordingly, the agent 360 may contain computer executable instructions executed by the CPU 210 to perform operations that implement communication with, and introspection by, the threat protection component 354. For example, identification (ID) of each guest process 240 running in the guest operating system may be obtained from process IDs stored in a data structure, e.g., the process table 245, of the guest operating system kernel 230. Instead of having to duplicate that data structure and its contents to the host mode, the threat protection component 354 can instruct the agent to examine the process table 245 and provide the ID of the guest process 240. That is, the agent 360 operating in the guest mode may act on behalf callers (e.g., guest monitor 352) operating in the host mode to access data structures in the guest mode. Alternatively, the threat protection component may examine directly the memory used by the guest O/S (i.e., virtual machine introspection) to determine locations (and layout) of the process table 245 so as to determine the ID of the guest process 240. Illustratively, threat protection component 354 may communicate with the guest operating system kernel 230 (i.e., the agent 360) over a defined application programming interface (API) 365.
As a light-weight module, the micro-hypervisor 320 may provide a virtualization layer having less functionality than a typical hypervisor. Therefore, as used herein, the micro-hypervisor 320 is a module that is disposed or layered beneath (underlying, i.e., directly on native hardware and operating at a highest privilege level of that native hardware) the guest operating system kernel 230 and includes the functionality of a micro-kernel (e.g., protection domains, execution contexts, capabilities and scheduling), as well as a subset of the functionality of a hypervisor (e.g., management of virtual CPUs and their states, management of the MMU, IOMMU and other security-critical devices, as well as hyper-calls to implement a virtual machine monitor). Accordingly, the micro-hypervisor 320 may cooperate with the guest monitor 352 to provide additional virtualization functionality in an operationally and resource efficient manner. Unlike a type 1 or type 2 VMM (hypervisor), the guest monitor 352 is illustratively a type 0 VMM (VMM 0) that does not fully virtualize the hardware resources of the node 200, while supporting execution of one entire operating system/instance inside one virtual machine, i.e., the VM. The guest monitor 352 may thus instantiate the VM as a container for the guest processes 240, as well as the guest operating system kernel 230 and its hardware resources. Illustratively, the guest monitor 352 is a pass-through module configured to expose the hardware resources of the node (as controlled by the micro-hypervisor) to the guest operating system kernel 230. Yet, virtualization processing in response to a VM exit (and a resulting transition of control flow from the guest operating system to the micro-hypervisor) may be performed by the guest monitor. To that end, the micro-hypervisor 320 may enable communication between the guest operating system (i.e., the VM) and the guest monitor over privileged interfaces 305 and 315.
In an embodiment, the micro-hypervisor 320 may include a plurality of data structures, such as objects 330 and capabilities 342, configured to provide security and isolation features associated with the virtualization architecture 300. Illustratively, the objects 330 include one or more protection domains 332, execution contexts 334 and scheduling contexts 336. As used herein, a protection domain 332 is a kernel mode object that implements spatial isolation among the hyper-processes of the virtualization layer and includes a representation of a security privilege associated with each hyper-process 350 that is enforced by the micro-hypervisor 320. Illustratively, each hyper-process 350 in the virtualization layer 310 runs in a separate protection domain 332. An execution context 334 is illustratively a representation of a thread associated with the hyper-process 350 and, to that end, defines a state of the thread for execution on the CPU 210. In an embodiment, the execution context 334 may include inter alia (i) contents of CPU registers, (ii) pointers/values on a stack, (iii) a program counter, and/or (iv) allocation of memory via, e.g., memory pages. The execution context 334 is thus a static view of the state of thread and, therefore, its associated hyper-process 350. For the thread to execute on a CPU, its execution context is tightly linked to a scheduling context 336, which may be configured to provide information for scheduling the execution context 334 for execution on the CPU 210. Illustratively, the scheduling context information may include a priority and a quantum time for execution of its linked execution context on CPU 210.
The micro-hypervisor 320 also includes a per-protection domain (PD) capability space 340 that contains capabilities 342A-N, wherein each capability 342 is a pointer to an object 330 having associated permissions (i.e., privileges). Hyper-processes 350 of the virtualization layer 310 do not have the ability to work with the capabilities 342 directly, i.e., they cannot read the pointer or privileges directly and can only refer to those capabilities using a capability selector 345, e.g., an integral number. To invoke a specific capability, a hyper-process 350, such as the guest monitor 352, may issue a hyper-call request (e.g., over interface 315) to the micro-hypervisor 320, wherein the request includes an action (e.g., “send a message” or “delegate a capability”) along with a corresponding capability selector, i.e., an index such as N, that identifies (names) the object 330 involved in the hyper-call. Illustratively, the capabilities 342 are used to name the object on which the hyper-call operates and, at the same time, convey the access permissions of the calling hyper-process on that object. In response to the request, the micro-hypervisor may access the per-PD capability space 340 to select the requested capability 342N, which names (e.g., points to) the object (e.g., scheduling context 336) on which the action is performed.
Illustratively, a capability 342 is a concept that is only known in the virtualization layer 310, i.e., the guest operating system is unaware of the capability. The capability 342 is essentially a mechanism to enforce security privileges among the hyper-processes 350 of the virtualization layer 310. Notably, each hyper-process 350 is provided only a minimal set of capabilities 342 necessary for that component to perform its assigned function. For example, the guest monitor 352 may have the capability to access the VM, while only the threat protection component 354 may have the capability to communicate with the guest monitor 352 and policy manager 356. Thus, an attacker that is able to compromise a hyper-process (protection domain 332) would only be able to inflict damage associated with the capabilities 342 held by that protection domain 332.
As described herein, certain events or activities, e.g., attempted access to hardware resources, of a guest process 240 may be treated as interception points that allow the virtualization layer 310 to further monitor or instrument the process using a spawned micro-VM. A system call is an example of an interception point at which a change in privilege modes or levels occurs in the guest operating system, i.e., from guest mode ring 3 (a lowest level of guest mode privilege) of the guest process 240 to guest mode ring 0 (a highest mode of guest mode privilege) of the guest operating system kernel 230. The guest monitor 352 may intercept the system call and examine a state of the process issuing (sending) the call. The instrumentation logic of threat protection component 354 may analyze the system call to determine whether the call is suspicious and, if so, instruct the guest monitor 352 to instantiate (spawn) one or more micro-VMs, managed by the guest monitor in cooperation with the threat protection component, to detect anomalous behavior which may be used in determining an exploit or malware.
As used herein, an exploit may be construed as information (e.g., executable code, data, one or more commands provided by a user or attacker) that attempts to take advantage of a computer program or system vulnerability, often employing malware. Typically, a vulnerability may be a coding error or artifact of a computer program that allows an attacker to alter legitimate control flow during processing of the computer program by an electronic device and, thus, causes the electronic device to experience undesirable or unexpected behaviors. The undesired or unexpected behaviors may include a communication-based or execution-based anomaly which, for example, could (1) alter the functionality of the electronic device executing application software in a malicious manner; (2) alter the functionality of the electronic device executing the application software without any malicious intent; and/or (3) provide unwanted functionality which may be generally acceptable in another context. To illustrate, a computer program may be considered a state machine where all valid states (and transitions between states) are managed and defined by the program, in which case an exploit may be viewed as seeking to alter one or more of the states (or transitions) from those defined by the program. Malware may be construed as computer code that is executed by an exploit to harm or co-opt operation of an electronic device or misappropriate, modify or delete data. Conventionally, malware may often be designed with malicious intent, and may be used to facilitate an exploit. For convenience, the term “malware” may be used herein to describe a malicious attack, and encompass both malicious code and exploits detectable in accordance with the disclosure herein.
Memory Virtualization
Virtualization provides one or more additional page tables, i.e., nested page tables (NPT) 430, layered underneath (i.e., nested with) the GPT 410. The nested page tables 430 may be utilized to perform a second translation from the guest-physical address 425 to a host-physical address 435, wherein the host-physical address 435 is an address used to access (physical) main memory 220. The translation of guest-physical address 425 to host-physical address 435 may be flexible, i.e., such translation may be implemented on a per page basis to determine how each guest-physical address 425 is translated to a host-physical address 435. Illustratively, translation from guest-physical addresses to host-physical addresses is controlled by the virtualization layer 310 to establish a mapping from the guest-physical addresses used in a VM (e.g., the VM) to a host-physical address in main memory 220.
In an embodiment, guest page tables 410 are part of a guest page table hierarchy that is controlled by the guest operating system kernel 230, and the nested page tables 430 are part of a nested page table hierarchy that is controlled by the virtualization layer 310, e.g., managed by the micro-hypervisor 320 in cooperation with the guest monitor 352. In one arrangement where the MMU hardware supports nested paging, the page table hierarchies may be organized as a two-stage (i.e., layered) translation arrangement of the (physical) MMU 215 (supporting a virtualized MMU via two-level page table hierarchies), where the page tables define the translation of a guest-virtual address 415 to a guest-physical address 425 (a first stage defined by the GPT) and, ultimately, to a host-physical address 435 (a second stage defined by the NPT). There, the guest operating system kernel 230 manages the guest page tables 410, the virtualization layer 310 manages the nested page tables 430, and the nested page tables are consulted by the MMU after the guest page tables. Hence, the nested page tables may be used to override permissions.
In an alternative arrangement where the MMU hardware does not support nested paging (e.g., it can only perform one-level translation), the guest page tables may be organized as a shadow page table arrangement synchronized with the nested page table hierarchy such that the shadow page tables provide guest-virtual address to host-physical address translations that are updated (i.e., synchronized) with changes to the guest page table hierarchy or nested page table hierarchy. The virtualization layer 310 is responsible for folding the guest page tables 410 (managed by the guest operating system kernel 230) and the nested page tables 430 (managed by the virtualization layer) together to create the shadow page tables so as to perform end-to-end translation from guest-virtual addresses to host-physical addresses. The MMU 215 then uses the shadow page tables for translating guest-virtual addresses to host-physical addresses as a single level translation. Accordingly, the shadow page tables are updated when the guest page tables or nested page tables change. It should be noted that either arrangement may provide additional functionality, wherein each translation stage may define access permissions on a page granularity. That is, for each page referenced by a page table, access permissions may be specified as to whether the page is readable (r) writeable (w), or executable (x).
In an embodiment, the “ultra” (ultimate) translation to physical memory of the two-stage arrangement, i.e., the translation from guest-physical address 425 to host-physical address 435, may be employed to overwrite any page permissions that the guest operating system kernel 230 has defined. For example, assume the guest operating system kernel 230 has defined, using the GPT, a certain read (r), write (w), execute (x) mapping for a guest-virtual address 415 to guest-physical address 425 of a page accessible by a guest process 240, so that the guest process 240 may expect that it can actually read, write and execute that page. Yet, using the nested page tables 430 (i.e., layered beneath the GPT), the virtualization layer 310 may alter or change those permissions to be write protected, i.e., read-only (r) and execute (x) with no write permission, for the actual (host) physical page that the guest operating system kernel 230 (and guest process 240) may attempt to access. Therefore, any time that the guest process 240 attempts a write access to the page, an access violation of the nested page tables occurs, resulting in a VM exit (e.g., a transition) that returns control to the virtualization layer 310. Note that for the shadow page table arrangement, the violation occurs for a shadow page acting as a condensed two-stage address translation. In response to determining that the attempted write access is to a physical page that is write protected, the virtualization layer 310 may take action, such as emulating the access, making the page writeable, shadow copying the write, or completely nullifying the effects of that access. As another example, assume the guest operating system kernel 230 has marked the page as non-executable. The virtualization layer 310 may render the page executable or emulate the instruction that would have been executed if the page had been executed.
Memory Views
As noted, the micro-VM may be implemented as a view of the memory 220 (memory view) embodied as nested page table address mappings that control the host-physical memory underlying the guest-physical view of memory. Accordingly, the memory view is a hardware resource (i.e., a set of NPT tables) used by the micro-VM as a container (i.e., constraining access to memory) for one or more guest processes. The address space of each guest process 240 may be represented by the combination of the GPT and a memory view (e.g., NPT address mappings). Different guest processes 240 may run in different memory views, each of which is controlled by the guest monitor 352 associated with the VM to thereby enable a global view of execution activity in the guest operating system. In an embodiment, each memory view may have its own nested page table hierarchy that describes the guest-physical memory layout of the view (i.e., micro-VM); accordingly, the VM may implement one or more micro-VMs as memory views through different NPTs 430 of the nested page table hierarchies. A protection profile of each guest process defines in which memory view (micro-VM) that guest process runs. The guest operating system kernel 230 and hardware resources may then be mapped into the memory views to ensure synchronization when accessing the guest operating system kernel and resources.
Illustratively, each memory view 510 has its own set of NPTs 430 of a nested page table hierarchy associated with a micro-VM that describes the guest-physical memory layout of that view as controlled by the virtualization layer 310, e.g., managed by micro-hypervisor 320 in cooperation with the guest monitor 352. For example, memory view 510a has NPTs 430a associated with micro-VM 0, memory view 510b has NPTs 430b associated with micro-VM 1, and memory view 510c has NPTs 430c associated with micro-VM 2. As such, the VM may include one or more micro-VMs each having different nested page table hierarchies. Accordingly, one or more guest processes 240 along with the guest operating system kernel 230 run in a micro-VM, i.e., guest processes 240a,b,c and guest O/S kernel 230 run in micro-VM 0, guest processes 240d,e and guest O/S kernel 230 run in micro-VM 1, and agent 360 and guest O/S kernel 230 run in micro-VM 2.
When the guest operating system kernel 230 switches from one guest process 240 to another, the guest monitor 352 (VMM) observes the guest process switch and, in response, swaps (switches) to the NPT 430 that implements the memory view to which the switched process is assigned. Thus, if the guest monitor 352 observes a guest process switch from guest process 240a to guest process 240c (or from guest process 240d to guest process 240e), no NPT switching occurs and the memory view remains unchanged. However, in response to observing a guest process switch from guest process 240c to guest process 240e, the guest monitor 352 switches from NPT 430a to NPT 430b. Likewise, in response to observing a switch from guest process 240d to the agent 360, the guest monitor switches from NPT 430b to NPT 430c. Because the guest operating system kernel 230 is mapped in all nested page table hierarchies, a change from one memory view (micro-VM) to another does not change the state of the guest operating system kernel, i.e., it appears as if the guest operating system kernel 230 “moves” from one memory view to another.
Advantageously, the assignment of guest processes to memory views (micro-VMs) is flexible and efficient. For example, guest processes that belong to a particular (default) protection profile may run in memory view 510a where the entire memory is visible, e.g., in guest mode, and no permissions have been overridden. Certain other guest processes may require a higher degree of protection/monitoring and may be assigned to memory view 510b where the guest monitor 352 may tighten (i.e., restrict) permission to certain memory pages. Likewise, certain trusted processes, such as agent 360, may be assigned to memory view 510c where certain memory pages are visible (i.e., accessible) that are not visible in the other memory views. In sum, one or more guest processes may be assigned to each memory view and a guest process may also be reassigned from one memory view to another.
Secure Communication
The embodiments described herein provide a technique for establishing secure communication between processes of the guest operating system and the virtualization layer of the virtualization architecture. Establishment of secure communication between the virtualization layer and guest operating system may be further extended to interfaces and/or devices coupled to the network because the guest operating system in the VM has pass-through access to all platform (node) devices, except for security-critical devices such as interrupt controllers, the MMU and the IOMMU. Such access obviates the need for the virtualization layer to provide drivers (i.e., emulation) for various hardware devices on the node; instead, drivers of the guest operating system may be used to manage and control the devices directly, which also improves efficiency and performance by eliminating I/O handling in the virtualization layer. As such, the virtualization layer depends on the guest operating system for external communication, e.g., via a network interface 260.
For example, to communicate with an another (i.e., external) node on the network via a network interface, the virtualization layer may pass a message through the guest operating system via an associated network driver to the network interface. Thus, a foothold is required in the guest operating system for the virtualization layer to perform I/O, e.g., access the network, as well as to access any other hardware device on the node, such as a disk or display. From an I/O availability perspective, the virtualization layer 310 is dependent on the guest operating system, e.g., communication with a device may be lost if the guest operating system kernel 230 disables the device or uninstalls its driver. However from either an I/O integrity (correctness) or confidentiality (privacy) perspective, the virtualization layer is not dependent on the guest operating system because the virtualization layer can encrypt content of the information transmitted for communication and include a message authentication code (MAC).
In an embodiment, secure communication may established between a process in the virtualization layer (i.e., host) and a process in the guest operating system (i.e., guest), wherein the virtualization layer process is illustratively the threat protection component 354 and the guest operating system process is illustratively the agent 360. However, the technique described herein may be extended to enable secure communication between any process of the virtualization layer 310 (including the micro-hypervisor 320) and any kernel or user mode process of the guest operating system. According to the technique, secure communication is illustratively established using a virtual communication device which, in an embodiment, is implemented as shared memory, e.g., in main memory 220, having two memory (e.g., ring) buffers. In alternative embodiments, the virtual communication device may be implemented as a bi-directional memory buffer, as well as one or more (i) queues, (ii) first-in first-out (FIFO) buffers, (iii) stacks or other organized forms of memory buffers. Moreover, virtual communication also may be performed completely without memory, e.g., using strictly CPU registers.
In an embodiment, a messaging protocol between the agent 360 and the virtualization layer 310 includes (i) a request/response phase used for exchange of information and (ii) an initialization (setup) phase that authenticates the agent to the virtualization layer and enables the exchange of information, such as doorbell signaling attributes, by the request/response phase.
According to the technique, the probe request (i.e., the CPUID instruction) is interpreted by the virtualization layer as an identification of the agent and, further, as a probe for the communication interface (i.e., the shared memory buffers). In response to the probe request, the virtualization layer may authenticate the agent to confirm that the instruction is issued by an authentic agent process at step 706. Notably, the virtualization layer (e.g., the threat protection component 354) may authenticate the agent by, e.g., write-protecting the code section (code pages) of the agent process prior to hashing the code pages and confirming its identity, as described in U.S. patent application Ser. No. 15/230,215 filed on Aug. 5, 2016 titled, Technique for Protecting Guest Processes Using a Layered Virtualization Architecture, by Udo Steinberg. If the identity of the agent is not confirmed (step 708), the virtualization layer may treat the caller of the probe request as a typical guest process and may respond by, e.g., by providing a typical response for the probe request (i.e., CPUID instruction), such as returning typical information expected in response to the x86 CPUID instruction. In other words, the probe request fails (step 710) in a manner that does not reveal the presence of the interface (e.g., by generating an undefined opcode exception); accordingly, the virtualization layer does not expose the interface. However, if the identity of the agent is confirmed at step 708, i.e., it is determined that the probe request originates from an authentic agent, the virtualization layer may respond by exchanging device-specific information about the communication interface with the agent at step 712. At step 714, the agent is further protected (e.g., beyond write protection of the code pages) from tampering through the application of, e.g., a protection profile, as described in U.S. patent application Ser. No. 15/230,215 titled, Technique for Protecting Guest Processes Using a Layered Virtualization Architecture. For example, the protection profile may be applied to the agent code to protect all of the code pages of the agent against modification by, e.g., rendering the pages execute-only. The procedure then ends at step 716.
Referring again to
Accordingly, for communication device interrupts (e.g., signaling mechanism 650) the interrupt vector may represent the entry point of the ISR. The ISR may be invoked by issuing (injecting) an interrupt into the virtual machine such that execution is transferred to the ISR (i.e., equivalent to a device interrupt in the virtual machine for the communication interface “device”), which guarantees execution time in the guest operating system irrespective of any guest process scheduling priorities. Illustratively, the agent 360 provides the allocated (or registered) interrupt vector to the virtualization layer as an interrupt handler entry point for a virtual interrupt used as the H2G doorbell notification. That is, the interrupt vector is used by the virtualization layer as a H2G doorbell 670 for the H2G buffer 620 to effect communication with the agent by, e.g., injecting the interrupt vector into the guest operating system kernel 230.
Furthermore, the probe request issued to the virtualization layer includes a guest-physical memory address range to which the agent 360 can request the guest monitor 352 to map the two buffers of the communication interface 600 into its guest-physical address space. As noted, the kernel mode driver 362 of the agent searches (i.e., probes) for the communication interface 600 during the initialization phase. As part of its configuration of a device (e.g., the communication interface), the kernel mode driver 362 selects an address range within an address space of the virtual machine at which to place the (virtual) device in main memory 220. In an embodiment, the main memory 220 of the node (e.g., endpoint 200E) is apportioned into (i) host-physical memory controlled by the virtualization layer 310 and having a host-physical address space and (ii) guest-physical memory controlled by the guest operating system kernel 230 and having a guest-physical address space. The kernel mode driver 362 may choose a location (e.g., an address range) for the shared memory buffers in the guest-physical address space. That is, the virtualization layer allows the kernel mode driver 362 to choose the guest-physical memory address range for mapping the buffers of the communication interface 600.
In an embodiment, a backing store for the shared memory buffers is allocated (provided) by the virtualization layer, e.g., in host-physical memory, such that the agent is the only in-guest process aware of the existence of the buffers, i.e., only the agent is aware that the communication interface exists in memory. The virtualization layer 310 provides the backing store for the host-physical memory allocated for the buffers (e.g., by controlling the translation from guest-physical addresses to host-physical address) to prevent control of that shared memory resource by the guest operating system. Thus, the memory buffers are hidden from the guest operating system, which ensures that the guest operating system kernel 230 does not page out (swap) the buffers to disk or modify them in any way. Moreover, the virtualization layer 310 may protect (e.g., restrict access permission to) the buffers of the communication interface, e.g., against misuse, by ensuring that the interface is only visible when the agent is active (running) and is otherwise inaccessible to the guest operating system kernel 230 and to direct memory access operations from I/O devices. Note the virtualization layer may also protect data structures related to interrupt vector handling (e.g., IDT, GDT and TSS as described later herein) to prevent tampering (e.g., modification) by malware. An example technique for protecting data structures and/or processes is described in U.S. patent application Ser. No. 15/230,215 titled, Technique for Protecting Guest Processes Using a Layered Virtualization Architecture.
Illustratively, the agent 360 (i.e., its kernel mode driver 362 of interface 600) is configured to select an address range for mapping the buffers into the guest-physical address space. That is, the agent has knowledge of how the guest-physical address space (i.e., virtual machine memory map) is used (allocated) by the guest operating system, and thus, is able to select an address range for the communication interface buffers. Note that placing the address range selection burden on the agent permits the virtualization layer to be independent of the guest operating system. Once the address range is chosen, the virtual device (communication interface 600) is present in (physical) memory 220, e.g., at a location (i.e., host-physical address space) mapped by the virtualization layer to appear (in the virtual machine) at the guest-physical address range requested by the agent. Notably, although the virtual device is resident in the guest-physical address space, the guest operating system kernel 230 has no knowledge of the device or how to use it.
As noted, the interrupt vector is a (direct or indirect) reference or pointer to a location in memory of the ISR. When an interrupt occurs, execution in the guest operating system may involve use of the IDT which, for each interrupt vector, points to an interrupt handler (i.e., the ISR). The interrupt vector is illustratively an interrupt vector that interacts with the ISR installed for the agent 360. The virtualization layer 310 only requires knowledge of the interrupt vector which, when injected into the VM, invokes an interrupt delivery infrastructure of the virtual machine (e.g., an interrupt mechanism of the CPU architecture) as configured by the guest operating system. To protect against nefarious actions (e.g., tampering to prevent detection) by malware, the virtualization layer 310 may override page protections in the guest operating system to render the IDT write-protected using the NPT 430, such that any attempt by the guest operating system kernel 230 (e.g., kernel-privileged malware in the guest operating system) to modify the IDT is prevented. In addition, a trap to the virtualization layer may occur, permitting further analysis to determine whether malware is present and to decide whether to allow the modification (or more likely, reject the attempted modification).
Accordingly when activated, the kernel mode driver 362 of the agent allocates (or registers with guest operating system) the interrupt vector, creates and installs the ISR, chooses a guest-physical memory address range for the buffers of the interface, and then issues the probe request having the interrupt vector to the virtualization layer. The virtualization layer 310 retains the interrupt vector as the H2G doorbell 670 and maps the two buffers into the guest-physical address range chosen by the agent/guest operating system to create the communication interface 600. Additionally, as previously described, to further ensure secure communication over the interface, the virtualization layer may “lock down” (i.e., write-protect) all data structures in the guest operating system related to interrupt delivery, as described in U.S. patent application Ser. No. 15/230,215 titled, Technique for Protecting Guest Processes Using a Layered Virtualization Architecture. In an embodiment (e.g., the x86 CPU architecture), these data structures include (1) the IDT containing the pointer (interrupt vector) to the ISR, (2) a global descriptor table (GDT) which contains a descriptor (e.g., access privileges) of one or more memory segments used for ISR execution, (3) a task state segment (TSS) which contains information such as a stack pointer for the ISR, and (4) the code page for ISR, which contains the code to be executed when the ISR is invoked. Lock down of these data structures, e.g., via the above described technique, prevents tampering from within the virtual machine so as to provide a secure foothold into the guest operating system that is generally unbreakable (immutable), unless virtual interrupts (i.e., I/O interrupts of the virtual machine) are disabled (e.g., by malware) which would render the guest operating system unusable, even to malware.
Once the communication interface 600 is created, messages (packets) may be exchanged in accordance with the request/response protocol phase. In an embodiment, each packet includes a type field that indicates a type of packet (e.g., a network packet, an exploit detection packet and/or a process protection packet) as well as a sequence number field that identifies the packet via, e.g., an ID. The virtualization layer (e.g., the threat protection component) may use the type field to determine the type of packet and use the sequence number field to pair up requests and responses (thus providing an asynchronous interface). Illustratively, the messaging protocol contemplates a generic message format that includes, inter alia, a type field, an operation code field (requesting an operation to be performed) and a sequence number field, such that format may be used for a variety of forms of communication and packets. Note that the interrupt vector that is allocated (or registered) during the setup phase is presumed fixed and used for the lifetime of the VM (guest operating system). That is, the kernel mode driver 362 and ISR are presumed to persist at fixed locations in the guest-physical address space. Illustratively, when the guest operating system starts up and upon initializing the interface, the kernel mode driver 362 allocates the interrupt vector, which the agent 360 provides to the virtualization layer 310. The interrupt vector is then used as the H2G doorbell 670 for the H2G buffer 620 for the existence of the VM. Illustratively, when the VM shuts down and subsequently comes up, i.e., the guest operating system kernel 230 is rebooted, a different interrupt vector may be chosen. However, once the communication interface 600 has been initialized (instantiated), the vector remains constant until the guest operating system is rebooted.
In an embodiment, a request/response messaging protocol may be established across the G2H and H2G buffers of the communication interface 600 to enable bi-directional transfer of information between the agent 360 and the virtualization layer 310.
In response to the VM exit, control is transferred to another hyper-process (e.g., the threat protection component 354) of the virtualization layer which examines the G2H buffer 610 and retrieves the request content (messages) from the buffer. Note that, in an embodiment, reception of the notification and retrieval of the message content may be performed at the virtualization layer by a single hyper-process. At step 808, the virtualization layer 310 processes the message in accordance with the request. Subsequently, at step 810, the virtualization layer 310 may load a response having results of the processing along with the ID (e.g., ID X) of the request into the H2G buffer 620. Using the request and response IDs, the agent can determine which response belongs to which request.
According to the technique, the communication interface 600 may be configured to synchronously or asynchronously signal (notify) the agent 360 as to the presence of the response in the H2G buffer 620. For example, the virtualization layer (e.g., the threat protection component 354) may synchronously signal the agent by using a return to the VMCALL instruction, thus configuring the communication interface 600 as a synchronous interface. However, it may be desirable to configure the interface in an asynchronous manner. To that end, the virtualization layer may asynchronously signal the agent through issuance of the virtual interrupt (H2G doorbell 670) to transfer control back to the agent 360 (guest operating system) in the VM (step 812). To asynchronously signal the agent, the threat protection component 354 may instruct the guest monitor 352 of the virtualization layer to inject the virtual interrupt into the guest operating system kernel 230, i.e., generate a device interrupt for the communication interface interrupt in the virtual machine VM. In response to the interrupt injection, the (virtual) CPU may exit the guest operating system (e.g., via a VM exit) and redirect execution flow in the VM to the ISR of the agent, thereby ensuring (guaranteeing) execution time in the guest operating system for the agent. Thus to invoke the ISR, the virtualization layer injects the virtual interrupt vector into the guest operating system kernel 230. Invocation of the ISR passes control to the agent 360, which may then access the H2G buffer 620 to retrieve and process the content (results) of the buffer (at step 814). The procedure then ends at step 816.
Likewise to transfer information to the agent, the virtualization layer (e.g., the threat protection component 354) loads a request having one or more messages along with an ID of the request (e.g., ID Y) into the H2G buffer 620. In an embodiment, a hyper-process (e.g., the guest monitor 352) of the virtualization layer may request the services of the agent 360 to, e.g., forward one or more network packets to the network interface 260 (network driver) and over the network 130. Another hyper-process (e.g., the threat protection component 354) may load the packets into the H2G buffer 620 and notify the agent by injecting the virtual interrupt into the guest operating system. Illustratively, the virtual interrupt is embodied (acts) as the H2G doorbell 670 to notify the agent that new messages are present in the H2G buffer 620. In response, at a later point in time, the agent 360 may answer by loading the ID of the request (e.g., ID Y) into the G2H buffer 610. Again, by matching request and response IDs, the virtualization layer 310 can determine which response belongs to which request.
Advantageously, the technique provides a high-bandwidth, low-latency communication interface 600 between the agent 360 and virtualization layer 310 that is secure and hidden from the guest operating system kernel 230. The secure communication interface may be used with any messaging protocol to exchange messages for a variety of implementations including disk and network accesses, the latter of which may involve downloading of policy files from the network 130 through the guest operating system and into the virtualization layer 310. In addition, the interface 600 may be used for secure communication between the agent and the virtualization layer regarding guest process protection, including notifications for processes being created and destroyed, as well as exploit detection events or other alerts. Furthermore, the interface may be used for secure communication between the agent 360 and the virtualization layer 310 through issuance of requests and responses in arbitrary order, including out-of-order. That is, upon receiving a request, the receiving process can either issue a response immediately (synchronously) or at some later point in time (asynchronously).
While there have been shown and described illustrative embodiments for establishing secure communication between processes of a guest operating system and a virtualization layer of a virtualization architecture executing on a node of a network environment, it is to be understood that various other adaptations and modifications may be made within the spirit and scope of the embodiments herein. For example, embodiments have been shown and described herein with relation to deployment of the virtualization architecture 300 in an endpoint 200E (i.e., node) of network 130. However, the embodiments in their broader sense are not so limited, and may, in fact, provide for deployment of the virtualization architecture 300 in an appliance, such as MDS appliance 200M, of the network. In such a deployment, the virtualization layer 310 of the architecture may include the micro-hypervisor 320 and hyper-processes 350 described herein. However, instead of one or more micro-VMs, the virtualization architecture may employ one or more full VMs (i.e., fully virtualizing the hardware resources), wherein each VM may run a guest operating system (kernel and guest processes) associated with a guest monitor 352 and thread protection component 354. Although the technique described herein may be deployed in the appliance to establish secure communication between the processes of the guest operating system and the virtualization layer, the MDS appliance 200M may be further configured to implement measures that make it harder for an attacker to discover that it is running inside a VM. Nevertheless, the secure communication technique provides a light-weight interface presented as a virtual device to the guest operating system in either the endpoint or appliance.
Moreover, the embodiments described herein may be extended to securely harden the communication interface 600 by, e.g., encrypting the entire agent code except for the kernel mode driver 362 that initializes the interface. Once the agent 360 initializes the interface and calls into the virtualization layer, which confirms the identity of the agent, the virtualization layer 310 may decrypt the remaining part of the agent. Before decryption, the virtualization layer may ensure that all of the agent code resides in protected memory, as described in U.S. patent application Ser. No. 15/230,215 titled, Technique for Protecting Guest Processes Using a Layered Virtualization Architecture. Thus, the agent code is not exposed in clear (unencrypted) form to any unauthorized code running in any virtual machine. Accordingly, when inactive, the agent's code is rendered “invisible”, i.e., only when active (i.e., running) is the code visible. Furthermore, the binary image stored on disk may be encrypted to make it difficult for an attacker to reverse engineer (off line).
The foregoing description has been directed to specific embodiments. It will be apparent, however, that other variations and modifications may be made to the described embodiments, with the attainment of some or all of their advantages. For instance, it is expressly contemplated that the components and/or elements described herein can be implemented as software encoded on a tangible (non-transitory) computer-readable medium (e.g., disks, electronic memory, and/or CDs) having program instructions executing on a computer, hardware, firmware, or a combination thereof. Moreover, the embodiments or aspects thereof can be implemented in hardware, firmware, software, or a combination thereof. In the foregoing description, for example, in certain situations, terms such as “engine,” “component” and “logic” are representative of hardware, firmware and/or software that is configured to perform one or more functions. As hardware, engine (or component/logic) may include circuitry having data processing or storage functionality. Examples of such circuitry may include, but is not limited or restricted to a microprocessor, one or more processor cores, a programmable gate array, a microcontroller, an application specific integrated circuit, semiconductor memory, or combinatorial logic. Accordingly this description is to be taken only by way of example and not to otherwise limit the scope of the embodiments herein. Therefore, it is the object of the appended claims to cover all such variations and modifications as come within the true spirit and scope of the embodiments herein.
The present application claims priority from commonly owned Provisional Patent Application No. 62/266,109, entitled TECHNIQUE FOR ESTABLISHING SECURE COMMUNICATION BETWEEN HOST AND GUEST PROCESSES OF A VIRTUALIZATION ARCHITECTURE, filed on Dec. 11, 2015, and from commonly owned Provisional Patent Application No. 62/265,751 entitled TECHNIQUE FOR PROTECTING GUEST PROCESSES USING A LAYERED VIRTUALIZATION ARCHITECTURE, filed Dec. 10, 2015, the contents of which applications are incorporated herein by reference.
Number | Name | Date | Kind |
---|---|---|---|
4292580 | Ott et al. | Sep 1981 | A |
5175732 | Hendel et al. | Dec 1992 | A |
5319776 | Hile et al. | Jun 1994 | A |
5440723 | Arnold et al. | Aug 1995 | A |
5490249 | Miller | Feb 1996 | A |
5657473 | Killean et al. | Aug 1997 | A |
5802277 | Cowlard | Sep 1998 | A |
5842002 | Schnurer et al. | Nov 1998 | A |
5960170 | Chen et al. | Sep 1999 | A |
5978917 | Chi | Nov 1999 | A |
5983348 | Ji | Nov 1999 | A |
6088803 | Tso et al. | Jul 2000 | A |
6092194 | Touboul | Jul 2000 | A |
6094677 | Capek et al. | Jul 2000 | A |
6108799 | Boulay et al. | Aug 2000 | A |
6154844 | Touboul et al. | Nov 2000 | A |
6269330 | Cidon et al. | Jul 2001 | B1 |
6272641 | Ji | Aug 2001 | B1 |
6279113 | Vaidya | Aug 2001 | B1 |
6298445 | Shostack et al. | Oct 2001 | B1 |
6357008 | Nachenberg | Mar 2002 | B1 |
6424627 | Sorhaug et al. | Jul 2002 | B1 |
6442696 | Wray et al. | Aug 2002 | B1 |
6484315 | Ziese | Nov 2002 | B1 |
6487666 | Shanklin et al. | Nov 2002 | B1 |
6493756 | O'Brien et al. | Dec 2002 | B1 |
6550012 | Villa et al. | Apr 2003 | B1 |
6775657 | Baker | Aug 2004 | B1 |
6831893 | Ben Nun et al. | Dec 2004 | B1 |
6832367 | Choi et al. | Dec 2004 | B1 |
6895550 | Kanchirayappa et al. | May 2005 | B2 |
6898632 | Gordy et al. | May 2005 | B2 |
6907396 | Muttik et al. | Jun 2005 | B1 |
6941348 | Petry et al. | Sep 2005 | B2 |
6961806 | Agesen | Nov 2005 | B1 |
6971097 | Wallman | Nov 2005 | B1 |
6981279 | Arnold et al. | Dec 2005 | B1 |
7007107 | Ivchenko et al. | Feb 2006 | B1 |
7028179 | Anderson et al. | Apr 2006 | B2 |
7043757 | Hoefelmeyer et al. | May 2006 | B2 |
7058822 | Edery et al. | Jun 2006 | B2 |
7069316 | Gryaznov | Jun 2006 | B1 |
7080407 | Zhao et al. | Jul 2006 | B1 |
7080408 | Pak et al. | Jul 2006 | B1 |
7093002 | Wolff et al. | Aug 2006 | B2 |
7093239 | van der Made | Aug 2006 | B1 |
7096498 | Judge | Aug 2006 | B2 |
7100201 | Izatt | Aug 2006 | B2 |
7103646 | Suzuki | Sep 2006 | B1 |
7107617 | Hursey et al. | Sep 2006 | B2 |
7159149 | Spiegel et al. | Jan 2007 | B2 |
7213260 | Judge | May 2007 | B2 |
7231667 | Jordan | Jun 2007 | B2 |
7240364 | Branscomb et al. | Jul 2007 | B1 |
7240368 | Roesch et al. | Jul 2007 | B1 |
7243371 | Kasper et al. | Jul 2007 | B1 |
7249175 | Donaldson | Jul 2007 | B1 |
7287278 | Liang | Oct 2007 | B2 |
7308716 | Danford et al. | Dec 2007 | B2 |
7328453 | Merkle, Jr. et al. | Feb 2008 | B2 |
7346486 | Ivancic et al. | Mar 2008 | B2 |
7356736 | Natvig | Apr 2008 | B2 |
7386888 | Liang et al. | Jun 2008 | B2 |
7392542 | Bucher | Jun 2008 | B2 |
7418729 | Szor | Aug 2008 | B2 |
7428300 | Drew et al. | Sep 2008 | B1 |
7441272 | Durham et al. | Oct 2008 | B2 |
7448084 | Apap et al. | Nov 2008 | B1 |
7458098 | Judge et al. | Nov 2008 | B2 |
7464404 | Carpenter et al. | Dec 2008 | B2 |
7464407 | Nakae et al. | Dec 2008 | B2 |
7467408 | O'Toole, Jr. | Dec 2008 | B1 |
7478428 | Thomlinson | Jan 2009 | B1 |
7480773 | Reed | Jan 2009 | B1 |
7487543 | Arnold et al. | Feb 2009 | B2 |
7496960 | Chen et al. | Feb 2009 | B1 |
7496961 | Zimmer et al. | Feb 2009 | B2 |
7519990 | Xie | Apr 2009 | B1 |
7523493 | Liang et al. | Apr 2009 | B2 |
7530104 | Thrower et al. | May 2009 | B1 |
7540025 | Tzadikario | May 2009 | B2 |
7546638 | Anderson et al. | Jun 2009 | B2 |
7565550 | Liang et al. | Jul 2009 | B2 |
7568233 | Szor et al. | Jul 2009 | B1 |
7584455 | Ball | Sep 2009 | B2 |
7603715 | Costa et al. | Oct 2009 | B2 |
7607171 | Marsden et al. | Oct 2009 | B1 |
7639714 | Stolfo et al. | Dec 2009 | B2 |
7644441 | Schmid et al. | Jan 2010 | B2 |
7657419 | van der Made | Feb 2010 | B2 |
7676841 | Sobchuk et al. | Mar 2010 | B2 |
7698548 | Shelest et al. | Apr 2010 | B2 |
7707633 | Danford et al. | Apr 2010 | B2 |
7712136 | Sprosts et al. | May 2010 | B2 |
7730011 | Deninger et al. | Jun 2010 | B1 |
7739740 | Nachenberg et al. | Jun 2010 | B1 |
7779463 | Stolfo et al. | Aug 2010 | B2 |
7784097 | Stolfo et al. | Aug 2010 | B1 |
7832008 | Kraemer | Nov 2010 | B1 |
7836502 | Zhao et al. | Nov 2010 | B1 |
7849506 | Dansey et al. | Dec 2010 | B1 |
7854007 | Sprosts et al. | Dec 2010 | B2 |
7865893 | Omelyanchuk et al. | Jan 2011 | B1 |
7869073 | Oshima | Jan 2011 | B2 |
7877803 | Enstone et al. | Jan 2011 | B2 |
7904959 | Sidiroglou et al. | Mar 2011 | B2 |
7908660 | Bahl | Mar 2011 | B2 |
7930738 | Petersen | Apr 2011 | B1 |
7937387 | Frazier et al. | May 2011 | B2 |
7937761 | Bennett | May 2011 | B1 |
7949849 | Lowe et al. | May 2011 | B2 |
7996556 | Raghavan et al. | Aug 2011 | B2 |
7996836 | McCorkendale et al. | Aug 2011 | B1 |
7996904 | Chiueh et al. | Aug 2011 | B1 |
7996905 | Arnold et al. | Aug 2011 | B2 |
8006305 | Aziz | Aug 2011 | B2 |
8010667 | Zhang et al. | Aug 2011 | B2 |
8020206 | Hubbard et al. | Sep 2011 | B2 |
8028338 | Schneider et al. | Sep 2011 | B1 |
8042184 | Batenin | Oct 2011 | B1 |
8045094 | Teragawa | Oct 2011 | B2 |
8045458 | Alperovitch et al. | Oct 2011 | B2 |
8069484 | McMillan et al. | Nov 2011 | B2 |
8087086 | Lai et al. | Dec 2011 | B1 |
8104034 | Drepper | Jan 2012 | B2 |
8171553 | Aziz et al. | May 2012 | B2 |
8176049 | Deninger et al. | May 2012 | B2 |
8176480 | Spertus | May 2012 | B1 |
8201246 | Wu et al. | Jun 2012 | B1 |
8204984 | Aziz et al. | Jun 2012 | B1 |
8214905 | Doukhvalov et al. | Jul 2012 | B1 |
8220055 | Kennedy | Jul 2012 | B1 |
8225288 | Miller et al. | Jul 2012 | B2 |
8225317 | Chiueh | Jul 2012 | B1 |
8225373 | Kraemer | Jul 2012 | B2 |
8233882 | Rogel | Jul 2012 | B2 |
8234640 | Fitzgerald et al. | Jul 2012 | B1 |
8234709 | Viljoen et al. | Jul 2012 | B2 |
8239944 | Nachenberg et al. | Aug 2012 | B1 |
8260914 | Ranjan | Sep 2012 | B1 |
8266091 | Gubin et al. | Sep 2012 | B1 |
8271978 | Bennett et al. | Sep 2012 | B2 |
8286251 | Eker et al. | Oct 2012 | B2 |
8291499 | Aziz et al. | Oct 2012 | B2 |
8307435 | Mann et al. | Nov 2012 | B1 |
8307443 | Wang et al. | Nov 2012 | B2 |
8312545 | Tuvell et al. | Nov 2012 | B2 |
8321936 | Green et al. | Nov 2012 | B1 |
8321941 | Tuvell et al. | Nov 2012 | B2 |
8332571 | Edwards, Sr. | Dec 2012 | B1 |
8365286 | Poston | Jan 2013 | B2 |
8365297 | Parshin et al. | Jan 2013 | B1 |
8370938 | Daswani et al. | Feb 2013 | B1 |
8370939 | Zaitsev et al. | Feb 2013 | B2 |
8375444 | Aziz et al. | Feb 2013 | B2 |
8381299 | Stolfo et al. | Feb 2013 | B2 |
8387046 | Montague | Feb 2013 | B1 |
8402529 | Green et al. | Mar 2013 | B1 |
8464340 | Ahn et al. | Jun 2013 | B2 |
8479174 | Chiriac | Jul 2013 | B2 |
8479276 | Vaystikh | Jul 2013 | B1 |
8479286 | Dalcher et al. | Jul 2013 | B2 |
8479291 | Bodke | Jul 2013 | B1 |
8479292 | Li et al. | Jul 2013 | B1 |
8510827 | Leake et al. | Aug 2013 | B1 |
8510828 | Guo et al. | Aug 2013 | B1 |
8510842 | Amit et al. | Aug 2013 | B2 |
8516478 | Edwards et al. | Aug 2013 | B1 |
8516590 | Ranadive et al. | Aug 2013 | B1 |
8516593 | Aziz | Aug 2013 | B2 |
8522236 | Zimmer et al. | Aug 2013 | B2 |
8522348 | Chen et al. | Aug 2013 | B2 |
8528086 | Aziz | Sep 2013 | B1 |
8533824 | Hutton et al. | Sep 2013 | B2 |
8539582 | Aziz et al. | Sep 2013 | B1 |
8549638 | Aziz | Oct 2013 | B2 |
8555391 | Demir et al. | Oct 2013 | B1 |
8561177 | Aziz et al. | Oct 2013 | B1 |
8566476 | Shiffer et al. | Oct 2013 | B2 |
8566946 | Aziz et al. | Oct 2013 | B1 |
8584094 | Dadhia et al. | Nov 2013 | B2 |
8584234 | Sobel et al. | Nov 2013 | B1 |
8584239 | Aziz et al. | Nov 2013 | B2 |
8595834 | Xie et al. | Nov 2013 | B2 |
8627476 | Satish et al. | Jan 2014 | B1 |
8635696 | Aziz | Jan 2014 | B1 |
8656482 | Tosa | Feb 2014 | B1 |
8682054 | Xue et al. | Mar 2014 | B2 |
8682812 | Ranjan | Mar 2014 | B1 |
8689333 | Aziz | Apr 2014 | B2 |
8695096 | Zhang | Apr 2014 | B1 |
8713631 | Pavlyushchik | Apr 2014 | B1 |
8713681 | Silberman et al. | Apr 2014 | B2 |
8726392 | McCorkendale et al. | May 2014 | B1 |
8739280 | Chess et al. | May 2014 | B2 |
8775715 | Tsirkin et al. | Jul 2014 | B2 |
8776229 | Aziz | Jul 2014 | B1 |
8782792 | Bodke | Jul 2014 | B1 |
8789172 | Stolfo et al. | Jul 2014 | B2 |
8789178 | Kejriwal et al. | Jul 2014 | B2 |
8793278 | Frazier et al. | Jul 2014 | B2 |
8793787 | Ismael et al. | Jul 2014 | B2 |
8805947 | Kuzkin et al. | Aug 2014 | B1 |
8806647 | Daswani et al. | Aug 2014 | B1 |
8832352 | Tsirkin et al. | Sep 2014 | B2 |
8832829 | Manni et al. | Sep 2014 | B2 |
8839245 | Khajuria et al. | Sep 2014 | B1 |
8850570 | Ramzan | Sep 2014 | B1 |
8850571 | Staniford et al. | Sep 2014 | B2 |
8881234 | Narasimhan et al. | Nov 2014 | B2 |
8881271 | Butler, II | Nov 2014 | B2 |
8881282 | Aziz et al. | Nov 2014 | B1 |
8898788 | Aziz et al. | Nov 2014 | B1 |
8935779 | Manni et al. | Jan 2015 | B2 |
8949257 | Shiffer et al. | Feb 2015 | B2 |
8984638 | Aziz et al. | Mar 2015 | B1 |
8990939 | Staniford et al. | Mar 2015 | B2 |
8990944 | Singh et al. | Mar 2015 | B1 |
8997219 | Staniford et al. | Mar 2015 | B2 |
9003402 | Carbone et al. | Apr 2015 | B1 |
9009822 | Ismael et al. | Apr 2015 | B1 |
9009823 | Ismael et al. | Apr 2015 | B1 |
9027135 | Aziz | May 2015 | B1 |
9071638 | Aziz et al. | Jun 2015 | B1 |
9092625 | Kashyap | Jul 2015 | B1 |
9104867 | Thioux et al. | Aug 2015 | B1 |
9106630 | Frazier et al. | Aug 2015 | B2 |
9106694 | Aziz et al. | Aug 2015 | B2 |
9118715 | Staniford et al. | Aug 2015 | B2 |
9159035 | Ismael et al. | Oct 2015 | B1 |
9171160 | Vincent et al. | Oct 2015 | B2 |
9176843 | Ismael et al. | Nov 2015 | B1 |
9189264 | Steffen | Nov 2015 | B1 |
9189627 | Islam | Nov 2015 | B1 |
9195829 | Goradia et al. | Nov 2015 | B1 |
9197664 | Aziz et al. | Nov 2015 | B1 |
9223972 | Vincent et al. | Dec 2015 | B1 |
9225740 | Ismael et al. | Dec 2015 | B1 |
9241010 | Bennett et al. | Jan 2016 | B1 |
9251343 | Vincent et al. | Feb 2016 | B1 |
9262635 | Paithane et al. | Feb 2016 | B2 |
9268936 | Butler | Feb 2016 | B2 |
9275229 | LeMasters | Mar 2016 | B2 |
9282109 | Aziz et al. | Mar 2016 | B1 |
9292686 | Ismael et al. | Mar 2016 | B2 |
9294501 | Mesdaq et al. | Mar 2016 | B2 |
9300686 | Pidathala et al. | Mar 2016 | B2 |
9306960 | Aziz | Apr 2016 | B1 |
9306974 | Aziz et al. | Apr 2016 | B1 |
9311479 | Manni et al. | Apr 2016 | B1 |
9355247 | Thioux et al. | May 2016 | B1 |
9356944 | Aziz | May 2016 | B1 |
9363280 | Rivlin et al. | Jun 2016 | B1 |
9367681 | Ismael et al. | Jun 2016 | B1 |
9398028 | Karandikar et al. | Jul 2016 | B1 |
9413781 | Cunningham et al. | Aug 2016 | B2 |
9426071 | Caldejon et al. | Aug 2016 | B1 |
9430646 | Mushtaq et al. | Aug 2016 | B1 |
9432389 | Khalid et al. | Aug 2016 | B1 |
9436619 | Woolley | Sep 2016 | B2 |
9438613 | Paithane et al. | Sep 2016 | B1 |
9438622 | Staniford et al. | Sep 2016 | B1 |
9438623 | Thioux et al. | Sep 2016 | B1 |
9459901 | Jung et al. | Oct 2016 | B2 |
9459912 | Durniak | Oct 2016 | B1 |
9467460 | Otvagin et al. | Oct 2016 | B1 |
9483644 | Paithane et al. | Nov 2016 | B1 |
9495180 | Ismael | Nov 2016 | B2 |
9497213 | Thompson et al. | Nov 2016 | B2 |
9507935 | Ismael et al. | Nov 2016 | B2 |
9516057 | Aziz | Dec 2016 | B2 |
9519782 | Aziz et al. | Dec 2016 | B2 |
9536091 | Paithane et al. | Jan 2017 | B2 |
9537972 | Edwards et al. | Jan 2017 | B1 |
9560059 | Islam | Jan 2017 | B1 |
9565202 | Kindlund et al. | Feb 2017 | B1 |
9591015 | Amin et al. | Mar 2017 | B1 |
9591020 | Aziz | Mar 2017 | B1 |
9594904 | Jain et al. | Mar 2017 | B1 |
9594905 | Ismael et al. | Mar 2017 | B1 |
9594912 | Thioux et al. | Mar 2017 | B1 |
9609007 | Rivlin et al. | Mar 2017 | B1 |
9626509 | Khalid et al. | Apr 2017 | B1 |
9628498 | Aziz et al. | Apr 2017 | B1 |
9628507 | Haq et al. | Apr 2017 | B2 |
9633134 | Ross | Apr 2017 | B2 |
9635039 | Islam et al. | Apr 2017 | B1 |
9641546 | Manni et al. | May 2017 | B1 |
9654485 | Neumann | May 2017 | B1 |
9661009 | Karandikar et al. | May 2017 | B1 |
9661018 | Aziz | May 2017 | B1 |
9674298 | Edwards et al. | Jun 2017 | B1 |
9680862 | Ismael et al. | Jun 2017 | B2 |
9690606 | Ha et al. | Jun 2017 | B1 |
9690933 | Singh et al. | Jun 2017 | B1 |
9690935 | Shiffer et al. | Jun 2017 | B2 |
9690936 | Malik et al. | Jun 2017 | B1 |
9736179 | Ismael | Aug 2017 | B2 |
9740857 | Ismael et al. | Aug 2017 | B2 |
9747446 | Pidathala et al. | Aug 2017 | B1 |
9753754 | Howell | Sep 2017 | B2 |
9756074 | Aziz et al. | Sep 2017 | B2 |
9773112 | Rathor et al. | Sep 2017 | B1 |
9781144 | Otvagin et al. | Oct 2017 | B1 |
9787700 | Amin et al. | Oct 2017 | B1 |
9787706 | Otvagin et al. | Oct 2017 | B1 |
9792196 | Ismael et al. | Oct 2017 | B1 |
9824209 | Ismael et al. | Nov 2017 | B1 |
9824211 | Wilson | Nov 2017 | B2 |
9824216 | Khalid et al. | Nov 2017 | B1 |
9825976 | Gomez et al. | Nov 2017 | B1 |
9825989 | Mehra et al. | Nov 2017 | B1 |
9838408 | Karandikar et al. | Dec 2017 | B1 |
9838411 | Aziz | Dec 2017 | B1 |
9838416 | Aziz | Dec 2017 | B1 |
9838417 | Khalid et al. | Dec 2017 | B1 |
9846592 | Sarangdhar | Dec 2017 | B2 |
9846776 | Paithane et al. | Dec 2017 | B1 |
9876701 | Caldejon et al. | Jan 2018 | B1 |
9888016 | Amin et al. | Feb 2018 | B1 |
9888019 | Pidathala et al. | Feb 2018 | B1 |
9910988 | Vincent et al. | Mar 2018 | B1 |
9912644 | Cunningham | Mar 2018 | B2 |
9912681 | Ismael et al. | Mar 2018 | B1 |
9912684 | Aziz et al. | Mar 2018 | B1 |
9912691 | Mesdaq et al. | Mar 2018 | B2 |
9912698 | Thioux et al. | Mar 2018 | B1 |
9916440 | Paithane et al. | Mar 2018 | B1 |
9921978 | Chan et al. | Mar 2018 | B1 |
9934376 | Ismael | Apr 2018 | B1 |
9934381 | Kindlund et al. | Apr 2018 | B1 |
9946568 | Ismael et al. | Apr 2018 | B1 |
9954890 | Staniford et al. | Apr 2018 | B1 |
9973531 | Thioux | May 2018 | B1 |
10002252 | Ismael et al. | Jun 2018 | B2 |
10019338 | Goradia et al. | Jul 2018 | B1 |
10019573 | Silberman et al. | Jul 2018 | B2 |
10025691 | Ismael et al. | Jul 2018 | B1 |
10025927 | Khalid et al. | Jul 2018 | B1 |
10027689 | Rathor et al. | Jul 2018 | B1 |
10027690 | Aziz et al. | Jul 2018 | B2 |
10027696 | Rivlin et al. | Jul 2018 | B1 |
10033747 | Paithane et al. | Jul 2018 | B1 |
10033748 | Cunningham et al. | Jul 2018 | B1 |
10033753 | Islam et al. | Jul 2018 | B1 |
10033759 | Kabra et al. | Jul 2018 | B1 |
10050998 | Singh | Aug 2018 | B1 |
10068091 | Aziz et al. | Sep 2018 | B1 |
10075455 | Zafar et al. | Sep 2018 | B2 |
10083302 | Paithane et al. | Sep 2018 | B1 |
10084813 | Eyada | Sep 2018 | B2 |
10089461 | Ha et al. | Oct 2018 | B1 |
10097573 | Aziz | Oct 2018 | B1 |
10104102 | Neumann | Oct 2018 | B1 |
10108446 | Steinberg et al. | Oct 2018 | B1 |
10121000 | Rivlin et al. | Nov 2018 | B1 |
10122746 | Manni et al. | Nov 2018 | B1 |
10133863 | Bu et al. | Nov 2018 | B2 |
10133866 | Kumar et al. | Nov 2018 | B1 |
10146810 | Shiffer et al. | Dec 2018 | B2 |
10148693 | Singh et al. | Dec 2018 | B2 |
10165000 | Aziz et al. | Dec 2018 | B1 |
10169585 | Pilipenko et al. | Jan 2019 | B1 |
10176321 | Abbasi et al. | Jan 2019 | B2 |
10181029 | Ismael et al. | Jan 2019 | B1 |
10191861 | Steinberg et al. | Jan 2019 | B1 |
10192052 | Singh et al. | Jan 2019 | B1 |
10198574 | Thioux et al. | Feb 2019 | B1 |
10200384 | Mushtaq et al. | Feb 2019 | B1 |
10210329 | Malik et al. | Feb 2019 | B1 |
10216927 | Steinberg | Feb 2019 | B1 |
10218740 | Mesdaq et al. | Feb 2019 | B1 |
10242185 | Goradia | Mar 2019 | B1 |
20010005889 | Albrecht | Jun 2001 | A1 |
20010047326 | Broadbent et al. | Nov 2001 | A1 |
20020018903 | Kokubo et al. | Feb 2002 | A1 |
20020038430 | Edwards et al. | Mar 2002 | A1 |
20020078121 | Ballantyne | Jun 2002 | A1 |
20020091819 | Melchione et al. | Jul 2002 | A1 |
20020095607 | Lin-Hendel | Jul 2002 | A1 |
20020116627 | Tarbotton et al. | Aug 2002 | A1 |
20020144156 | Copeland | Oct 2002 | A1 |
20020162015 | Tang | Oct 2002 | A1 |
20020166063 | Lachman et al. | Nov 2002 | A1 |
20020169952 | DiSanto et al. | Nov 2002 | A1 |
20020184528 | Shevenell et al. | Dec 2002 | A1 |
20020188887 | Largman et al. | Dec 2002 | A1 |
20020194490 | Halperin et al. | Dec 2002 | A1 |
20030021728 | Sharpe et al. | Jan 2003 | A1 |
20030037089 | Cota-Robles | Feb 2003 | A1 |
20030074578 | Ford et al. | Apr 2003 | A1 |
20030084318 | Schertz | May 2003 | A1 |
20030101381 | Mateev et al. | May 2003 | A1 |
20030115483 | Liang | Jun 2003 | A1 |
20030120856 | Neiger et al. | Jun 2003 | A1 |
20030188190 | Aaron et al. | Oct 2003 | A1 |
20030191957 | Hypponen et al. | Oct 2003 | A1 |
20030200460 | Morota et al. | Oct 2003 | A1 |
20030212902 | van der Made | Nov 2003 | A1 |
20030229801 | Kouznetsov et al. | Dec 2003 | A1 |
20030237000 | Denton et al. | Dec 2003 | A1 |
20040003323 | Bennett et al. | Jan 2004 | A1 |
20040006473 | Mills et al. | Jan 2004 | A1 |
20040015712 | Szor | Jan 2004 | A1 |
20040019832 | Arnold et al. | Jan 2004 | A1 |
20040047356 | Bauer | Mar 2004 | A1 |
20040083408 | Spiegel et al. | Apr 2004 | A1 |
20040088581 | Brawn et al. | May 2004 | A1 |
20040093513 | Cantrell et al. | May 2004 | A1 |
20040111531 | Staniford et al. | Jun 2004 | A1 |
20040117478 | Triulzi et al. | Jun 2004 | A1 |
20040117624 | Brandt et al. | Jun 2004 | A1 |
20040128355 | Chao et al. | Jul 2004 | A1 |
20040165588 | Pandya | Aug 2004 | A1 |
20040236963 | Danford et al. | Nov 2004 | A1 |
20040243349 | Greifeneder et al. | Dec 2004 | A1 |
20040249911 | Alkhatib et al. | Dec 2004 | A1 |
20040255161 | Cavanaugh | Dec 2004 | A1 |
20040268147 | Wiederin et al. | Dec 2004 | A1 |
20040268347 | Knauerhase | Dec 2004 | A1 |
20050005159 | Oliphant | Jan 2005 | A1 |
20050021740 | Bar et al. | Jan 2005 | A1 |
20050033960 | Vialen et al. | Feb 2005 | A1 |
20050033989 | Poletto et al. | Feb 2005 | A1 |
20050050148 | Mohammadioun et al. | Mar 2005 | A1 |
20050086523 | Zimmer et al. | Apr 2005 | A1 |
20050091513 | Mitomo et al. | Apr 2005 | A1 |
20050091533 | Omote et al. | Apr 2005 | A1 |
20050091652 | Ross et al. | Apr 2005 | A1 |
20050108562 | Khazan et al. | May 2005 | A1 |
20050114663 | Cornell et al. | May 2005 | A1 |
20050125195 | Brendel | Jun 2005 | A1 |
20050149726 | Joshi et al. | Jul 2005 | A1 |
20050157662 | Bingham et al. | Jul 2005 | A1 |
20050183143 | Anderholm et al. | Aug 2005 | A1 |
20050201297 | Peikari | Sep 2005 | A1 |
20050210533 | Copeland et al. | Sep 2005 | A1 |
20050216759 | Rothman et al. | Sep 2005 | A1 |
20050216920 | Tewari | Sep 2005 | A1 |
20050238005 | Chen et al. | Oct 2005 | A1 |
20050240781 | Gassoway | Oct 2005 | A1 |
20050262562 | Gassoway | Nov 2005 | A1 |
20050265331 | Stolfo | Dec 2005 | A1 |
20050283839 | Cowburn | Dec 2005 | A1 |
20060010495 | Cohen et al. | Jan 2006 | A1 |
20060015416 | Hoffman et al. | Jan 2006 | A1 |
20060015715 | Anderson | Jan 2006 | A1 |
20060015747 | Van de Ven | Jan 2006 | A1 |
20060021029 | Brickell et al. | Jan 2006 | A1 |
20060021054 | Costa et al. | Jan 2006 | A1 |
20060031476 | Mathes et al. | Feb 2006 | A1 |
20060047665 | Neil | Mar 2006 | A1 |
20060070130 | Costea et al. | Mar 2006 | A1 |
20060075496 | Carpenter et al. | Apr 2006 | A1 |
20060095968 | Portolani et al. | May 2006 | A1 |
20060101516 | Sudaharan et al. | May 2006 | A1 |
20060101517 | Banzhof et al. | May 2006 | A1 |
20060117385 | Mester et al. | Jun 2006 | A1 |
20060123477 | Raghavan et al. | Jun 2006 | A1 |
20060130060 | Anderson | Jun 2006 | A1 |
20060143709 | Brooks et al. | Jun 2006 | A1 |
20060150249 | Gassen et al. | Jul 2006 | A1 |
20060161983 | Cothrell et al. | Jul 2006 | A1 |
20060161987 | Levy-Yurista | Jul 2006 | A1 |
20060161989 | Reshef et al. | Jul 2006 | A1 |
20060164199 | Glide et al. | Jul 2006 | A1 |
20060173992 | Weber et al. | Aug 2006 | A1 |
20060179147 | Tran et al. | Aug 2006 | A1 |
20060184632 | Marino et al. | Aug 2006 | A1 |
20060184713 | Hildner | Aug 2006 | A1 |
20060191010 | Benjamin | Aug 2006 | A1 |
20060221956 | Narayan et al. | Oct 2006 | A1 |
20060236393 | Kramer et al. | Oct 2006 | A1 |
20060242709 | Seinfeld et al. | Oct 2006 | A1 |
20060248519 | Jaeger et al. | Nov 2006 | A1 |
20060248528 | Oney et al. | Nov 2006 | A1 |
20060248582 | Panjwani et al. | Nov 2006 | A1 |
20060251104 | Koga | Nov 2006 | A1 |
20060288189 | Seth et al. | Dec 2006 | A1 |
20060288417 | Bookbinder et al. | Dec 2006 | A1 |
20070006227 | Kinney | Jan 2007 | A1 |
20070006288 | Mayfield et al. | Jan 2007 | A1 |
20070006313 | Porras et al. | Jan 2007 | A1 |
20070011174 | Takaragi et al. | Jan 2007 | A1 |
20070016951 | Piccard et al. | Jan 2007 | A1 |
20070019286 | Kikuchi | Jan 2007 | A1 |
20070033645 | Jones | Feb 2007 | A1 |
20070038943 | FitzGerald et al. | Feb 2007 | A1 |
20070064689 | Shin et al. | Mar 2007 | A1 |
20070074169 | Chess et al. | Mar 2007 | A1 |
20070094730 | Bhikkaji et al. | Apr 2007 | A1 |
20070101435 | Konanka et al. | May 2007 | A1 |
20070128855 | Cho et al. | Jun 2007 | A1 |
20070142030 | Sinha et al. | Jun 2007 | A1 |
20070143827 | Nicodemus et al. | Jun 2007 | A1 |
20070156895 | Vuong | Jul 2007 | A1 |
20070157180 | Tillmann et al. | Jul 2007 | A1 |
20070157306 | Elrod et al. | Jul 2007 | A1 |
20070168988 | Eisner et al. | Jul 2007 | A1 |
20070171824 | Ruello et al. | Jul 2007 | A1 |
20070174915 | Gribble et al. | Jul 2007 | A1 |
20070180454 | Fujimoto et al. | Aug 2007 | A1 |
20070192500 | Lum | Aug 2007 | A1 |
20070192858 | Lum | Aug 2007 | A1 |
20070198275 | Malden et al. | Aug 2007 | A1 |
20070208822 | Wang et al. | Sep 2007 | A1 |
20070220607 | Sprosts et al. | Sep 2007 | A1 |
20070240218 | Tuvell et al. | Oct 2007 | A1 |
20070240219 | Tuvell et al. | Oct 2007 | A1 |
20070240220 | Tuvell et al. | Oct 2007 | A1 |
20070240222 | Tuvell et al. | Oct 2007 | A1 |
20070250930 | Aziz et al. | Oct 2007 | A1 |
20070256132 | Oliphant | Nov 2007 | A2 |
20070271446 | Nakamura | Nov 2007 | A1 |
20070300227 | Mall et al. | Dec 2007 | A1 |
20080005782 | Aziz | Jan 2008 | A1 |
20080018122 | Zierler et al. | Jan 2008 | A1 |
20080028124 | Tago | Jan 2008 | A1 |
20080028463 | Dagon et al. | Jan 2008 | A1 |
20080040710 | Chiriac | Feb 2008 | A1 |
20080046781 | Childs et al. | Feb 2008 | A1 |
20080059556 | Greenspan et al. | Mar 2008 | A1 |
20080065854 | Schoenberg et al. | Mar 2008 | A1 |
20080066179 | Liu | Mar 2008 | A1 |
20080072326 | Danford et al. | Mar 2008 | A1 |
20080077793 | Tan et al. | Mar 2008 | A1 |
20080080518 | Hoeflin et al. | Apr 2008 | A1 |
20080086720 | Lekel | Apr 2008 | A1 |
20080098476 | Syversen | Apr 2008 | A1 |
20080120722 | Sima et al. | May 2008 | A1 |
20080134178 | Fitzgerald et al. | Jun 2008 | A1 |
20080134334 | Kim et al. | Jun 2008 | A1 |
20080141376 | Clausen et al. | Jun 2008 | A1 |
20080184367 | McMillan et al. | Jul 2008 | A1 |
20080184373 | Traut et al. | Jul 2008 | A1 |
20080189787 | Arnold et al. | Aug 2008 | A1 |
20080201778 | Guo et al. | Aug 2008 | A1 |
20080209557 | Herley et al. | Aug 2008 | A1 |
20080215742 | Goldszmidt et al. | Sep 2008 | A1 |
20080222729 | Chen et al. | Sep 2008 | A1 |
20080244206 | Heo et al. | Oct 2008 | A1 |
20080263665 | Ma et al. | Oct 2008 | A1 |
20080294808 | Mahalingam et al. | Nov 2008 | A1 |
20080295172 | Bohacek | Nov 2008 | A1 |
20080301810 | Lehane et al. | Dec 2008 | A1 |
20080307188 | Franaszek et al. | Dec 2008 | A1 |
20080307524 | Singh et al. | Dec 2008 | A1 |
20080313738 | Enderby | Dec 2008 | A1 |
20080320594 | Jiang | Dec 2008 | A1 |
20090003317 | Kasralikar et al. | Jan 2009 | A1 |
20090007100 | Field et al. | Jan 2009 | A1 |
20090013149 | Uhlig et al. | Jan 2009 | A1 |
20090013408 | Schipka | Jan 2009 | A1 |
20090031423 | Liu et al. | Jan 2009 | A1 |
20090036111 | Danford et al. | Feb 2009 | A1 |
20090037835 | Goldman | Feb 2009 | A1 |
20090044024 | Oberheide et al. | Feb 2009 | A1 |
20090044274 | Budko et al. | Feb 2009 | A1 |
20090064332 | Porras et al. | Mar 2009 | A1 |
20090077666 | Chen et al. | Mar 2009 | A1 |
20090083369 | Marmor | Mar 2009 | A1 |
20090083855 | Apap et al. | Mar 2009 | A1 |
20090089879 | Wang et al. | Apr 2009 | A1 |
20090094697 | Provos et al. | Apr 2009 | A1 |
20090106754 | Liu et al. | Apr 2009 | A1 |
20090113110 | Chen | Apr 2009 | A1 |
20090113425 | Ports et al. | Apr 2009 | A1 |
20090125976 | Wassermann et al. | May 2009 | A1 |
20090126015 | Monastyrsky et al. | May 2009 | A1 |
20090126016 | Sobko et al. | May 2009 | A1 |
20090133125 | Choi et al. | May 2009 | A1 |
20090144510 | Wibling | Jun 2009 | A1 |
20090144823 | Lamastra et al. | Jun 2009 | A1 |
20090158430 | Borders | Jun 2009 | A1 |
20090172661 | Zimmer et al. | Jul 2009 | A1 |
20090172815 | Gu et al. | Jul 2009 | A1 |
20090187992 | Poston | Jul 2009 | A1 |
20090193293 | Stolfo et al. | Jul 2009 | A1 |
20090198651 | Shiffer et al. | Aug 2009 | A1 |
20090198670 | Shiffer et al. | Aug 2009 | A1 |
20090198689 | Frazier et al. | Aug 2009 | A1 |
20090199274 | Frazier et al. | Aug 2009 | A1 |
20090199296 | Xie et al. | Aug 2009 | A1 |
20090228233 | Anderson et al. | Sep 2009 | A1 |
20090241187 | Troyansky | Sep 2009 | A1 |
20090241190 | Todd et al. | Sep 2009 | A1 |
20090265692 | Godefroid et al. | Oct 2009 | A1 |
20090271867 | Zhang | Oct 2009 | A1 |
20090300415 | Zhang et al. | Dec 2009 | A1 |
20090300761 | Park et al. | Dec 2009 | A1 |
20090307689 | Sudhakar | Dec 2009 | A1 |
20090328185 | Berg et al. | Dec 2009 | A1 |
20090328221 | Blumfield et al. | Dec 2009 | A1 |
20100005146 | Drako et al. | Jan 2010 | A1 |
20100011205 | McKenna | Jan 2010 | A1 |
20100017546 | Poo et al. | Jan 2010 | A1 |
20100023810 | Stolfo et al. | Jan 2010 | A1 |
20100030996 | Butler, II | Feb 2010 | A1 |
20100031353 | Thomas et al. | Feb 2010 | A1 |
20100031360 | Seshadri | Feb 2010 | A1 |
20100037314 | Perdisci et al. | Feb 2010 | A1 |
20100043073 | Kuwamura | Feb 2010 | A1 |
20100054278 | Stolfo et al. | Mar 2010 | A1 |
20100058474 | Hicks | Mar 2010 | A1 |
20100064044 | Nonoyama | Mar 2010 | A1 |
20100077481 | Polyakov et al. | Mar 2010 | A1 |
20100083376 | Pereira et al. | Apr 2010 | A1 |
20100115621 | Staniford et al. | May 2010 | A1 |
20100132038 | Zaitsev | May 2010 | A1 |
20100154056 | Smith et al. | Jun 2010 | A1 |
20100180344 | Malyshev et al. | Jul 2010 | A1 |
20100192223 | Ismael et al. | Jul 2010 | A1 |
20100220863 | Dupaquis et al. | Sep 2010 | A1 |
20100229173 | Subrahmanyam | Sep 2010 | A1 |
20100235831 | Dittmer | Sep 2010 | A1 |
20100251104 | Massand | Sep 2010 | A1 |
20100254622 | Kamay et al. | Oct 2010 | A1 |
20100281102 | Chinta et al. | Nov 2010 | A1 |
20100281541 | Stolfo et al. | Nov 2010 | A1 |
20100281542 | Stolfo et al. | Nov 2010 | A1 |
20100287260 | Peterson et al. | Nov 2010 | A1 |
20100299665 | Adams | Nov 2010 | A1 |
20100299754 | Amit et al. | Nov 2010 | A1 |
20100306173 | Frank | Dec 2010 | A1 |
20110004737 | Greenebaum | Jan 2011 | A1 |
20110004935 | Moffie et al. | Jan 2011 | A1 |
20110025504 | Lyon et al. | Feb 2011 | A1 |
20110041179 | St Hlberg | Feb 2011 | A1 |
20110047542 | Dang et al. | Feb 2011 | A1 |
20110047544 | Yehuda et al. | Feb 2011 | A1 |
20110047594 | Mahaffey et al. | Feb 2011 | A1 |
20110047620 | Mahaffey et al. | Feb 2011 | A1 |
20110055907 | Narasimhan et al. | Mar 2011 | A1 |
20110078794 | Manni et al. | Mar 2011 | A1 |
20110093951 | Aziz | Apr 2011 | A1 |
20110099620 | Stavrou et al. | Apr 2011 | A1 |
20110099633 | Aziz | Apr 2011 | A1 |
20110099635 | Silberman et al. | Apr 2011 | A1 |
20110113231 | Kaminsky | May 2011 | A1 |
20110145918 | Jung et al. | Jun 2011 | A1 |
20110145920 | Mahaffey et al. | Jun 2011 | A1 |
20110145934 | Abramovici et al. | Jun 2011 | A1 |
20110153909 | Dong | Jun 2011 | A1 |
20110161955 | Woller | Jun 2011 | A1 |
20110167422 | Eom et al. | Jul 2011 | A1 |
20110167493 | Song et al. | Jul 2011 | A1 |
20110167494 | Bowen et al. | Jul 2011 | A1 |
20110173213 | Frazier et al. | Jul 2011 | A1 |
20110173460 | Ito et al. | Jul 2011 | A1 |
20110179417 | Inakoshi | Jul 2011 | A1 |
20110197003 | Serebrin | Aug 2011 | A1 |
20110219449 | St. Neitzel et al. | Sep 2011 | A1 |
20110219450 | McDougal et al. | Sep 2011 | A1 |
20110225624 | Sawhney et al. | Sep 2011 | A1 |
20110225655 | Niemela et al. | Sep 2011 | A1 |
20110247072 | Staniford et al. | Oct 2011 | A1 |
20110265182 | Peinado et al. | Oct 2011 | A1 |
20110289582 | Kejriwal et al. | Nov 2011 | A1 |
20110296412 | Banga et al. | Dec 2011 | A1 |
20110302587 | Nishikawa et al. | Dec 2011 | A1 |
20110307954 | Melnik et al. | Dec 2011 | A1 |
20110307955 | Kaplan et al. | Dec 2011 | A1 |
20110307956 | Yermakov et al. | Dec 2011 | A1 |
20110314546 | Aziz et al. | Dec 2011 | A1 |
20110320556 | Reuther | Dec 2011 | A1 |
20110320682 | McDougall et al. | Dec 2011 | A1 |
20120023593 | Puder et al. | Jan 2012 | A1 |
20120047580 | Smith et al. | Feb 2012 | A1 |
20120054869 | Yen et al. | Mar 2012 | A1 |
20120066698 | Yanoo | Mar 2012 | A1 |
20120079596 | Thomas et al. | Mar 2012 | A1 |
20120084517 | Post | Apr 2012 | A1 |
20120084859 | Radinsky et al. | Apr 2012 | A1 |
20120093160 | Tonsing | Apr 2012 | A1 |
20120096553 | Srivastava et al. | Apr 2012 | A1 |
20120110667 | Zubrilin et al. | May 2012 | A1 |
20120117652 | Manni et al. | May 2012 | A1 |
20120121154 | Xue et al. | May 2012 | A1 |
20120124426 | Maybee et al. | May 2012 | A1 |
20120144156 | Matsuda | Jun 2012 | A1 |
20120159478 | Spradlin | Jun 2012 | A1 |
20120174186 | Aziz et al. | Jul 2012 | A1 |
20120174196 | Bhogavilli et al. | Jul 2012 | A1 |
20120174218 | McCoy et al. | Jul 2012 | A1 |
20120198279 | Schroeder | Aug 2012 | A1 |
20120210423 | Friedrichs et al. | Aug 2012 | A1 |
20120222121 | Staniford et al. | Aug 2012 | A1 |
20120254995 | Sallam | Oct 2012 | A1 |
20120255002 | Sallam | Oct 2012 | A1 |
20120255015 | Sahita et al. | Oct 2012 | A1 |
20120255016 | Sallam | Oct 2012 | A1 |
20120255017 | Sallam | Oct 2012 | A1 |
20120255021 | Sallam | Oct 2012 | A1 |
20120260342 | Dube et al. | Oct 2012 | A1 |
20120266244 | Green et al. | Oct 2012 | A1 |
20120272241 | Nonaka | Oct 2012 | A1 |
20120278886 | Luna | Nov 2012 | A1 |
20120297489 | Dequevy | Nov 2012 | A1 |
20120311708 | Agarwal et al. | Dec 2012 | A1 |
20120330801 | McDougal et al. | Dec 2012 | A1 |
20120331553 | Aziz et al. | Dec 2012 | A1 |
20130014259 | Gribble et al. | Jan 2013 | A1 |
20130031374 | Thom et al. | Jan 2013 | A1 |
20130036472 | Aziz | Feb 2013 | A1 |
20130047257 | Aziz | Feb 2013 | A1 |
20130055256 | Banga et al. | Feb 2013 | A1 |
20130074185 | McDougal et al. | Mar 2013 | A1 |
20130086684 | Mohler | Apr 2013 | A1 |
20130097699 | Balupari et al. | Apr 2013 | A1 |
20130097706 | Titonis et al. | Apr 2013 | A1 |
20130111587 | Goel et al. | May 2013 | A1 |
20130117852 | Stute | May 2013 | A1 |
20130117855 | Kim et al. | May 2013 | A1 |
20130125115 | Tsirkin | May 2013 | A1 |
20130139264 | Brinkley et al. | May 2013 | A1 |
20130145055 | Kegel et al. | Jun 2013 | A1 |
20130145471 | Richard et al. | Jun 2013 | A1 |
20130160125 | Likhachev et al. | Jun 2013 | A1 |
20130160127 | Jeong et al. | Jun 2013 | A1 |
20130160130 | Mendelev et al. | Jun 2013 | A1 |
20130160131 | Madou et al. | Jun 2013 | A1 |
20130167236 | Sick | Jun 2013 | A1 |
20130191924 | Tedesco et al. | Jun 2013 | A1 |
20130174147 | Sahita | Jul 2013 | A1 |
20130174214 | Duncan | Jul 2013 | A1 |
20130185789 | Hagiwara et al. | Jul 2013 | A1 |
20130185795 | Winn et al. | Jul 2013 | A1 |
20130185798 | Saunders et al. | Jul 2013 | A1 |
20130191824 | Muff et al. | Jul 2013 | A1 |
20130191915 | Antonakakis et al. | Jul 2013 | A1 |
20130196649 | Paddon et al. | Aug 2013 | A1 |
20130227680 | Pavlyushchik | Aug 2013 | A1 |
20130227691 | Aziz et al. | Aug 2013 | A1 |
20130246370 | Bartram et al. | Sep 2013 | A1 |
20130247186 | LeMasters | Sep 2013 | A1 |
20130263260 | Mahaffey et al. | Oct 2013 | A1 |
20130282776 | Durrant et al. | Oct 2013 | A1 |
20130283370 | Vipat | Oct 2013 | A1 |
20130291109 | Staniford et al. | Oct 2013 | A1 |
20130298243 | Kumar et al. | Nov 2013 | A1 |
20130305006 | Altman et al. | Nov 2013 | A1 |
20130312099 | Edwards | Nov 2013 | A1 |
20130318038 | Shiffer et al. | Nov 2013 | A1 |
20130318073 | Shiffer et al. | Nov 2013 | A1 |
20130325791 | Shiffer et al. | Dec 2013 | A1 |
20130325792 | Shiffer et al. | Dec 2013 | A1 |
20130325871 | Shiffer et al. | Dec 2013 | A1 |
20130325872 | Shiffer et al. | Dec 2013 | A1 |
20130332926 | Jakoljevic | Dec 2013 | A1 |
20130333033 | Khesin | Dec 2013 | A1 |
20130346966 | Natu et al. | Dec 2013 | A1 |
20130347131 | Mooring et al. | Dec 2013 | A1 |
20140032875 | Butler | Jan 2014 | A1 |
20140053260 | Gupta et al. | Feb 2014 | A1 |
20140053261 | Gupta et al. | Feb 2014 | A1 |
20140115652 | Kapoor | Apr 2014 | A1 |
20140130158 | Wang et al. | May 2014 | A1 |
20140137180 | Lukacs | May 2014 | A1 |
20140169762 | Ryu | Jun 2014 | A1 |
20140179360 | Jackson et al. | Jun 2014 | A1 |
20140181131 | Ross | Jun 2014 | A1 |
20140189185 | Yamashita | Jul 2014 | A1 |
20140189687 | Jung et al. | Jul 2014 | A1 |
20140189866 | Shiffer et al. | Jul 2014 | A1 |
20140189882 | Jung et al. | Jul 2014 | A1 |
20140237600 | Silberman et al. | Aug 2014 | A1 |
20140280245 | Wilson | Sep 2014 | A1 |
20140281560 | Ignatchenko | Sep 2014 | A1 |
20140283037 | Sikorski et al. | Sep 2014 | A1 |
20140283063 | Thompson et al. | Sep 2014 | A1 |
20140328204 | Klotsche et al. | Nov 2014 | A1 |
20140337836 | Ismael | Nov 2014 | A1 |
20140344926 | Cunningham et al. | Nov 2014 | A1 |
20140351810 | Pratt | Nov 2014 | A1 |
20140351935 | Shao et al. | Nov 2014 | A1 |
20140373012 | Ylitalo | Dec 2014 | A1 |
20140380009 | Lemay et al. | Dec 2014 | A1 |
20140380308 | Hassine | Dec 2014 | A1 |
20140380473 | Bu et al. | Dec 2014 | A1 |
20140380474 | Paithane et al. | Dec 2014 | A1 |
20150007312 | Pidathala et al. | Jan 2015 | A1 |
20150085665 | Kompella | Mar 2015 | A1 |
20150096022 | Vincent et al. | Apr 2015 | A1 |
20150096023 | Mesdaq et al. | Apr 2015 | A1 |
20150096024 | Haq et al. | Apr 2015 | A1 |
20150096025 | Ismael | Apr 2015 | A1 |
20150178110 | Li et al. | Jun 2015 | A1 |
20150180886 | Staniford et al. | Jun 2015 | A1 |
20150186645 | Aziz et al. | Jul 2015 | A1 |
20150199513 | Ismael et al. | Jul 2015 | A1 |
20150199514 | Tosa | Jul 2015 | A1 |
20150199531 | Ismael et al. | Jul 2015 | A1 |
20150199532 | Ismael | Jul 2015 | A1 |
20150220735 | Paithane et al. | Aug 2015 | A1 |
20150242227 | Nair | Aug 2015 | A1 |
20150269004 | Gainey, Jr. et al. | Sep 2015 | A1 |
20150293776 | Persson | Oct 2015 | A1 |
20150336005 | Melnick et al. | Nov 2015 | A1 |
20150355919 | Gatherer | Dec 2015 | A1 |
20150372980 | Eyada | Dec 2015 | A1 |
20160004869 | Ismael et al. | Jan 2016 | A1 |
20160006756 | Ismael et al. | Jan 2016 | A1 |
20160044000 | Cunningham | Feb 2016 | A1 |
20160048464 | Nakajima | Feb 2016 | A1 |
20160055017 | Beveridge et al. | Feb 2016 | A1 |
20160110291 | Gordon et al. | Apr 2016 | A1 |
20160117190 | Sankaran | Apr 2016 | A1 |
20160117498 | Saxena et al. | Apr 2016 | A1 |
20160127393 | Aziz et al. | May 2016 | A1 |
20160132349 | Bacher | May 2016 | A1 |
20160132351 | Kashyap et al. | May 2016 | A1 |
20160147993 | Xu et al. | May 2016 | A1 |
20160191547 | Zafar et al. | Jun 2016 | A1 |
20160191550 | Ismael et al. | Jun 2016 | A1 |
20160246730 | Gandhi et al. | Aug 2016 | A1 |
20160248818 | Fries | Aug 2016 | A1 |
20160261612 | Mesdaq et al. | Sep 2016 | A1 |
20160285914 | Singh et al. | Sep 2016 | A1 |
20160299851 | Mattson, Jr. et al. | Oct 2016 | A1 |
20160301703 | Aziz | Oct 2016 | A1 |
20160306749 | Tsirkin et al. | Oct 2016 | A1 |
20160335110 | Paithane et al. | Nov 2016 | A1 |
20160337437 | Gartsbein et al. | Nov 2016 | A1 |
20160366130 | Jung | Dec 2016 | A1 |
20170083703 | Abbasi et al. | Mar 2017 | A1 |
20170262306 | Wang et al. | Sep 2017 | A1 |
20180013770 | Ismael | Jan 2018 | A1 |
20180048660 | Paithane et al. | Feb 2018 | A1 |
20180121316 | Ismael et al. | May 2018 | A1 |
20180276038 | Malik | Sep 2018 | A1 |
20180288077 | Siddiqui et al. | Oct 2018 | A1 |
20180357093 | Cong | Dec 2018 | A1 |
Number | Date | Country |
---|---|---|
2439806 | Jan 2008 | GB |
2490431 | Oct 2012 | GB |
101678607 | Nov 2016 | KR |
02006928 | Jan 2002 | WO |
0223805 | Mar 2002 | WO |
2007117636 | Oct 2007 | WO |
2008041950 | Apr 2008 | WO |
2011084431 | Jul 2011 | WO |
2011112348 | Sep 2011 | WO |
2012075336 | Jun 2012 | WO |
2012145066 | Oct 2012 | WO |
WO2012135192 | Oct 2012 | WO |
WO2012154664 | Nov 2012 | WO |
WO-2012177464 | Dec 2012 | WO |
2013067505 | May 2013 | WO |
WO-2013091221 | Jun 2013 | WO |
WO-2014004747 | Jan 2014 | WO |
Entry |
---|
Riley et al, Guest-Transparent Prevention of Kernel Rootkits with VMM-Based Memory Shadowing. In: Lippmann R., Kirda E., Trachtenberg A. (eds) Recent Advances in Intrusion Detection. RAID 2008. Lecture Notes in Computer Science, vol. 5230. Springer, Berlin, Heidelberg (Year: 2008). |
Zhang et al, “Performance analysis towards a KVM-Based embedded real-time virtualization architecture,” 5th International Conference on Computer Sciences and Convergence Information Technology, Seoul, 2010, pp. 421-426. (Year: 2010). |
Hoffman et al, ensuring operating system kernel integrity, ASPLOS' 11, ACM, pp. 279-290 (Year: 2011). |
Amiri Sani, Ardalan, et al. “I/O paravirtualization at the device file boundary.” ACM SIGPLAN Notices 49.4 (2014), pp. 319-332. |
“Bromium vSentry—Defeat the Unknown Attack,” Oct. 10, 2013, 11 pages. |
Bromium Corp, “Bromium vSentry, Defeat of the Unknown Attack,” downloaded from bromium.com/sites/default/files/Bromium-Whitepaper-vSentry_2.pdf on Dec. 1, 2013. |
Bromium Corp, “Live Attack Visualization and Analysis, What does a Malware attack look like?” bromium.com/sites/default/files/Bromium%20LAVA%20WP_2.pdf on Dec. 1, 2013. |
Chen, Peter M., and Brian D. Noble. “When virtual is better than real [operating system relocation to virtual machines].” Hot Topics in Operating Systems, 2001. Proceedings of the Eighth Workshop on. IEEE, 2001. |
Gao, Debin, Michael K. Reiter, and Dawn Xiaodong Song. “On Gray-Box Program Tracking for Anomaly Detection.” USENIX security symposium. 2004. |
Garfinkel, Tal, and Mendel Rosenblum. “A Virtual Machine Introspection Based Architecture for Intrusion Detection.” NDSS. 2003. |
Gerzon, Gideon—“Intel® Virtualization Technology Processor Virtualization Extensions and Intel® Trusted execution Technology.” (2007), 53 pages. |
Heiser, Gernot, and Ben Leslie. “The OKL4 Microvisor: Convergence point of microkernels and hypervisors.” Proceedings of the first ACM asia-pacific workshop on Workshop on systems. ACM, 2010. |
Hofmeyr, Steven A., Stephanie Forrest, and Anil Somayaji. “Intrusion detection using sequences of system calls.” Journal of computer security 6.3 (1998): 151-180. |
Huang, Yih, et al. “Efficiently tracking application interactions using lightweight virtualization.” Proceedings of the 1st ACM workshop on Virtual machine security. ACM, 2008. |
Intel—“Intel 64 and IA-32 Architectures Software Developer's Manual, vol. 3B: System Programming Guide.” Part 2, 2011, (Section 2.83, pp. 51-59), 1026 pages. |
Iqbal, Asif, Nayeema Sadeque, and Rafika Ida Mutia. “An overview of microkernel, hypervisor and microvisor virtualization approaches for embedded systems.” Report, Department of Electrical and Information Technology, Lund University, Sweden 2110 (2009), 15 Pages. |
Iqbal, et al.,—“An Overview of Microkernel, Hypervisor and Microvisor Virtualization Approaches for Embedded Systems,” Department of Electrical and Information Technology, Lund University, Sweden, Aug. 26, 2013, 15 pages. |
Jiang, Xuxian, Xinyuan Wang, and Dongyan Xu. “Stealthy malware detection through vmm-based out-of-the-box semantic view reconstruction.” Proceedings of the 14th ACM conference on Computer and communications security. ACM, 2007. |
Jones, Stephen T., Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau. “Antfarm: Tracking Processes in a Virtual Machine Environment.” USENIX Annual Technical Conference, General Track. 2006. |
Kapravelos, Alexandros, et al. “Revolver: An Automated Approach to the Detection of Evasive Web-based Malware.” USENIX Security Symposium. 2013. |
King, Samuel T., and Peter M. Chen. “SubVirt: Implementing malware with virtual machines.” Security and Privacy, 2006 IEEE Symposium on. IEEE, 2006, 14 Pages. |
Kivity et al. “kvm: the Linux virtual machine monitor.” Proceedings of the Linux symposium. vol. 1. 2007, 8 pages. |
Kosoresow, Andrew P., and Steven A. Hofmeyr. “Intrusion detection via system call traces.” IEEE software 14.5 (1997): 35-42. |
Laureano, Marcos, Carlos Maziero, and Edgard Jamhour. “Intrusion detection in virtual machine environments.” Euromicro Conference, 2004. Proceedings. 30th. IEEE, 2004. |
Levin, Thomas E., Cynthia E. Irvine, and Thuy D. Nguyen. Least privilege in separation kernels. Naval Postgraduate School Monterey CA Dept of Computer Science, 2006. |
Nguyen, Anh M., et al. “Mavmm: Lightweight and purpose built vmm for malware analysis.” Computer Security Applications Conference, 2009. ACSAC'09, Annual. IEEE, 2009. |
Shah et al “Hardware-assisted Virtualization,” 15-612 Operating System Practicum Carnegie Mellon University, Sep. 8, 2013, 28 pages. |
Steinberg, Udo, and Bernhard Kauer. “NOVA: a microhypervisor-based secure virtualization architecture.” Proceedings of the 5th European conference on Computer systems. ACM, 2010, 14 Pages. |
Stumpf, Frederic, et al. “An approach to a trustworthy system architecture using virtualization.” Autonomic and trusted computing. Springer Berlin Heidelberg, 2007. 191-202. |
Sun, Kun, et al. “SecureSwitch: BIOS-Assisted Isolation and Switch between Trusted and Untrusted Commodity OSes.” George Mason Feb. 26, 2013, 15 pages. |
Wafaa, Andrew—“Introducing the 64-bit ARMv8 Architecture” Open Source Arm Ltd. EuroBSDCon conference, Malta, Sep. 28-29, 2013, 20 pages. |
Wojtczuk, Rafal. “Subverting the Xen hypervisor.” Black Hat USA 2008 (2008), pages. |
Yan, Lok Kwong, et al. “Transparent and Extensible Malware Analysis by Combining Hardware Virtualization and Software Emulation.” Internet Society, 2010. Downloaded from internetsociety.org/sites/default/files/05_1.pdf, 1 page. |
“Mining Specification of Malicious Behavior”—Jha et al, UCSB, Sep. 2007 cs.ucsb.edu/.about.chris/research/doc/esec07.sub.--mining.pdf-. |
“Network Security: NetDetector—Network Intrusion Forensic System (NIFS) Whitepaper”, (“NetDetector Whitepaper”), (2003). |
“When Virtual is Better Than Real”, IEEEXplore Digital Library, available at, ieeexplore.ieee.org/xpl/articleDetails.isp?reload=true&arnumbe- r=990073, (Dec. 7, 2013). |
Abdullah, et al., Visualizing Network Data for Intrusion Detection, 2005 IEEE Workshop on Information Assurance and Security, pp. 100-108. |
Adetoye, Adedayo , et al., “Network Intrusion Detection & Response System”, (“Adetoye”), (Sep. 2003). |
Apostolopoulos, George; hassapis, Constantinos; “V-eM: A cluster of Virtual Machines for Robust, Detailed, and High-Performance Network Emulation”, 14th IEEE International Symposium on Modeling, Analysis, and Simulation of Computer and Telecommunication Systems, Sep. 11-14, 2006, pp. 117-126. |
Aura, Tuomas, “Scanning electronic documents for personally identifiable information”, Proceedings of the 5th ACM workshop on Privacy in electronic society. ACM, 2006. |
Baecher, “The Nepenthes Platform: An Efficient Approach to collect Malware”, Springer-verlag Berlin Heidelberg, (2006), pp. 165-184. |
Bayer, et al., “Dynamic Analysis of Malicious Code”, J Comput Virol, Springer-Verlag, France., (2006), pp. 67-77. |
Boubalos, Chris , “extracting syslog data out of raw pcap dumps, seclists.org, Honeypots mailing list archives”, available at seclists.org/honeypots/2003/q2/319 (“Boubalos”), (Jun. 5, 2003). |
Chaudet, C. , et al., “Optimal Positioning of Active and Passive Monitoring Devices”, International Conference on Emerging Networking Experiments and Technologies, Proceedings of the 2005 ACM Conference on Emerging Network Experiment and Technology, CoNEXT '05, Toulousse, France, (Oct. 2005), pp. 71-82. |
Chen, P. M. and Noble, B. D., “When Virtual is Better Than Real, Department of Electrical Engineering and Computer Science”, University of Michigan (“Chen”) (2001). |
Cisco “Intrusion Prevention for the Cisco ASA 5500-x Series” Data Sheet (2012). |
Cohen, M.I. , “PyFlag—An advanced network forensic framework”, Digital investigation 5, Elsevier, (2008), pp. S112-S120. |
Costa, M. , et al., “Vigilante: End-to-End Containment of Internet Worms”, SOSP '05, Association for Computing Machinery, Inc., Brighton U.K., (Oct. 23-26, 2005). |
Didier Stevens, “Malicious PDF Documents Explained”, Security & Privacy, IEEE, IEEE Service Center, Los Alamitos, CA, US, vol. 9, No. 1, Jan. 1, 2011, pp. 80-82, XP011329453, ISSN: 1540-7993, DOI: 10.1109/MSP.2011.14. |
Distler, “Malware Analysis: An Introduction”, SANS Institute InfoSec Reading Room, SANS Institute, (2007). |
Dunlap, George W. , et al., “ReVirt: Enabling Intrusion Analysis through Virtual-Machine Logging and Replay”, Proceeding of the 5th Symposium on Operating Systems Design and Implementation, USENIX Association, (“Dunlap”), (Dec. 9, 2002). |
FireEye Malware Analysis & Exchange Network, Malware Protection System, FireEye Inc., 2010. |
FireEye Malware Analysis, Modern Malware Forensics, FireEye Inc., 2010. |
FireEye v.6.0 Security Target, pp. 1-35, Version 1.1, FireEye Inc., May 2011. |
Goel, et al., Reconstructing System State for Intrusion Analysis, Apr. 2008 SIGOPS Operating Systems Review, vol. 42 Issue 3, pp. 21-28. |
Gregg Keizer: “Microsoft's HoneyMonkeys Show Patching Windows Works”, Aug. 8, 2005, XP055143386, Retrieved from the Internet: informationweek.com/microsofts-honeymonkeys-show-patching-windows-works/d/d-id/1035069? [retrieved on Jun. 1, 2016]. |
Heng Yin et al, Panorama: Capturing System-Wide Information Flow for Malware Detection and Analysis, Research Showcase © CMU, Carnegie Mellon University, 2007. |
Hewlett Packard et al, “Advanced Configuration and Power Interface Specification,” pp. 31-54, and 607-624, Nov. 13, 2013. |
Hiroshi Shinotsuka, Malware Authors Using New Techniques to Evade Automated Threat Analysis Systems, Oct. 26, 2012, symantec.com/connect/blogs/, pp. 1-4. |
Idika et al., A-Survey-of-Malware-Detection-Techniques, Feb. 2, 2007, Department of Computer Science, Purdue University. |
Isohara, Takamasa, Keisuke Takemori, and Ayumu Kubota. “Kernel-based behavior analysis for android malware detection.” Computational intelligence and Security (CIS), 2011 Seventh International Conference on. IEEE, 2011. |
Kaeo, Merike , “Designing Network Security”, (“Kaeo”), (Nov. 2003). |
Kevin A Roundy et al: “Hybrid Analysis and Control of Malware”, Sep. 15, 2010, Recent Advances in Intrusion Detection, Springer Berlin Heidelberg, Berlin, Heidelberg, pp. 317-338, XP019150454 ISBN:978-3-642-15511-6. |
Khaled Salah et al: “Using Cloud Computing to Implement a Security Overlay Network”, Security & Privacy, IEEE, IEEE Service Center, Los Alamitos, CA, US, vol. 11, No. 1, Jan. 1, 2013 (Jan. 1, 2013). |
Kim, H. et al., “Autograph: Toward Automated, Distributed Worm Signature Detection”, Proceedings of the 13th Usenix Security Symposium (Security 2004), San Diego, (Aug. 2004), pp. 271-286. |
King, Samuel T., et al., “Operating System Support for Virtual Machines”, (“King”), (2003). |
Kreibich, C. , et al., “Honeycomb-Creating Intrusion Detection Signatures Using Honeypots”, 2nd Workshop on Hot Topics in Networks (HotNets-11), Boston, USA, (2003). |
Kristoff, J. , “Botnets, Detection and Mitigation: DNS-Based Techniques”, NU Security Day, (2005), 23 pages. |
Lastline Labs, The Threat of Evasive Malware, Feb. 25, 2013, Lastline Labs, pp. 1-8. |
Li et al., A VMM-Based System Call Interposition Framework for Program Monitoring, Dec. 2010, IEEE 16th International Conference on Parallel and Distributed Systems, pp. 706-711. |
Lindorfer, Martina, Clemens Kolbitsch, and Paolo Milani Comparetti. “Detecting environment-sensitive malware.” Recent Advances in Intrusion Detection. Springer Berlin Heidelberg, 2011. |
Marchette, David J., “Computer Intrusion Detection and Network Monitoring: A Statistical Viewpoint”, (“Marchette”), (2001). |
Moore, D. , et al., “Internet Quarantine: Requirements for Containing Self-Propagating Code”, INFOCOM, vol. 3, (Mar. 30-Apr. 3, 2003), pp. 1901-1910. |
Morales, Jose A., et al., ““Analyzing and exploiting network behaviors of malware.””, Security and Privacy in Communication Networks. Springer Berlin Heidelberg, 2010. 20-34. |
Mori, Detecting Unknown Computer Viruses, 2004, Springer-Verlag Berlin Heidelberg. |
Natvig, Kurt , “SANDBOXII: Internet”, Virus Bulletin Conference, (“Natvig”), (Sep. 2002). |
NetBIOS Working Group. Protocol Standard for a NetBIOS Service on a TCP/UDP transport: Concepts and Methods. STD 19, RFC 1001, Mar. 1987. |
Newsome, J. , et al., “Dynamic Taint Analysis for Automatic Detection, Analysis, and Signature Generation of Exploits on Commodity Software”, In Proceedings of the 12th Annual Network and Distributed System Security, Symposium (NDSS '05), (Feb. 2005). |
Nojiri, D. , et al., “Cooperation Response Strategies for Large Scale Attack Mitigation”, DARPA Information Survivability Conference and Exposition, vol. 1, (Apr. 22-24, 2003), pp. 293-302. |
Oberheide et al., CloudAV.sub.—N-Version Antivirus in the Network Cloud, 17th USENIX Security Symposium USENIX Security '08 Jul. 28-Aug. 1, 2008 San Jose, CA. |
PCT Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration, International Searching Authority, International Application No. PCT/US2014/071847, dated Mar. 26, 2015, 16 pages. |
PCT Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration, International Searching Authority, International Application No. PCT/US2014/071879, dated Apr. 28, 2015, 12 pages. |
PCT Notification of Transmittal of the International Search Report and the Written Opinion of the International Searching Authority, or the Declaration, International Searching Authority, International Application No. PCT/US2014/071923, dated Mar. 26, 2015, 13 pages. |
Reiner Sailer, Enriquillo Valdez, Trent Jaeger, Roonald Perez, Leendert van Doom, John Linwood Griffin, Stefan Berger., sHype: Secure Hypervisor Appraoch to Trusted Virtualized Systems (Feb. 2, 2005) (“Sailer”). |
Silicon Defense, “Worm Containment in the Internal Network”, (Mar. 2003), pp. 1-25. |
Singh, S. , et al., “Automated Worm Fingerprinting”, Proceedings of the ACM/USENIX Symposium on Operating System Design and Implementation, San Francisco, California, (Dec. 2004). |
Thomas H. Ptacek, and Timothy N. Newsham , “Insertion, Evasion, and Denial of Service: Eluding Network Intrusion Detection”, Secure Networks, (“Ptacek”), (Jan. 1998). |
U.S. Appl. No. 15/229,770, filed Aug. 5, 2016 Non-Final Office Action dated Nov. 2, 2017. |
U.S. Appl. No. 15/229,770, filed Aug. 5, 2016 Notice of Allowance dated May 18, 2018. |
U.S. Appl. No. 15/230,215, filed Aug. 5, 2016 Non-Final Office Action dated Oct. 5, 2018. |
U.S. Appl. No. 15/230,215, filed Aug. 5, 2016 Notice of Allowance dated Feb. 6, 2019. |
U.S. Appl. No. 15/257,704, filed Sep. 6, 2016 Non-Final Office Action dated Mar. 12, 2018. |
U.S. Appl. No. 15/257,704, filed Sep. 6, 2016 Notice of Allowance dated Sep. 19, 2018. |
U.S. Appl. No. 15/199,871, filed Jun. 30, 2016. |
U.S. Appl. No. 15/199,873, filed Jun. 30, 2016. |
U.S. Appl. No. 15/199,876, filed Jun. 30, 2016. |
U.S. Appl. No. 15/199,882, filed Jun. 30, 2016. |
Venezia, Paul , “NetDetector Captures Intrusions”, InfoWorld Issue 27, (“Venezia”), (Jul. 14, 2003). |
Vladimir Getov: “Security as a Service in Smart Clouds—Opportunities and Concerns”, Computer Software and Applications Conference (COMPSAC), 2012 IEEE 36th Annual, IEEE, Jul. 16, 2012 (Jul. 16, 2012). |
Wahid et al., Characterising the Evolution in Scanning Activity of Suspicious Hosts, Oct. 2009, Third International Conference on Network and System Security, pp. 344-350. |
Whyte, et al., “DNS-Based Detection of Scanning Works in an Enterprise Network”, Proceedings of the 12th Annual Network and Distributed System Security Symposium, (Feb. 2005), 15 pages. |
Nilliamson, Matthew M., “Throttling Viruses: Restricting Propagation to Defeat Malicious Mobile Code”, ACSAC Conference, Las Vegas, NV, USA, (Dec. 2002), pp. 1-9. |
Yuhei Kawakoya et al: “Memory behavior-based automatic malware unpacking in stealth debugging environment”, Malicious and Unwanted Software (Malware), 2010 5th International Conference on, IEEE, Piscataway, NJ, USA, Oct. 19, 2010, pp. 39-46, XP031833827, ISBN:978-1-4244-8-9353-1. |
Zhang et al., The Effects of Threading, Infection Time, and Multiple-Attacker Collaboration on Malware Propagation, Sep. 2009, IEEE 28th International Symposium on Reliable Distributed Systems, pp. 73-82. |
U.S. Appl. No. 16/160,923, filed Oct. 15, 2018 Non-Final Office Action dated Feb. 27, 2020. |
U.S. Appl. No. 16/160,923 filed Oct. 15, 2018 Final Office Action dated Aug. 31, 2020. |
Number | Date | Country | |
---|---|---|---|
62266109 | Dec 2015 | US | |
62265751 | Dec 2015 | US |