ES2639500T3 - Inyección de error de página en máquinas virtuales para provocar mapeo de páginas de memoria intercambiada hacia fuera en memoria virtualizada de VM - Google Patents
Inyección de error de página en máquinas virtuales para provocar mapeo de páginas de memoria intercambiada hacia fuera en memoria virtualizada de VM Download PDFInfo
- Publication number
- ES2639500T3 ES2639500T3 ES14882801.5T ES14882801T ES2639500T3 ES 2639500 T3 ES2639500 T3 ES 2639500T3 ES 14882801 T ES14882801 T ES 14882801T ES 2639500 T3 ES2639500 T3 ES 2639500T3
- Authority
- ES
- Spain
- Prior art keywords
- page
- memory
- virtualized
- virtual machine
- processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000002347 injection Methods 0.000 title claims abstract description 28
- 239000007924 injection Substances 0.000 title claims abstract description 28
- 238000013507 mapping Methods 0.000 title description 13
- 238000000034 method Methods 0.000 claims abstract description 84
- 230000008569 process Effects 0.000 claims abstract description 63
- 230000004044 response Effects 0.000 claims abstract description 16
- 238000012986 modification Methods 0.000 claims description 6
- 230000004048 modification Effects 0.000 claims description 6
- 230000001052 transient effect Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000003211 malignant effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 239000000243 solution Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000003213 activating effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 239000011241 protective layer Substances 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1045—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
- G06F12/1063—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0873—Mapping of cache memory to specific storage devices or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/54—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
- G06F21/79—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
Abstract
Un sistema anfitrión [10] que comprende un procesador de hardware [12] configurado para operar: un hipervisor [30] configurado para exponer una máquina virtual [32] que comprende un procesador virtualizado [112] y una memoria virtualizada [114], la máquina virtual [32] configurada para emplear el procesador virtualizado [112] para ejecutar un proceso objetivo, en el que exponer la máquina virtual [32] comprende configurar una estructura de datos para almacenar un estado actual del procesador virtualizado [112], comprendiendo la estructura de datos un campo de inyección de evento que, cuando se establece a un valor predeterminado, provoca que el procesador virtualizado [112] genere un error de página; y un motor de introspección de memoria [40] que se ejecuta fuera de la máquina virtual [32], en el que el sistema anfitrión [10] está caracterizado por tener el motor de introspección de memoria [40] configurado para: determinar de acuerdo con una tabla de página de la máquina virtual [32] si una página objetivo [60a] de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada [114]; y en respuesta, cuando la página objetivo [60a] se intercambia fuera de la memoria virtualizada [114], inyecta directamente el error de página en la máquina virtual [32], provocando el error de página que un sistema operativo [34] de la máquina virtual [32] mapee la página objetivo [60a] a una página [60c] de la memoria virtualizada [114], en el que la inyección de manera directa del error de página comprende que el motor de introspección de memoria [40] escriba el valor predeterminado al campo de inyección de evento.
Description
5
10
15
20
25
30
35
40
45
50
55
60
65
DESCRIPCION
Inyeccion de error de pagina en maquinas virtuales para provocar mapeo de paginas de memoria intercambiada hacia fuera en memoria virtualizada de VM
Solicitudes relacionadas
Esta solicitud reivindica el beneficio de la fecha de presentacion de la solicitud de patente provisional de Estados Unidos N.° 61/847.538, presentada el 17 de julio de 2013, titulada “Page Fault Injection In Virtual Machines”.
Antecedentes
La invencion se refiere a sistemas y metodos para proteger sistemas informaticos de software maligno.
El software malicioso, tambien conocido como software maligno (software maligno), afecta a un gran numero de sistemas informaticos por todo el mundo. En sus muchas formas, tales como virus informaticos, gusanos, rootkits y software espfa, el software maligno presenta un riesgo serio a millones de usuarios informaticos, haciendoles vulnerables a perdida de datos e informacion sensible, robo de identidad y perdida de productividad, entre otros.
La tecnologfa de virtualizacion de hardware permite la creacion de entornos informaticos simulados comunmente conocidos como maquinas virtuales, que se comportan de muchas maneras como los sistemas informaticos ffsicos. En aplicaciones tfpicas tales como consolidacion de servidor e infraestructura como servicio (IAAS), varias maquinas virtuales pueden ejecutarse simultaneamente en la misma maquina ffsica, compartiendo los recursos de hardware entre ellas, reduciendo por lo tanto los costes de inversion y de operacion. Cada maquina virtual puede ejecutar su propio sistema operativo y/o aplicaciones de software, de manera separada de otras maquinas virtuales. Debido a la proliferacion fija de software maligno, cada maquina virtual que opera en un entorno de este tipo potencialmente requiere proteccion de software maligno.
Una solucion de virtualizacion comunmente usada en la tecnica comprende un hipervisor, tambien conocido como un monitor de una maquina virtual, que consiste en una capa de software que opera entre el hardware informatico y el sistema operativo (SO) de una maquina virtual, y que tiene mas privilegios de procesador que el respectivo SO. Las operaciones anti-software maligno pueden realizarse en el nivel de privilegio del hipervisor. Aunque tales configuraciones pueden aumentar la seguridad, introducen una capa adicional de complejidad y pueden llevar costes computacionales significativos.
Un sistema ejemplar disenado para proteger una plataforma de virtualizacion contra software maligno se describe en el artfculo “Detecting Past And Present Intrusions Through Vulnerability-Specific Predicates” por A. Joshi et al., Operating Systems Review vol. 39, n.° 5, paginas 91-104. El sistema descrito usa introspeccion de maquina virtual para monitorizar la ejecucion del software de aplicacion y sistema operativo en una maquina virtual.
Existe un interes considerable en desarrollar soluciones anti-software maligno eficaces, robustas y escalables para plataformas de virtualizacion de hardware.
Sumario
De acuerdo con un aspecto, un sistema anfitrion comprende un procesador de hardware configurado para operar un hipervisor y un motor de introspeccion de memoria. El hipervisor esta configurado para exponer una maquina virtual que comprende un procesador virtualizado y una memoria virtualizada, la maquina virtual configurada para emplear el procesador virtualizado para ejecutar un proceso objetivo. El motor de introspeccion de memoria se ejecuta fuera de la maquina virtual y esta configurado para determinar de acuerdo con una tabla de pagina de la maquina virtual si una pagina objetivo de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada, y en respuesta, cuando la pagina objetivo se intercambia fuera de la memoria virtualizada, para inyectar directamente un error de pagina en la maquina virtual, provocando el error de pagina que un sistema operativo de la maquina virtual mapee la pagina objetivo a una pagina de la memoria virtualizada.
De acuerdo con otro aspecto, un metodo comprende emplear al menos un procesador de hardware de un sistema anfitrion para ejecutar un hipervisor, el hipervisor configurado para exponer una maquina virtual que comprende un procesador virtualizado y una memoria virtualizada, la maquina virtual configurada adicionalmente para emplear el procesador virtualizado para ejecutar un proceso objetivo. El metodo comprende adicionalmente emplear el al menos un procesador de hardware para ejecutar un motor de introspeccion de memoria fuera de la maquina virtual, emplear el motor de introspeccion de memoria para determinar de acuerdo con una tabla de pagina de la maquina virtual si una pagina objetivo de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada, y en respuesta, cuando la pagina se intercambia fuera de la memoria virtualizada, emplear el motor de introspeccion de memoria para inyectar directamente un error de pagina en la maquina virtual, provocando el error de pagina que un sistema operativo de la maquina virtual mapee la pagina objetivo a una pagina de la memoria virtualizada.
5
10
15
20
25
30
35
40
45
50
55
60
65
De acuerdo con otro aspecto, un medio legible por ordenador no transitorio almacena instrucciones que, cuando se ejecutan mediante al menos un procesador de hardware de un sistema anfitrion, provocan que el sistema anfitrion forme un motor de introspeccion de memoria, en el que el sistema anfitrion esta configurado adicionalmente para ejecutar un hipervisor que expone una maquina virtual que comprende un procesador virtualizado y una memoria virtualizada, la maquina virtual configurada para emplear un procesador virtualizado para ejecutar un proceso objetivo. El motor de introspeccion de memoria se ejecuta fuera de la maquina virtual y esta configurado para determinar de acuerdo con una tabla de pagina de la maquina virtual si una pagina objetivo de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada, y en respuesta, cuando la pagina objetivo se intercambia fuera de la memoria virtualizada, inyecta directamente un error de pagina en la maquina virtual, provocando el error de pagina que un sistema operativo de la maquina virtual mapee la pagina objetivo a una pagina de la memoria virtualizada.
Breve descripcion de los dibujos
Los anteriores aspectos y ventajas de la presente invencion se entenderan mejor tras leer la siguiente descripcion detallada y tras la referencia a los dibujos donde:
La Figura 1 muestra un conjunto ejemplar de maquinas virtuales expuestas por un hipervisor que se ejecuta en un sistema anfitrion, y un motor de introspeccion de memoria que protege el conjunto de maquinas virtuales de software maligno de acuerdo con algunas realizaciones de la presente invencion.
La Figura 2 muestra una configuracion de hardware ejemplar del sistema anfitrion de acuerdo con algunas realizaciones de la presente invencion.
La Figura 3 muestra una configuracion ejemplar de hardware virtualizado expuesto a una maquina virtual invitada de acuerdo con algunas realizaciones de la presente invencion.
La Figura 4 ilustra una jerarqrna ejemplar de objetos de software que se ejecutan en el sistema anfitrion a diversos niveles de privilegio de procesador, de acuerdo con algunas realizaciones de la presente invencion.
La Figura 5 muestra un mapeo de direcciones de memoria ejemplar y un intercambio ejemplar de una pagina de memoria page dentro y fuera de la memoria virtualizada de acuerdo con algunas realizaciones de la presente invencion.
La Figura 6 muestra una secuencia ejemplar de etapas ejecutadas por el motor de introspeccion de memoria para proteger una maquina virtual de software maligno de acuerdo con algunas realizaciones de la presente invencion.
La Figura 7 muestra una secuencia ejemplar de etapas realizadas por la introspeccion de memoria para llevar a cabo una inyeccion de error de pagina directa de acuerdo con algunas realizaciones de la presente invencion.
La Figura 8 muestra una secuencia ejemplar de etapas que ilustra una aplicacion de los metodos de las Figuras 6-7, de acuerdo con algunas realizaciones de la presente invencion.
La Figura 9 muestra una secuencia ejemplar de etapas que ilustra otra aplicacion de los metodos de las Figuras 6-7, de acuerdo con algunas realizaciones de la presente invencion.
La Figura 10 ilustra una determinacion ejemplar de un conjunto de direcciones virtuales de paginas de memoria que contienen datos de un proceso objetivo, de acuerdo con algunas realizaciones de la presente invencion.
Descripcion detallada de las realizaciones preferidas
En la siguiente descripcion, se entiende que todas las conexiones indicadas entre las estructuras pueden ser conexiones operativas directas o conexiones operativas indirectas a traves de estructuras intermedias. Un conjunto de elementos incluye uno o mas elementos. Cualquier indicacion de un elemento se entiende que hace referencia a al menos un elemento. Una pluralidad de elementos incluye al menos dos elementos. A menos que se requiera de otra manera, cualquier etapa del metodo descrita no necesita realizarse en un orden ilustrado particular. Un primer elemento (por ejemplo datos) obtenido a partir de un segundo elemento abarca un primer elemento igual al segundo elemento, asf como un primer elemento generado procesando el segundo elemento y opcionalmente otros datos.
Tomar una determinacion o decision de acuerdo con un parametro abarca tomar la determinacion o decision de acuerdo con el parametro y opcionalmente de acuerdo con otros datos. A menos que se especifique de otra manera, un indicador de alguna cantidad/datos puede ser la misma cantidad/datos, o un indicador diferente de la misma cantidad/datos. A menos que se especifique de otra manera, un proceso es una instancia de un programa informatico, tal como una aplicacion o una parte de un sistema operativo, y esta caracterizado por tener al menos un hilo de ejecucion y una seccion de memoria virtual asignada al mismo por el sistema operativo, comprendiendo la
5
10
15
20
25
30
35
40
45
50
55
60
65
respectiva seccion codigo ejecutable. A menos que se especifique de otra manera, una pagina representa la unidad mas pequena de memoria virtual mapeada individualmente a una memoria ffsica de un sistema anfitrion. A menos que se especifique de otra manera, inyectar directamente un error de pagina en una maquina virtual comprende inducir un evento de error de pagina en un procesador virtualizado de la respectiva maquina virtual sin asistencia desde un sistema operativo u otro software que se ejecute en la respectiva maquina virtual. Tal inyeccion directa no excluye el sistema operativo u otro software que tome accion en respuesta al error de pagina inyectado, por ejemplo para manejar el error de pagina. Medio legible por ordenador abarca medio no transitorio tal como medio de almacenamiento magnetico, optico y de semiconductores (por ejemplo discos duros, discos opticos, memoria flash, DRAM), asf como enlaces de comunicacion tales como cables conductores y enlaces de fibra optica. De acuerdo con algunas realizaciones, la presente invencion proporciona, entre otros, sistemas informaticos que comprenden hardware (por ejemplo uno o mas procesadores) programado para realizar los metodos descritos en el presente documento, asf como medio legible por ordenador que codifica instrucciones para realizar los metodos descritos en el presente documento.
La siguiente descripcion ilustra realizaciones de la invencion a modo de ejemplo y no necesariamente por medio de limitacion.
La Figura 1 muestra una configuracion ejemplar de un sistema anfitrion 10 que emplea virtualizacion de hardware para proteccion de software maligno de acuerdo con algunas realizaciones de la presente invencion. El sistema anfitrion 10 puede representar un dispositivo informatico corporativo tal como un servidor empresarial, o un dispositivo de usuario final tal como un ordenador personal o un telefono inteligente. Otros sistemas de anfitrion ejemplares incluyen dispositivos de entretenimiento tales como TV y consolas de juegos, o cualquier otro dispositivo que tenga una memoria y un procesador, y que requiera proteccion de software maligno. En el ejemplo de la Figura 1, el sistema anfitrion 10 ejecuta un conjunto de maquinas virtuales invitadas 32a-b, expuestas por un hipervisor 30. Una maquina virtual (VM) comprende una abstraccion, por ejemplo, una emulacion de software, de una maquina ffsica/sistema informatico real, pudiendo la VM ejecutar un sistema operativo y otras aplicaciones. El hipervisor 30 incluye software configurado para crear una pluralidad de dispositivos virtualizados, tal como un procesador virtual y un controlador de memoria virtual, y para presentar tales dispositivos virtualizados a software, en lugar de los dispositivos ffsicos reales del sistema anfitrion 10. En algunas realizaciones, el hipervisor 30 permite una multiplexacion (comparticion) por multiples maquinas virtuales de recursos de hardware del sistema anfitrion 10. El hipervisor 30 puede gestionar adicionalmente tal multiplexacion de modo que cada VM opere de manera independiente y no tenga conocimiento de otras VM que se ejecutan de manera concurrente en ejecucion en el sistema anfitrion 10. Ejemplos de hipervisores conocidos incluyen el VMware vSphere™ de VMware Inc. y el hipervisor Xen de codigo abierto, entre otros.
Cada VM 32a-b puede ejecutar un sistema operativo (SO) invitado 34a-b, respectivamente. Un conjunto de aplicaciones ejemplares 42a-d representan de manera generica cualquier aplicacion de software, tal como aplicaciones de procesamiento de textos, procesamiento de imagenes, reproductor de medios, base de datos, calendario, gestion de contactos personal, explorador, juegos, comunicacion por voz, comunicacion de datos y aplicaciones anti-software maligno, entre otras. Los sistemas operativos 34a-b pueden comprender cualquier sistema operativo ampliamente disponible tal como Microsoft Windows®, MacOS®, Linux®, iOS® o Android™, entre otros. Cada SO proporciona una interfaz entre aplicaciones que se ejecutan en una maquina virtual y los dispositivos de hardware virtualizados de la respectiva VM. En la siguiente descripcion, el software que se ejecuta en un procesador virtual de una maquina virtual se dice que se ejecuta en la respectiva maquina virtual. Por ejemplo, en el ejemplo de la Figura 1, las aplicaciones 42a-b se dice que se ejecutan en la VM invitada 32a, mientras que las aplicaciones 42c-d se dice que se ejecutan en la VM invitada 32b. En contraste, el hipervisor 30 se dice que se ejecuta fuera, o por debajo, de las VM invitadas 32a-b.
En algunas realizaciones, el hipervisor 30 incluye un motor de introspeccion de memoria 40, configurado para realizar operaciones anti-software maligno como se describe adicionalmente a continuacion. El motor 40 puede incorporarse en el hipervisor 30, o puede suministrarse como un componente de software distinto e independiente del hipervisor 30, pero que se ejecuta en algun nivel de privilegio de procesador sustancialmente similar como el hipervisor 30. Un unico motor 40 puede configurarse para proteger contra software maligno multiples VM que se ejecutan en sistema anfitrion 10.
La Figura 2 muestra una configuracion de hardware ejemplar de un sistema anfitrion 10. El sistema 10 comprende un conjunto de dispositivos ffsicos, que incluyen un procesador 12, una unidad de memoria 14, un conjunto de dispositivos de entrada 16, un conjunto de dispositivos de salida 18, un conjunto de dispositivos de almacenamiento 20 y un conjunto de adaptadores de red 22, todos conectados por un concentrador de controlador 24. En algunas realizaciones, el procesador 12 comprende un dispositivo ffsico (por ejemplo un circuito integrado de multiples nucleos formado en un sustrato de semiconductores) configurado para ejecutar operaciones computacionales y/o logicas con un conjunto de senales y/o datos. En algunas realizaciones, tales operaciones logicas se suministran al procesador 12 en forma de una secuencia de instrucciones de procesador (por ejemplo codigo maquina u otro tipo de software). La unidad de memoria 14 puede comprender medio legible por ordenador volatil (por ejemplo RAM) que almacena datos/senales accedidos o generados por el procesador 12 en el transcurso de llevar a cabo las instrucciones.
5
10
15
20
25
30
35
40
45
50
55
60
65
Los dispositivos de entrada 16 pueden incluirteclados informaticos, ratones y microfonos, entre otros, incluyendo las respectivas interfaces de hardware y/o adaptadores que permiten a un usuario introducir datos y/o instrucciones en el sistema anfitrion 10. Los dispositivos de salida 18 pueden incluir dispositivos de visualizacion tales como monitores y altavoces entre otros, asf como interfaces/adaptadores de hardware tales como tarjetas graficas, que permiten que el sistema anfitrion 10 comunique datos a un usuario. En algunas realizaciones, los dispositivos de entrada 16 y los dispositivos de salida 18 pueden compartir una pieza comun de hardware, como en el caso de dispositivos de pantalla tactil. Los dispositivos de almacenamiento 20 incluyen medios legibles por ordenador que posibilitan el almacenamiento no volatil, la lectura y escritura de instrucciones y/o datos de software. Los dispositivos de almacenamiento 20 ejemplares incluyen discos magneticos y opticos y dispositivos de memoria flash, asf como medio extrafble tal como discos y unidades de CD y/o DVD. El conjunto de adaptadores de red 22 posibilita que el sistema anfitrion 10 se conecte a una red informatica y/o a otros dispositivos/sistemas informaticos. El concentrador de controlador 24 representa la pluralidad de sistemas, perifericos y/o buses de conjuntos de chips y/o toda la demas circuitena que posibilita la comunicacion entre el procesador 12 y los dispositivos 14, 16, 18, 20 y 22. Por ejemplo, el concentrador de controlador 24 puede incluir un controlador de memoria, un controlador de entrada/salida (E/S) y un controlador de interrupcion, entre otros. En otro ejemplo, el concentrador de controlador 24 puede comprender un procesador de conexion de puente norte 12 a la memoria 14 y/o un procesador de conexion de puente sur 12 a los dispositivos 16, 18, 20 y 22.
Para posibilitar las configuraciones como se muestra en la Figura 1, el hipervisor 30 puede crear una pluralidad de dispositivos virtualizados, emulando cada uno un dispositivo de hardware ffsico del sistema 10. El hipervisor 30 puede asignar adicionalmente un conjunto de dispositivos virtualizados a cada VM 32a-b, y planificacion de control, senalizacion y comunicacion de modo que las VM 32a-b pueden usar el procesador 12 y otros dispositivos de hardware de manera concurrente. La realizacion de tales operaciones es tambien conocida en la tecnica como se expone las VM 32a-b.
La Figura 3 muestra una configuracion ejemplar de una maquina virtual 32, como se expone por el hipervisor 30. La VM 32 puede representar, por ejemplo, cualquiera de las VM 32a-b de la Figura 1. La Vm 32 incluye un procesador virtualizado 112, una unidad de memoria virtualizada 114, dispositivos de entrada virtualizados 116, dispositivos de salida virtualizados 118, almacenamiento virtualizado 120, adaptadores de red virtualizados 122 y un concentrador de controlador virtualizado 124. El procesador virtual 112 comprende una emulacion de al menos alguna de la funcionalidad del procesador 12, y esta configurado para recibir para ejecucion instrucciones de procesador que forman parte del software, tal como el sistema operativo y otras aplicaciones. El software que usa el procesador 112 para ejecucion se considera para ejecutarse en la maquina virtual 32. En algunas realizaciones, la unidad de memoria virtualizada 114 comprende espacios direccionables para almacenar y recuperar datos usados por el procesador virtual 112. Otros dispositivos virtualizados (por ejemplo, entrada, salida, almacenamiento virtualizados etc.) emulan al menos alguna de la funcionalidad de los respectivos dispositivos ffsicos del sistema anfitrion 10. El procesador virtual 112 puede configurarse para interactuar con tales dispositivos como se hana con los correspondientes dispositivos ffsicos. Por ejemplo, el software que se ejecuta en la VM 32 puede enviar y/o recibir trafico de red mediante el adaptador o adaptadores de red virtualizados 122. En algunas realizaciones, el hipervisor 30 puede exponer unicamente un subconjunto de dispositivos virtualizados a la VM 32 (por ejemplo, unicamente el procesador virtual 112, la memoria virtualizada 114 y partes del concentrador 124). El hipervisor 30 puede proporcionar tambien un uso exclusivo de la VM seleccionada de algunos dispositivos de hardware del sistema anfitrion 10. En un ejemplo de este tipo, la VM 32a (Figura 1) puede tener uso exclusivo de los dispositivos de entrada 16 y los dispositivos de salida 18, pero carecer de un adaptador de red virtualizado. Mientras tanto, la VM 32b puede tener uso exclusivo del adaptador o adaptadores de red 22.
La Figura 4 ilustra una jerarqrna de objetos de software que se ejecutan en sistema anfitrion 10 de acuerdo con algunas realizaciones de la presente invencion. La Figura 4 se representa desde la perspectiva de niveles de privilegio del procesador, tambien conocido en la tecnica como capas o anillos de proteccion. En algunas realizaciones, el hipervisor 30 toma el control del procesador 12 en el nivel mas privilegiado (por ejemplo, VMXroot en las plataformas Intel® que soportan virtualizacion, tambien conocido como anillo -1, o modo rafz), creando de esta manera una plataforma de virtualizacion de hardware expuesta como la maquina virtual 32 a otro software que se ejecuta en el sistema anfitrion 10. Un sistema operativo 34, tal como los SO 34a-b en la Figura 2, se ejecuta en el entorno virtual de la VM 32, teniendo el SO 34 menos privilegios de procesador que el hipervisor 30 (por ejemplo, el anillo 0 en las plataformas Intel, o modo de nucleo). Un conjunto de aplicaciones 42e-f se ejecutan a privilegios de procesador menores que el SO 34 (por ejemplo, el anillo 3, o modo de usuario). Partes de las aplicaciones 42e-f pueden ejecutarse a nivel de privilegio de nucleo (por ejemplo, el controlador 36 instalado por la aplicacion 42f; un controlador ejemplar 36 realiza operaciones anti-software maligno tales como detectar comportamiento indicativo de software maligno de objetos de software y/o detectar firmas indicativas de software maligno en objetos de software). De manera similar, partes del SO 34 pueden ejecutarse en modo de usuario (anillo 3).
En algunas realizaciones, el motor de introspeccion 40 se ejecuta sustancialmente en el mismo nivel de privilegio de procesador que el hipervisor 30, y esta configurado para realizar introspeccion de maquinas virtuales que se ejecutan en el sistema anfitrion 10, tal como la VM 32. La introspeccion de una VM o de un objeto de software que se ejecuta en la respectiva VM puede comprender analizar un comportamiento del respectivo objeto de software, por ejemplo, identificar un conjunto de operaciones realizadas por el objeto (por ejemplo, emitir una llamada de sistema,
5
10
15
20
25
30
35
40
45
50
55
60
65
acceder a un registro del SO, descargar un fichero desde una localizacion remota, escribir datos a un fichero, etc.). La introspeccion puede comprender adicionalmente determinar direcciones de secciones de memoria que contienen partes del objeto de software, acceder a las respectivas secciones de memoria y analizar un contenido almacenado en las respectivas secciones de memoria. Otros ejemplos de introspeccion incluyen interceptar y/o restringir el acceso de ciertos procesos tales como secciones de memoria, por ejemplo, evitar que un proceso sobre-escriba codigo o datos usados por otro proceso. En algunas realizaciones, los objetos seleccionados para introspeccion por el motor 40 comprenden procesos, flujos de instrucciones, registros y estructuras de datos tales como tablas de pagina y objetos de controlador de la respectiva VM, entre otros.
Para realizar la introspeccion de la VM 32 en una configuracion como se ilustra en la Figura 1 (es decir, desde fuera de la respectiva VM), algunas realizaciones del motor 40 emplean estructuras y mecanismos de mapeo de memoria del procesador 12. Las maquinas virtuales ffpicamente operan con una memoria ffsica virtualizada, por ejemplo, la memoria 114 en la Figura 3, tambien conocida en la tecnica como memoria ffsica de invitado. La memoria ffsica virtualizada comprende una representacion abstracta de la memoria ffsica real 14, por ejemplo un espacio contiguo de direcciones virtualizadas espedficas para cada VM de invitado, con partes de dicho espacio mapeadas a direcciones en la memoria ffsica 14 y/o dispositivos de almacenamiento ffsico 20. En sistemas configurados para soportar virtualizacion, tal mapeo se consigue ffpicamente mediante estructuras de datos especializadas controladas por el procesador 12, conocidas como traduccion de direccion de segundo nivel (SLAT). Las implementaciones de SLAT conocidas incluyen tablas de pagina extendidas (EPT, en plataformas Intel®), y tablas de pagina anidadas (NPT, en plataformas AMD®). En tales sistemas, la memoria ffsica virtualizada puede subdividirse en unidades conocidas en la tecnica como paginas, representando una pagina la unidad mas pequena de memoria ffsica virtualizada mapeada individualmente a memoria ffsica mediante mecanismos tales como EPT y/o NPT, es decir, el mapeo entre memoria ffsica y virtualizada se realiza con granularidad de pagina. Todas las paginas ffpicamente tienen un tamano predeterminado, por ejemplo, 4 kilobytes, 2 megabytes, etc. El particionamiento de memoria ffsica virtualizada en paginas se configura normalmente por el hipervisor 30. En algunas realizaciones, el hipervisor 30 tambien configura las EPT/NPT y por lo tanto el mapeo entre memoria ffsica y memoria ffsica virtualizada. El mapeo real (traduccion) de una direccion de memoria ffsica virtualizada a una direccion de memoria ffsica puede comprender buscar la direccion de memoria ffsica en una memoria intermedia de traduccion adelantada (TLB) del sistema anfitrion 10. En algunas realizaciones, la traduccion de direccion comprende realizar un recorrido de pagina, que incluye un conjunto de busquedas de direccion sucesivas en un conjunto de tablas de pagina y/o directorios de pagina, y realizar calculos tales como anadir un desplazamiento de una pagina a una direccion con relacion a la respectiva pagina.
Algunas configuraciones de hardware permiten que el hipervisor 30 acceda con control de manera selectiva a datos almacenados en cada pagina de memoria ffsica 14, por ejemplo, estableciendo los derechos de acceso de lectura, escritura y/o ejecucion a la respectiva pagina. Tales derechos pueden establecerse, por ejemplo, modificando una entrada de la respectiva pagina en la EPT o NPT. El hipervisor 30 puede seleccionar por lo tanto que objeto de software puede acceder a datos almacenados en las direcciones en cada pagina, y puede indicar que operaciones estan permitidas con los respectivos datos, por ejemplo, lectura, escritura, ejecucion. Un intento por un objeto de software que se ejecuta en una VM para realizar una operacion, tal como escribir datos en una pagina a la que el objeto no tiene el respectivo derecho, o ejecutar codigo desde una pagina marcada como no ejecutable, puede activar un evento de salida de maquina virtual (por ejemplo un evento VMExit en plataformas Intel). En algunas realizaciones, los eventos de salida de maquina virtual transfieren el control del procesador de la VM que ejecuta el respectivo objeto de software al hipervisor 30. Tales transferencias pueden permitir que el software que se ejecuta a nivel de privilegio del procesador del hipervisor 30 intercepte el intento de escritura o ejecucion no autorizado. En algunas realizaciones, el motor de introspeccion 40 realiza tales intercepciones como parte de operaciones antisoftware maligno.
En algunas realizaciones, el SO 34 configura un espacio de memoria virtual para un proceso tal como las aplicaciones 42e-f en la Figura 4, manteniendo un mapeo (traduccion de direccion) entre el respectivo espacio de memoria virtual y la memoria ffsica virtualizada de la VM 32, por ejemplo usando un mecanismo de tabla de pagina. En algunas realizaciones, el espacio de memoria virtual de proceso tambien esta subdividido en paginas, representando tales paginas la unidad mas pequena de memoria virtual individualmente mapeada a la memoria ffsica virtualizada por el SO 34, es decir, el mapeo de memoria ffsica virtual a virtualizada se realiza con granularidad de pagina.
La Figura 5 ilustra un mapeo de direcciones de memoria ejemplar en una realizacion como se muestra en la Figura 4. Un objeto de software, tal como una aplicacion, un proceso o una parte el sistema operativo que ejecuta la VM invitada 32, se le asigna un espacio de memoria virtual 214a por el SO invitado 34. Cuando el objeto de software intenta acceder a un contenido de una pagina de memoria ejemplar 60a del espacio 214a, una direccion de pagina 60a se traduce por el procesador virtualizado de la VM invitada 32 en una direccion de una pagina 60b del espacio de memoria ffsica virtualizada 114 de la VM 32, de acuerdo con tablas de pagina configuradas y controladas por el SO invitado 34. El hipervisor 30, que configura y controla la memoria ffsica virtualizada 114, a continuacion mapea la direccion de la pagina 60b a una direccion de una pagina 60c en la memoria ffsica 14 del sistema anfitrion 10, por ejemplo usando medios de SLAT como se ha analizado anteriormente.
5
10
15
20
25
30
35
40
45
50
55
60
65
En algunas realizaciones, el hipervisor 30 establece su propio espacio de memoria virtual 214b que comprende una representacion de memoria ffsica 14, y emplea un mecanismo de traduccion (por ejemplo, tablas de pagina) para mapear direcciones en el espacio 214b en las direcciones en memoria ffsica 14. En la Figura 5, un mapeo ejemplar de este tipo traduce una direccion de pagina 60c en una direccion de una pagina 60h. Tales mapeos permiten que el hipervisor 30 gestione (por ejemplo, lea desde, escriba en y acceda al control de) paginas de memoria que pertenecen a objetos de software que se ejecutan en diversas VM que se ejecutan en el sistema anfitrion 10.
La Figura 5 ilustra adicionalmente una operacion de intercambio de pagina realizada por el SO invitado 34. El intercambio de pagina es una caracteffstica comun de los sistemas operativos modernos, usado para gestionar de manera eficaz recursos de memoria disponibles. En algunas realizaciones, intercambiar una pagina fuera de memoria comprende que el SO mueva un contenido de la respectiva pagina de la memoria a un dispositivo de almacenamiento (por ejemplo, disco), de modo que la respectiva pagina pueda usarse para almacenar otros datos. En un momento mas tarde, el SO puede realizar un intercambio de entrada de la pagina, moviendo el respectivo contenido de vuelta del almacenamiento en memoria, posiblemente en una direccion distinta de la direccion de la pagina original que almacena el contenido. Para completar el intercambio de entrada, el SO puede modificar una entrada de tabla de pagina de la respectiva pagina para reflejar el cambio de direccion. En el ejemplo ilustrado en la Figura 5, la pagina 60c se intercambia hacia fuera a una pagina 60d en un dispositivo de almacenamiento. Puesto que el SO 34 se ejecuta en una maquina virtual, el SO 34 ve la memoria ffsica virtualizada 114 como su memoria ffsica, y el dispositivo de almacenamiento virtualizado 120 como su almacenamiento ffsico. Por lo que intercambiar la pagina 60c fuera de la memoria comprende de manera eficaz mover un contenido de la pagina 60c al dispositivo de almacenamiento virtualizado 120. El dispositivo 120 puede comprender una abstraccion creada por el hipervisor 30 del dispositivo de almacenamiento ffsico 20, por lo que el contenido de la pagina 60d puede realmente redirigirse a una pagina 60k en el dispositivo 20. En algunas realizaciones, el hipervisor 30 puede proporcionar a la VM invitada 32 acceso directo al dispositivo de almacenamiento 20, por ejemplo usando la tecnologfa VT-d de Intel®. En tales configuraciones, el dispositivo de almacenamiento virtualizado 120 puede coincidir con un dispositivo de almacenamiento del sistema anfitrion ffsico real 10. Para realizar un intercambio de entrada, el SO 34 puede mover el contenido de la pagina 60d a una pagina 60e de memoria ffsica virtualizada 114. El SO anfitrion 34 puede modificar adicionalmente una entrada de tabla de pagina que corresponde a la pagina 60a para indicar una traduccion de direccion desde la pagina 60a a la pagina 60e (flecha discontinua en la Figura 5). La pagina 60e puede mapearse a una pagina 60m en memoria ffsica 14.
La Figura 6 muestra una secuencia ejemplar de etapas realizadas por el motor de introspeccion de memoria 40 para proteger una maquina virtual de softWare maligno de acuerdo con algunas realizaciones de la presente invencion. Tal proteccion anti-software maligno incluye, por ejemplo, identificar una pagina (considerada en lo sucesivo la pagina objetivo) de un espacio de memoria de un proceso seleccionado (considerado en lo sucesivo el proceso objetivo) que se ejecuta en la respectiva VM, y proteger el contenido de la respectiva pagina de modificacion no autorizada, por ejemplo, por una entidad de software maliciosa. En otro ejemplo, el motor de introspeccion 40 puede determinar si la pagina objetivo contiene codigo malicioso. El proceso objetivo puede pertenecer, por ejemplo, a una aplicacion tal como las aplicaciones 42e-f, o al SO invitado 34 en la Figura 4. Cuando el proceso objetivo se ejecuta a los privilegios del procesador de nivel de usuario (por ejemplo, modo de usuario en Windows®), el contenido de la pagina objetivo puede no residir en memoria en ningun momento, pero en su lugar puede intercambiarse de manera ocasional dentro y fuera de la memoria por el SO. Ejecutandose fuera de la VM 32, el motor de introspeccion de memoria 40 puede no tener acceso directo al contenido de tales paginas de memoria intercambiadas hacia fuera.
En una secuencia de las etapas 302-304, el motor 40 espera hasta que el contexto de ejecucion actual sea el del proceso objetivo, es decir, hasta que las instrucciones de ejecucion actualmente pertenezcan al proceso objetivo. Determinar el contexto de ejecucion actual puede comprender, por ejemplo, leer un contenido de un registro de CR3 del procesador virtual de la respectiva VM (el registro de CR3 de plataformas x86 almacena una direccion de una estructura de paginacion, que identifica de manera inequvoca cada proceso de ejecucion). Cuando el contexto de ejecucion es el del proceso objetivo, en una secuencia de etapas 306-308, el motor 40 puede determinar si el contenido de la pagina objetivo se esta intercambiando actualmente fuera de memoria. Cuando el contenido de la pagina objetivo esta en memoria, en una etapa 316, el motor 40 puede continuar para realizar introspeccion en la pagina objetivo, por ejemplo, para analizar y/o proteger el contenido de la pagina objetivo. Cuando el contenido de la pagina objetivo se esta intercambiando actualmente hacia fuera, en una etapa 310, el motor 40 inyecta directamente un error de pagina en la respectiva VM, para forzar un intercambio de entrada de la pagina objetivo como se describe en mas detalle a continuacion. A continuacion, en una secuencia de etapas 312-314, el motor 40 espera hasta que la pagina objetivo se intercambie, es decir, hasta que el contenido de la respectiva pagina se mapee a la memoria ffsica virtualizada de la respectiva VM, para realizar introspeccion.
Para determinar si la pagina objetivo reside en memoria (etapas 306-308), asf como para determinar si la pagina objetivo se ha intercambiado (etapas 312-314), el motor de introspeccion de memoria 40 puede acceder a un contenido de una tabla de pagina establecido por el SO 34. En algunas realizaciones, un campo (por ejemplo, un bit especializado) de la entrada de tabla de pagina de la pagina objetivo indica si la respectiva pagina esta actualmente en memoria.
5
10
15
20
25
30
35
40
45
50
55
60
65
La Figura 7 ilustra una secuencia ejemplar de etapas realizadas por el motor 40 para inyectar directamente un error de pagina, forzando de esta manera el intercambio de entrada de la pagina objetivo (etapa 310 en la Figura 6). En una secuencia de etapas 322-324, el motor 40 evalua un estado actual o procesador virtual 112 para determinar si puede inyectarse una excepcion de error de pagina de manera segura en la VM 32. La etapa 322 puede comprender evaluar la prioridad de solicitudes de interrupcion actualmente bajo procesamiento. En un sistema Microsoft Windows®, una evaluacion de este tipo puede comprender determinar un nivel de solicitud de interrupcion actual (IRQL), por ejemplo buscando un contenido de un registro de segmento de la VM 32. Tales registros ejemplares incluyen los registros FS y/o GS de la arquitectura de procesador x86, almacenando un puntero a una estructura de datos que incluye la IRQL. En una realizacion ejemplar, cuando IRQL<2, inyectar un error de pagina se considera seguro. Cuando hay interrupciones de prioridad superior en espera (por ejemplo, IRQL>2), las etapas 322-324 esperan a que se sirvan las solicitudes de alta prioridad.
En algunas realizaciones, la etapa 322 puede incluir determinar el nivel de privilegio (anillo) en el que se esta ejecutando actualmente el procesador virtual 112. En sistemas de anfitrion que ejecutan Microsoft Windows®, mientras el procesador se esta ejecutando en modo de usuario (anillo 3), IRQL es cero, por lo que la inyeccion de un error de pagina que corresponde a una pagina de modo de usuario puede considerarse seguro. Cuando el procesador 112 se ejecuta en modo de nucleo (anillo 0), pueden ser necesarias determinaciones adicionales para inferir si una inyeccion de error es segura.
Una secuencia de etapas 326-328 inyecta una excepcion de error de pagina en la VM 32, la excepcion configurada para activar un intercambio de entrada de la pagina objetivo. En una realizacion ejemplar, en la etapa 326, el motor 40 escribe una direccion virtual de la pagina objetivo en el registro de CR2 del procesador virtual de la respectiva VM, indicando al SO 34 que pagina virtual intercambiar en memoria. A continuacion, en la etapa 328, el motor 40 activa la excepcion en el procesador virtual 112, por ejemplo escribiendo en un conjunto de bits de control de una estructura de control de maquina virtual (VMCS) de la VM 32, los respectivos bits de control configurables para activar un error de pagina en la respectiva VM. En procesadores Intel® configurados para soportar virtualizacion, tales bits de control son parte del campo de Inyeccion de Evento de Entrada de VM de la VMCS.
Las estructuras de control de VM son un tipo especial de estructuras de datos mantenidas por el hipervisor 30 para describir las VM invitadas que se ejecutan en sistema anfitrion 10. El formato de VMCS puede ser espedfico de la implementacion y/o de la plataforma. Para las VM que comprenden multiples procesadores virtuales 112, el hipervisor 30 puede mantener un VMCS distinto para cada procesador virtual. En algunas realizaciones, cada VMCS puede comprender un area de estado invitada y un area de estado anfitrion, almacenando el area de estado invitada datos tales como el estado de CPU y/o contenido de registros de control del respectivo procesador virtual, y almacenando el area de estado de anfitrion datos similares para el hipervisor 30. En algunas realizaciones, el procesador 12 asocia una region en memoria con cada VMCS, denominada la region de VMCS. El software puede hacer referencia a una VMCS espedfica usando una direccion de la region (por ejemplo, un puntero de VMCS). En cualquier momento dado, como maximo puede cargarse una VMCS en el procesador 12, que representa la VM que actualmente tiene el control del procesador.
Las Figuras 8-9 muestran aplicaciones ejemplares de algunas realizaciones de la presente invencion en un entorno Windows®. La Figura 8 ilustra una secuencia de etapas realizadas por el motor 40 para determinar una direccion de memoria virtual de un principal ejecutable de un proceso objetivo. En una etapa 332, el motor 40 puede detectar un lanzamiento del proceso objetivo. La etapa 332 puede emplear cualquier metodo conocido en la tecnica, tal como interceptar un mecanismo del SO que gestiona la lista de procesos activos. Por ejemplo, en Windows®, cada vez que se crea un proceso, un indicador del respectivo proceso se inserta en la lista de procesos activos; el indicador se elimina de la lista tras la terminacion del respectivo proceso. En algunas realizaciones, tras lanzar un proceso, el SO 34 tambien establece una estructura de datos espedfica de proceso conocida como un bloque de entorno de proceso (PEB) que comprende datos usados por el SO 34 para gestionar recursos asociados con el respectivo proceso. Interceptando (por ejemplo, colocando un gancho en) una instruccion de SO para insertar el proceso objetivo en la lista de procesos activos, el motor 40 puede obtener informacion tal como una direccion de memoria del respectivo PEB, que el motor 40 puede extraer en una etapa 334. En Windows, la direccion virtual del PEB se almacena en una estructura de datos del SO, conocido como el bloque de proceso ejecutivo (EPROCESS). La Figura 10 muestra un diagrama ilustrativo de tales estructuras de datos espedficas de proceso.
Siendo una estructura de datos de nivel de usuario, la pagina de memoria virtual que contiene datos de PEB puede o puede no residir actualmente en memoria. En una etapa 336 el motor 40 determina si se intercambia hacia fuera la respectiva pagina de memoria virtual, y si no, en una etapa 340 el motor 40 continua para determinar una direccion virtual del principal ejecutable del proceso objetivo, por ejemplo analizando los datos de PEB. Cuando los datos de PEB se intercambian actualmente fuera de la memoria, una etapa 338 fuerza un intercambio de entrada de la respectiva pagina que contiene datos de PEB, usando por ejemplo, un mecanismo como se ha descrito anteriormente en relacion con la Figura 7.
La Figura 9 muestra una secuencia ejemplar de etapas llevadas a cabo por el motor 40 para realizar introspeccion de memoria de un modulo ejecutable (tal como una biblioteca) cargada por el proceso objetivo. El software maligno
5
10
15
20
25
30
35
40
45
50
55
60
65
a menudo usa las DLL como vectores para llevar a cabo codigo malicioso, por lo que analizar el contenido de tales bibliotecas puede ser importante para operaciones anti-software maligno. Despues de acceder a la pagina virtual que contiene datos de PEB en una etapa 342 (vease por ejemplo, las etapas 336-338 anteriores), en una secuencia de etapas 344-346-348 el motor 40 identifica un modulo objetivo, por ejemplo, una biblioteca de enlace dinamico (DLL), usada por el proceso objetivo, y determina si se ha cargado el respectivo modulo. Cuando se ha cargado el modulo objetivo, el motor 40 puede determinar una direccion virtual del respectivo modulo en una etapa 350, por ejemplo de acuerdo con un campo de datos espedfico del PEB (vease por ejemplo, la Figura 10). En una etapa 352, el motor 40 determina si la pagina virtual que contiene los datos de modulo y que residen en la direccion determinada en la etapa 350 se esta intercambiando actualmente fuera de la memoria, y cuando no, en una etapa 356, continua para realizar introspeccion de memoria del respectivo modulo. Cuando la pagina virtual del respectivo modulo se esta intercambiando hacia fuera actualmente, en una etapa 354, el motor 40 fuerza un intercambio de entrada de la respectiva pagina virtual usando, por ejemplo, el mecanismo anteriormente descrito en relacion con la Figura 7.
La Figura 10 muestra una determinacion ejemplar de direcciones virtuales en un entorno Windows®. En algunas realizaciones, el SO 34 mantiene un espacio de memoria virtual de nucleo 214d, en el que una pagina localizada en una direccion virtual 60p contiene una parte de la estructura de EPROCESS usada por el SO 34 para gestionar la ejecucion del proceso objetivo. La direccion 60p puede determinarse, por ejemplo, interceptando el lanzamiento del proceso objetivo (vease, por ejemplo, la etapa 332 en la Figura 8). Un campo de la estructura de datos de EPROCESS mantiene un indicador (por ejemplo, un puntero) del bloque de entorno de proceso (PEB) del proceso objetivo. El puntero indica una direccion virtual 60q en una memoria virtual de proceso 214e asignada al proceso objetivo por el SO 34. La estructura de PEB incluye adicionalmente un puntero a una estructura (datos de lDr) que contiene informacion acerca de modulos ejecutables (por ejemplo bibliotecas) cargadas por el proceso objetivo. Los datos de LDR se localizan en una direccion 60r en el espacio 214e. Recorriendo la jerarqma de estructuras de datos de gestion de procesos establecidas por el SO 34, el motor de introspeccion 40 puede determinar por lo tanto una pluralidad de direcciones virtuales de objetos dirigidos para introspeccion. Cuando el contenido de las paginas de memoria localizadas en tales direcciones se intercambia fuera de la RAM, el motor 40 puede forzar al SO 34 para intercambiar las respectivas paginas al usar los metodos descritos en el presente documento.
Los sistemas y metodos ejemplares anteriormente descritos permiten proteger un sistema anfitrion de software maligno que usa tecnologfa de virtualizacion. En algunas realizaciones, un motor de introspeccion de memoria opera por debajo de las maquinas virtuales que se ejecutan en el sistema anfitrion. El motor de introspeccion de memoria puede proteger una maquina virtual analizando los contenidos de una pagina de memoria usada por un proceso que se ejecuta en la respectiva maquina virtual. El motor de introspeccion puede por lo tanto determinar, desde fuera de la respectiva VM, si el codigo del respectivo proceso contiene software maligno.
En algunas realizaciones, el motor de introspeccion puede evitar tambien una modificacion no autorizada (por ejemplo, por software maligno) de algunos objetos cnticos, tal como ciertos controladores y tablas de pagina, entre otros. Para proteger un objeto de este tipo, algunas realizaciones pueden evitar cambios interceptando un intento de escritura de una pagina de memoria asignada al respectivo objeto. Tales intercepciones pueden realizarse desde el nivel del hipervisor.
En sistemas anti-software maligno convencionales, las aplicaciones de seguridad se ejecutan en un nivel de privilegio de procesador similar al del sistema operativo o de aplicaciones comunes. Tales sistemas pueden ser vulnerables a software maligno avanzado que tambien opera en el nivel de privilegio del sistema operativo. En contraste, en algunas realizaciones de la presente invencion, un hipervisor se ejecuta en el nivel mas privilegiado (por ejemplo, modo de rafz o anillo -1), desplazando el sistema operativo a una maquina virtual. El motor de introspeccion de memoria puede ejecutarse en el mismo nivel de privilegio de procesador que el hipervisor. Las operaciones anti-software maligno pueden por lo tanto realizarse desde un nivel de privilegio de procesador mas alto que el del sistema operativo. En algunas realizaciones, un unico motor de introspeccion de memoria puede proteger multiples maquinas virtuales que se ejecutan concurrentemente en el respectivo sistema informatico.
Aunque el motor de introspeccion de memoria se ejecuta fuera de la maquina virtual dirigida para proteccion, el motor puede determinar direcciones virtuales usadas por objetos de software que se ejecutan en la Vm protegida. Sin embargo, cuando tales direcciones virtuales apuntan a contenido de paginas que se estan intercambiando actualmente fuera de la memoria por el sistema operativo, el motor de introspeccion de memoria no tiene acceso al respectivo contenido. En algunas realizaciones de la presente invencion, cuando una pagina se esta intercambiando actualmente hacia fuera, el motor de introspeccion de memoria puede forzar al SO a que se intercambie la respectiva pagina de entrada, poniendo el contenido de la respectiva pagina a disposicion para analisis y/o proteccion. Para forzar el intercambio de entrada, el motor de introspeccion de memoria puede activar un evento de procesador, tal como una excepcion de error de pagina, en el procesador virtualizado de la respectiva maquina virtual, el evento de procesador configurado para provocar que el sistema operativo proporcione la pagina intercambiada de vuelta a memoria. Activar el evento de procesador puede comprender, por ejemplo, escribir en un conjunto de bits de control de una estructura de control de maquina virtual usada por la respectiva maquina virtual.
El motor de introspeccion de memoria puede inyectar por lo tanto un error de pagina en la respectiva maquina virtual sin asistencia del SO o desde otro software que se ejecuta en la respectiva VM.
Sera evidente para un experto en la materia que las realizaciones anteriores pueden modificarse de muchas 5 maneras sin alejarse del alcance de la invencion. Por consiguiente, el alcance de la invencion debena determinarse por las siguientes reivindicaciones y sus equivalentes legales.
Claims (21)
- 5101520253035404550556065REIVINDICACIONES1. Un sistema anfitrion [10] que comprende un procesador de hardware [12] configurado para operar:un hipervisor [30] configurado para exponer una maquina virtual [32] que comprende un procesador virtualizado [112] y una memoria virtualizada [114], la maquina virtual [32] configurada para emplear el procesador virtualizado [112] para ejecutar un proceso objetivo, en el que exponer la maquina virtual [32] comprende configurar una estructura de datos para almacenar un estado actual del procesador virtualizado [112], comprendiendo la estructura de datos un campo de inyeccion de evento que, cuando se establece a un valor predeterminado, provoca que el procesador virtualizado [112] genere un error de pagina; y un motor de introspeccion de memoria [40] que se ejecuta fuera de la maquina virtual [32], en el que el sistema anfitrion [10] esta caracterizado por tener el motor de introspeccion de memoria [40] configurado para:determinar de acuerdo con una tabla de pagina de la maquina virtual [32] si una pagina objetivo [60a] de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada [114]; y en respuesta, cuando la pagina objetivo [60a] se intercambia fuera de la memoria virtualizada [114], inyecta directamente el error de pagina en la maquina virtual [32], provocando el error de pagina que un sistema operativo [34] de la maquina virtual [32] mapee la pagina objetivo [60a] a una pagina [60c] de la memoria virtualizada [114], en el que la inyeccion de manera directa del error de pagina comprende que el motor de introspeccion de memoria [40] escriba el valor predeterminado al campo de inyeccion de evento.
- 2. El sistema anfitrion de la reivindicacion 1, en el que inyectar directamente el error de pagina comprende que el motor de introspeccion de memoria [40] escriba una direccion virtual de la pagina objetivo [60a] a un registro del procesador virtualizado [112].
- 3. El sistema anfitrion de la reivindicacion 1, en el que el motor de introspeccion de memoria [40] esta configurado adicionalmente para:en la preparacion para inyectar directamente el error de pagina, determinar si se satisface una condicion deinyeccion de evento de acuerdo con el estado actual del procesador virtualizado [112]; yen respuesta, inyectar directamente el error de pagina cuando se satisface la condicion de inyeccion de evento.
- 4. El sistema anfitrion de la reivindicacion 3, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un nivel de solicitud de interrupcion actual (IRQL) del procesador virtualizado [112].
- 5. El sistema anfitrion de la reivindicacion 3, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un nivel de privilegio en el que se esta ejecutando actualmente el procesador virtualizado [112].
- 6. El sistema anfitrion de la reivindicacion 3, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un contexto de ejecucion actual del procesador virtualizado [112].
- 7. El sistema anfitrion de la reivindicacion 1, en el que el motor de introspeccion de memoria [40] esta configurado adicionalmente, en respuesta a inyectar directamente el error de pagina, para:detectar la modificacion de una entrada de tabla de pagina de la pagina objetivo [60a]; yen respuesta, determinar si la pagina objetivo [60a] se mapeo a la pagina [60c] de la memoria virtualizada [114] de acuerdo con la modificacion.
- 8. El sistema anfitrion de la reivindicacion 1, en el que el motor de introspeccion de memoria [40] esta configurado adicionalmente para determinar si el proceso objetivo es malicioso de acuerdo con un contenido de la pagina objetivo [60a].
- 9. El sistema anfitrion de la reivindicacion 1, en el que el motor de introspeccion de memoria [40] esta configurado adicionalmente para interceptar un intento de modificar un contenido de la pagina objetivo [60a].
- 10. El sistema anfitrion de la reivindicacion 1, en el que el motor de introspeccion de memoria [40] esta configurado adicionalmente, en la preparacion para determinar si la pagina objetivo [60a] se intercambia fuera de la memoria virtualizada [114], para:detectar un evento del procesador virtualizado [112], el evento indicativo de un lanzamiento del proceso objetivo en la maquina virtual [32]; yen respuesta, determinar una direccion virtual de la pagina objetivo [60a] de acuerdo con el evento.5101520253035404550556065
- 11. Un metodo que comprende:emplear al menos un procesador de hardware [12] de un sistema anfitrion [10] para ejecutar un hipervisor [30], el hipervisor [30] configurado para exponer una maquina virtual [32] que comprende un procesador virtualizado [112] y una memoria virtualizada [114], la maquina virtual [32] configurada para emplear el procesador virtualizado [112] para ejecutar un proceso objetivo, en el que exponer la maquina virtual [32] comprende configurar una estructura de datos para almacenar un estado actual del procesador virtualizado [112], comprendiendo la estructura de datos un campo de inyeccion de evento que, cuando se establece a un valor predeterminado, provoca que el procesador virtualizado [112] genere un error de pagina, y emplear el al menos un procesador de hardware [12] para ejecutar un motor de introspeccion de memoria [40] fuera de la maquina virtual [32] en el que el metodo esta caracterizado por las etapas de:emplear el motor de introspeccion de memoria [40] para determinar de acuerdo con una tabla de pagina de la maquina virtual [32] si una pagina objetivo [60a] de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada [114]; yen respuesta, cuando la pagina [60a] se intercambia fuera de la memoria virtualizada [114], emplear el motor de introspeccion de memoria [40] - para inyectar directamenteun error de pagina en la maquina virtual [32], provocando el error de pagina que un sistema operativo [34] de la maquina virtual [32] mapee la pagina objetivo [60a] a una pagina [60c] de la memoria virtualizada [114], en el que inyectar directamente el error de pagina comprende que el motor de introspeccion de memoria [40] escriba el valor predeterminado al campo de inyeccion de evento.
- 12. El metodo de la reivindicacion 11, en el que inyectar directamente el error de pagina comprende escribir una direccion virtual de la pagina objetivo [60a] a un registro del procesador virtualizado [112].
- 13. El metodo de la reivindicacion 11, que comprende adicionalmente, en la preparacion para inyectar directamente el error de pagina:Emplear el motor de introspeccion de memoria [40] para determinar si se satisface una condicion de inyeccion de evento de acuerdo con el estado actual del procesador virtualizado [112]; yen respuesta, emplear el motor de introspeccion de memoria [40] para inyectar directamente el error de pagina cuando se satisface la condicion de inyeccion de evento.
- 14. El metodo de la reivindicacion 13, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un nivel de solicitud de interrupcion actual (IRQL) del procesador virtualizado [112].
- 15. El metodo de la reivindicacion 13, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un nivel de privilegio en el que se esta ejecutando actualmente el procesador virtualizado [112].
- 16. El metodo de la reivindicacion 13, en el que determinar si se satisface la condicion de inyeccion de evento comprende determinar un contexto de ejecucion actual del procesador virtualizado [112].
- 17. El metodo de la reivindicacion 11, que comprende adicionalmente, en respuesta a inyectar directamente el error de pagina:emplear el motor de introspeccion de memoria [40] para detectar una modificacion de una entrada de tabla de pagina de la pagina objetivo [60a]; yen respuesta, emplear el motor de introspeccion de memoria [40] para determinar si la pagina objetivo [60a] se mapeo a la pagina de la memoria virtualizada [114] de acuerdo con la modificacion.
- 18. El metodo de la reivindicacion 11, que comprende adicionalmente emplear el motor de introspeccion de memoria [40] para determinar si el proceso objetivo es malicioso de acuerdo con un contenido de la pagina objetivo [60a].
- 19. El metodo de la reivindicacion 11, que comprende adicionalmente emplear el motor de introspeccion de memoria [40] para interceptar un intento de modificar un contenido de la pagina objetivo [60a].
- 20. El metodo de la reivindicacion 11, que comprende adicionalmente, en la preparacion para determinar si la pagina objetivo [60a] se intercambia fuera de la memoria virtualizada [114]:emplear el motor de introspeccion de memoria [40] para detectar un evento del procesador virtualizado [112], el evento indicativo de un lanzamiento del proceso objetivo en la maquina virtual [32]; yen respuesta, emplear el motor de introspeccion de memoria [40] para determinar una direccion virtual de la pagina objetivo [60a] de acuerdo con el evento.
- 21. Un medio legible por ordenador no transitorio que almacena instrucciones que, cuando se ejecutan mediante al menos un procesador de hardware [12] de un sistema anfitrion [10], provoca que el sistema anfitrion [10] forme un motor de introspeccion de memoria [40], en el que el sistema anfitrion ejecuta un hipervisor [30] que expone una maquina virtual [32] que comprende un procesador virtualizado [112] y una memoria virtualizada [114], la maquina 5 virtual [32] configurada para emplear el procesador virtualizado [112] para ejecutar un proceso objetivo, en el que exponer la maquina virtual [32] comprende configurar una estructura de datos para almacenar un estado actual del procesador virtualizado [112], comprendiendo la estructura de datos un campo de inyeccion de evento que, cuando se establece a un valor predeterminado, provoca que el procesador virtualizado [112] genere un error de pagina, en el que el motor de introspeccion de memoria [40] se ejecuta fuera de la maquina virtual [32],10 y en el que el medio legible por ordenador esta caracterizado por tener el motor de introspeccion de memoria [40] configurado para:determinar de acuerdo con una tabla de pagina de la maquina virtual [32] si una pagina objetivo [60a] de un espacio de memoria virtual del proceso objetivo se intercambia fuera de la memoria virtualizada [114]; y 15en respuesta, cuando la pagina objetivo [60a] se intercambia fuera de la memoria virtualizada [114], inyectar directamente el error de pagina en la maquina virtual [32], provocando el error de pagina que un sistema operativo [34] de la maquina virtual [32] mapee la pagina objetivo [60a] a una pagina [60c] de la memoria virtualizada [114], en el que inyectar directamente el error de pagina comprende que el motor de introspeccion de memoria [40] escriba el 20 valor predeterminado al campo de inyeccion de evento.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361847538P | 2013-07-17 | 2013-07-17 | |
US201361847538P | 2013-07-17 | ||
US201414289163 | 2014-05-28 | ||
US14/289,163 US9507727B2 (en) | 2013-07-17 | 2014-05-28 | Page fault injection in virtual machines |
PCT/RO2014/000018 WO2015152747A2 (en) | 2013-07-17 | 2014-07-02 | Page fault injection in virtual machines |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2639500T3 true ES2639500T3 (es) | 2017-10-26 |
Family
ID=52344738
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES14882801.5T Active ES2639500T3 (es) | 2013-07-17 | 2014-07-02 | Inyección de error de página en máquinas virtuales para provocar mapeo de páginas de memoria intercambiada hacia fuera en memoria virtualizada de VM |
Country Status (13)
Country | Link |
---|---|
US (1) | US9507727B2 (es) |
EP (1) | EP3022648B8 (es) |
JP (1) | JP6411494B2 (es) |
KR (1) | KR101955189B1 (es) |
CN (1) | CN105393229B (es) |
AU (1) | AU2014389571B2 (es) |
CA (1) | CA2915646C (es) |
ES (1) | ES2639500T3 (es) |
HK (1) | HK1216679A1 (es) |
IL (1) | IL243122B (es) |
RU (1) | RU2659472C2 (es) |
SG (1) | SG11201510735RA (es) |
WO (1) | WO2015152747A2 (es) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9612865B2 (en) | 2015-06-15 | 2017-04-04 | International Business Machines Corporation | Managed services coordinator |
US9898322B2 (en) * | 2015-10-29 | 2018-02-20 | International Business Machines Corporation | Steganographic message passing between a virtual machine and a hypervisor |
WO2017131780A1 (en) * | 2016-01-29 | 2017-08-03 | Hewlett Packard Enterprise Development Lp | Identifying object modifications |
US10116630B2 (en) * | 2016-04-04 | 2018-10-30 | Bitdefender IPR Management Ltd. | Systems and methods for decrypting network traffic in a virtualized environment |
US10528476B2 (en) * | 2016-05-24 | 2020-01-07 | International Business Machines Corporation | Embedded page size hint for page fault resolution |
US10264002B2 (en) * | 2016-07-14 | 2019-04-16 | Mitsui Bussan Secure Directions, Inc. | Program, information processing device, and information processing method |
US10346050B2 (en) | 2016-10-26 | 2019-07-09 | International Business Machines Corporation | Virtualization of memory compute functionality |
US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
US20180267818A1 (en) * | 2017-03-17 | 2018-09-20 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on notification data |
US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
US11150929B2 (en) | 2018-05-29 | 2021-10-19 | Red Hat, Inc. | Enhanced memory management for virtual machines |
CN110209354B (zh) * | 2019-05-24 | 2022-04-19 | 北京百度网讯科技有限公司 | 用于处理数据的方法、装置、设备和介质 |
US20220131897A1 (en) * | 2020-10-22 | 2022-04-28 | G14 Solutions LLC. | Memory decoys |
US11586513B2 (en) | 2020-11-17 | 2023-02-21 | Google Llc | Live migrating virtual machines to a target host upon fatal memory errors |
CN112256404B (zh) * | 2020-11-17 | 2024-04-05 | 杭州安恒信息技术股份有限公司 | 一种虚拟机自省方法、装置、设备及介质 |
US11550673B2 (en) | 2020-11-17 | 2023-01-10 | Google Llc | Virtual machines recoverable from uncorrectable memory errors |
US11816498B2 (en) * | 2021-01-21 | 2023-11-14 | Nutanix, Inc. | Early event-based notification for VM swapping |
US11977431B2 (en) | 2022-03-15 | 2024-05-07 | Google Llc | Memory error prevention by proactive memory poison recovery |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10240702A (ja) * | 1997-02-26 | 1998-09-11 | Sony Corp | 並列処理プロセッサおよびその処理方法 |
US7305592B2 (en) * | 2004-06-30 | 2007-12-04 | Intel Corporation | Support for nested fault in a virtual machine environment |
US8291409B2 (en) * | 2006-05-22 | 2012-10-16 | Microsoft Corporation | Updating virtual machine with patch on host that does not have network access |
US7757034B1 (en) | 2006-06-29 | 2010-07-13 | Parallels Software International, Inc. | Expansion of virtualized physical memory of virtual machine |
US7757035B2 (en) * | 2007-06-26 | 2010-07-13 | Intel Corporation | Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping |
US8819676B2 (en) | 2007-10-30 | 2014-08-26 | Vmware, Inc. | Transparent memory-mapped emulation of I/O calls |
US8244954B2 (en) | 2008-10-10 | 2012-08-14 | International Business Machines Corporation | On-demand paging-in of pages with read-only file system |
US8117373B2 (en) | 2009-04-30 | 2012-02-14 | Kimon Berlin | VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM |
US8788739B2 (en) | 2009-06-29 | 2014-07-22 | Hewlett-Packard Development Company, L.P. | Hypervisor-based management of local and remote virtual memory pages |
US8271450B2 (en) | 2009-10-01 | 2012-09-18 | Vmware, Inc. | Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory |
CN102129531B (zh) * | 2011-03-22 | 2013-07-24 | 北京工业大学 | 一种基于Xen的主动防御方法 |
US8694738B2 (en) | 2011-10-11 | 2014-04-08 | Mcafee, Inc. | System and method for critical address space protection in a hypervisor environment |
CN102736969B (zh) * | 2012-05-22 | 2014-12-17 | 中国科学院计算技术研究所 | 一种针对硬件虚拟化的内存监控方法和系统 |
US8914458B2 (en) | 2012-09-27 | 2014-12-16 | Mellanox Technologies Ltd. | Look-ahead handling of page faults in I/O operations |
-
2014
- 2014-05-28 US US14/289,163 patent/US9507727B2/en active Active
- 2014-07-02 ES ES14882801.5T patent/ES2639500T3/es active Active
- 2014-07-02 WO PCT/RO2014/000018 patent/WO2015152747A2/en active Application Filing
- 2014-07-02 JP JP2016527974A patent/JP6411494B2/ja active Active
- 2014-07-02 SG SG11201510735RA patent/SG11201510735RA/en unknown
- 2014-07-02 AU AU2014389571A patent/AU2014389571B2/en active Active
- 2014-07-02 CA CA2915646A patent/CA2915646C/en active Active
- 2014-07-02 RU RU2016104469A patent/RU2659472C2/ru active
- 2014-07-02 EP EP14882801.5A patent/EP3022648B8/en active Active
- 2014-07-02 CN CN201480040376.3A patent/CN105393229B/zh active Active
- 2014-07-02 KR KR1020167000715A patent/KR101955189B1/ko active IP Right Grant
-
2015
- 2015-12-15 IL IL24312215A patent/IL243122B/en active IP Right Grant
-
2016
- 2016-04-22 HK HK16104630.0A patent/HK1216679A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
SG11201510735RA (en) | 2016-02-26 |
RU2016104469A (ru) | 2017-08-22 |
RU2659472C2 (ru) | 2018-07-02 |
EP3022648B8 (en) | 2017-08-02 |
KR20160033689A (ko) | 2016-03-28 |
CN105393229B (zh) | 2019-01-18 |
HK1216679A1 (zh) | 2016-11-25 |
CN105393229A (zh) | 2016-03-09 |
WO2015152747A2 (en) | 2015-10-08 |
JP6411494B2 (ja) | 2018-10-24 |
EP3022648A2 (en) | 2016-05-25 |
KR101955189B1 (ko) | 2019-03-08 |
CA2915646A1 (en) | 2015-10-08 |
WO2015152747A3 (en) | 2015-12-03 |
AU2014389571B2 (en) | 2019-05-09 |
US20150026807A1 (en) | 2015-01-22 |
EP3022648B1 (en) | 2017-06-14 |
US9507727B2 (en) | 2016-11-29 |
IL243122B (en) | 2019-11-28 |
JP2016525255A (ja) | 2016-08-22 |
CA2915646C (en) | 2020-08-25 |
AU2014389571A1 (en) | 2016-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
ES2639500T3 (es) | Inyección de error de página en máquinas virtuales para provocar mapeo de páginas de memoria intercambiada hacia fuera en memoria virtualizada de VM | |
ES2873229T3 (es) | Motor de introspección de memoria para la protección de integridad de máquinas virtuales | |
ES2925891T3 (es) | Filtrado de eventos para aplicaciones de seguridad de máquina virtual | |
US10043005B2 (en) | Systems and methods for application control in virtualized environments | |
ES2785350T3 (es) | Evaluación de procesos para la detección de programas malignos en máquinas virtuales | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
US7827550B2 (en) | Method and system for measuring a program using a measurement agent | |
JP2019503539A (ja) | 仮想マシンを監査するためのシステムおよび方法 | |
US20150379265A1 (en) | Systems And Methods For Preventing Code Injection In Virtualized Environments | |
Li et al. | Iso-UniK: lightweight multi-process unikernel through memory protection keys |