ES2873229T3 - Motor de introspección de memoria para la protección de integridad de máquinas virtuales - Google Patents
Motor de introspección de memoria para la protección de integridad de máquinas virtuales Download PDFInfo
- Publication number
- ES2873229T3 ES2873229T3 ES14713274T ES14713274T ES2873229T3 ES 2873229 T3 ES2873229 T3 ES 2873229T3 ES 14713274 T ES14713274 T ES 14713274T ES 14713274 T ES14713274 T ES 14713274T ES 2873229 T3 ES2873229 T3 ES 2873229T3
- Authority
- ES
- Spain
- Prior art keywords
- memory
- software object
- target software
- page
- host system
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/0877—Cache access modes
- G06F12/0882—Page mode
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1466—Key-lock mechanism
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
- G06F12/1458—Protection against unauthorised use of memory or access to memory by checking the subject access rights
- G06F12/1491—Protection against unauthorised use of memory or access to memory by checking the subject access rights in a hierarchical protection system, e.g. privilege levels, memory rings
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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 OR CALCULATING; 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)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
Un sistema (10) anfitrión que comprende al menos un procesador (12) configurado para ejecutar un sistema (34) operativo configurado para asignar una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor (30) se ejecuta en el sistema (10) anfitrión, en donde la memoria física virtualizada se divide en páginas, siendo una página la unidad más pequeña de memoria asignada individualmente entre la memoria física virtualizada y una memoria (14) física del sistema (10) anfitrión; y en donde el sistema anfitrión está caracterizado por que posee al menos un procesador (12) configurado adicionalmente para ejecutar un módulo (46) de dotación de protección configurado, en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware, cuando el objeto de software de destino satisface el criterio de selección, para cambiar una asignación de memoria del objeto de software de destino, en donde cambiar la asignación de memoria comprende asegurarse de que cualquier página que contenga al menos parte del objeto de software de destino está reservada para el objeto de software de destino; en donde el sistema anfitrión comprende adicionalmente un motor (40) de introspección de memoria conectado al módulo (46) de dotación de protección, en donde el motor de introspección de memoria está configurado, en respuesta al módulo de dotación de protección que cambia la asignación de memoria, para proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino; en donde el motor de introspección de memoria está configurado además para: determinar si el objeto de software de destino se ha inicializado y, en respuesta a ello, cuando el objeto de software de destino se ha inicializado, proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino.
Description
DESCRIPCIÓN
Motor de introspección de memoria para la protección de integridad de máquinas virtuales
Antecedentes
La invención se refiere a sistemas y métodos para proteger sistemas computacionales frente a malware y, en particular, a sistemas antimalware que emplean tecnología de virtualización de hardware.
El software malicioso, también conocido como malware, afecta a una gran cantidad de sistemas computacionales en todo el mundo. En sus múltiples formas, como virus informáticos, gusanos y rootkits, el malware supone una amenaza grave para millones de usuarios de ordenadores, haciéndolos vulnerables a la pérdida de datos e información sensible, robo de identidad y pérdida de productividad, entre otros.
La tecnología de virtualización de hardware permite la creación de entornos informáticos simulados comúnmente conocidos como máquinas virtuales, que se comportan en muchos aspectos como sistemas computacionales físicos. En aplicaciones típicas como la consolidación de servidores y la infraestructura como servicio (IAAS), varias máquinas virtuales pueden ejecutarse simultáneamente en la misma máquina física, compartiendo los recursos de hardware entre ellas, reduciendo así la inversión y los costes operativos. Cada máquina virtual puede ejecutar su propio sistema operativo y/o aplicaciones de software, independientemente de otras máquinas virtuales. Debido a la constante proliferación de malware, cada máquina virtual que opera en dicho entorno requiere potencialmente protección contra malware.
Una solución de virtualización comúnmente utilizada en la técnica comprende un hipervisor, también conocido como monitor de máquina virtual, que consiste en una capa de software que opera entre el hardware informático y el sistema operativo (SO) de una máquina virtual, y al que se asignan más privilegios de procesador que el respectivo sistema operativo. Las operaciones antimalware se pueden realizar en el nivel de privilegios del hipervisor. Una manera a modo de ejemplo de proteger una máquina virtual frente a software malicioso se describe en la Solicitud de Patente de EE.UU. N° 2007/0055837 A1 de P. Rajagopal y otros, titulada “Protección de memoria en una partición virtual” ("Memory protection within a virtual partition"), que ilustra un método para monitorizar y controlar el acceso a la memoria limitando el acceso a la memoria a un agente de software registrado específico. Aunque estas configuraciones pueden facilitar la detección y prevención de malware, introducen una capa adicional de complejidad y pueden conllevar importantes costes computacionales.
Existe un interés considerable en desarrollar soluciones antimalware para plataformas de virtualización de hardware, soluciones que sean robustas y escalables, con una sobrecarga informática mínima.
Sumario
Según un aspecto, un sistema anfitrión comprende al menos un procesador configurado para ejecutar un sistema operativo y un módulo de dotación de protección. El sistema operativo está configurado para asignar una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor se ejecuta en el sistema anfitrión. La memoria física virtualizada se divide en páginas, de manera que una página es la unidad más pequeña de memoria asignada individualmente entre la memoria física virtualizada y una memoria física del sistema anfitrión. El módulo de dotación de protección se configura, en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware, cuando el objeto de software de destino satisface el criterio de selección, para cambiar una asignación de memoria del objeto de destino, en donde cambiar la asignación de memoria comprende asegurar que cualquier página que contenga al menos parte del objeto de software de destino esté reservada para el objeto de software de destino.
Según otro aspecto, un método comprende emplear al menos un procesador de un sistema anfitrión para formar un sistema operativo configurado para asignar una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor se ejecuta en el sistema anfitrión. La memoria física virtualizada se divide en páginas, de manera que una página es la unidad más pequeña de memoria asignada individualmente entre la memoria física virtualizada y una memoria física del sistema anfitrión. El método comprende además, en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware, cuando el objeto de software de destino satisface el criterio de selección, emplear el al menos un procesador para cambiar una asignación de memoria del objeto de software de destino, en donde cambiar la asignación de memoria comprende asegurarse de que cualquier página que contenga al menos parte del objeto de software de destino esté reservada para el objeto de software de destino.
Según otro aspecto, un medio no transitorio legible por ordenador codifica instrucciones que, cuando son ejecutadas por al menos un procesador de un sistema anfitrión, hacen que el al menos un procesador asigne una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor se ejecuta en el sistema anfitrión. La memoria física virtualizada se divide en páginas, de manera que una página es la unidad más pequeña de memoria asignada
individualmente entre la memoria física virtualizada y una memoria física del sistema anfitrión. Las instrucciones además hacen que el al menos un procesador cambie una asignación de memoria del objeto de software de destino en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware. El cambio en la asignación de memoria se realiza cuando el objeto de software de destino satisface el criterio de selección. Cambiar la asignación de memoria comprende asegurarse de que cualquier página que contenga al menos parte del objeto de software de destino esté reservada para el objeto de software de destino. La invención se expone en las reivindicaciones independientes anexas. Las realizaciones ventajosas se definen mediante las reivindicaciones dependientes anexas.
Breve descripción de los dibujos
Los aspectos y ventajas anteriores de la presente invención se comprenderán mejor al leer la descripción detallada que sigue y al hacer referencia a los dibujos, en los que:
La Fig. 1 muestra una configuración de hardware a modo de ejemplo de un sistema computacional anfitrión protegido contra malware de acuerdo con algunas realizaciones de la presente invención.
La Fig. 2 muestra un conjunto a modo de ejemplo de máquinas virtuales expuestas por un hipervisor que se ejecuta en el sistema anfitrión de la Fig. 1 según algunas realizaciones de la presente invención.
La Fig. 3 ilustra una jerarquía de objetos de software a modo de ejemplo que se ejecutan en el sistema anfitrión en varios niveles de privilegios del procesador, que incluye un conjunto de objetos protegidos contra malware de acuerdo con algunas realizaciones de la presente invención.
La Fig. 4 muestra un mapeo de direcciones de memoria a modo de ejemplo en la configuración del sistema de la Fig. 2, según algunas realizaciones de la presente invención.
La Fig. 5 muestra una asignación de memoria a modo de ejemplo, en la que un espacio de memoria física virtualizada se divide en páginas y en la que se asigna una sección distinta de memoria a cada uno de una pluralidad de objetos de software.
La Fig. 6 ilustra una asignación de memoria a modo de ejemplo, en la que una página se asigna exclusivamente a un objeto de software protegido de acuerdo con algunas realizaciones de la presente invención.
La Fig. 7 muestra una secuencia a modo de ejemplo de pasos llevados a cabo por el motor de introspección de memoria para proteger una máquina virtual de acuerdo con algunas realizaciones de la presente invención.
La Fig. 8 muestra una secuencia de pasos a modo de ejemplo llevados a cabo por una realización del módulo de dotación de protección para modificar la asignación de memoria para un objeto de software de destino.
La Fig. 9 muestra una secuencia de pasos a modo de ejemplo llevados a cabo por otra realización del módulo de dotación de protección para modificar la asignación de memoria para un objeto de software de destino.
La Fig. 10 muestra una secuencia de pasos a modo de ejemplo llevados a cabo por el módulo de dotación de protección para modificar una desasignación de memoria para un objeto de software de destino de acuerdo con algunas realizaciones de la presente invención.
Descripción detallada de realizaciones preferidas
En la siguiente descripción, se entiende que todas las conexiones entre estructuras citadas pueden ser conexiones operativas directas o conexiones operativas indirectas a través de estructuras intermedias. Un conjunto de elementos incluye uno o más elementos. Se entiende que cualquier mención a un elemento se refiere a al menos un elemento. Una pluralidad de elementos incluye al menos dos elementos. A menos que se requiera lo contrario, cualquier paso del método descrito no necesita realizarse necesariamente en un orden ilustrado particular. Un primer elemento (por ejemplo, datos) derivado de un segundo elemento abarca un primer elemento igual al segundo elemento, así como un primer elemento generado procesando el segundo elemento y opcionalmente otros datos. Tomar una determinación o decisión según un parámetro engloba tomar la determinación o decisión según el parámetro y opcionalmente según otros datos. A menos que se especifique lo contrario, un indicador de cierta cantidad/datos puede ser la propia cantidad/datos, o bien un indicador diferente de la propia cantidad/datos. A menos que se especifique lo contrario, una página representa la unidad más pequeña de memoria física virtualizada asignada individualmente a una memoria física de un sistema anfitrión. A menos que se especifique lo contrario, se dice que una sección de memoria física virtualizada abarca un conjunto de páginas cuando cada página del conjunto de páginas contiene una parte de la sección respectiva. Reservar una página para un objeto de destino comprende asignar la página completa al objeto de destino y, si no es así, asegurarse de que la página respectiva no aloje partes de objetos distintos del objeto de destino. Los medios legibles por ordenador abarcan medios no transitorios como medios de almacenamiento magnéticos, ópticos y semiconductores (por ejemplo, discos duros, discos ópticos, memoria flash, memoria DRAM), así como enlaces de comunicaciones como cables conductores y enlaces de fibra óptica. Según algunas realizaciones, la presente invención proporciona, entre otros, sistemas computacionales que comprenden hardware (por ejemplo,
uno o más procesadores) programado para llevar a cabo los métodos descritos en este documento, así como Instrucciones de codificación de medios legibles por ordenador para llevar a cabo los métodos descritos en este documento.
La siguiente descripción ilustra realizaciones de la invención a modo de ejemplo y no necesariamente a modo de limitación.
La Fig. 1 muestra una configuración de hardware a modo de ejemplo de un sistema 10 anfitrión según algunas realizaciones de la presente invención. El sistema 10 anfitrión puede representar un dispositivo computacional corporativo, tal como un servidor empresarial, o un dispositivo de usuario final, tal como un ordenador personal o un teléfono inteligente, entre otros. Otros sistemas anfitriones incluyen dispositivos de entretenimiento tales como televisores y consolas de juegos, o cualquier otro dispositivo que posea una memoria y un procesador que admita la virtualización y requiera protección contra malware. La Fig. 1 muestra un sistema computacional con fines ilustrativos; otros dispositivos cliente, como teléfonos móviles o tabletas, pueden tener una configuración diferente. En algunas realizaciones, el sistema 10 comprende un conjunto de dispositivos físicos, incluido un procesador 12, una unidad 14 de memoria, un conjunto 16 de dispositivos de entrada, un conjunto 18 de dispositivos de salida, un conjunto 20 de dispositivos de almacenamiento, y un conjunto 22 de adaptadores de red, todos ellos conectados mediante un conjunto 24 de buses.
En algunas realizaciones, el procesador 12 comprende un dispositivo físico (por ejemplo, un circuito integrado de múltiples núcleos) configurado para ejecutar operaciones computacionales y/o lógicas con un conjunto de señales y/o datos. En algunas realizaciones, tales operaciones lógicas se envían al procesador 12 en forma de una secuencia de instrucciones del procesador (por ejemplo, código de máquina u otro tipo de software). La unidad 14 de memoria puede comprender medios volátiles legibles por ordenador (por ejemplo, memoria RAM) que almacenan datos/señales a las que se accede mediante, o que son generadas por, el procesador 12 en el curso de la ejecución de instrucciones. Los dispositivos 16 de entrada pueden incluir teclados de ordenador, ratones y micrófonos, entre otros elementos, incluidas las respectivas interfaces de hardware y/o adaptadores que permiten al usuario introducir datos y/o instrucciones en el sistema 10. Los dispositivos 18 de salida pueden incluir dispositivos de visualización tales como monitores y altavoces, entre otros elementos, así como interfaces/adaptadores de hardware tales como tarjetas gráficas, lo que permite que el sistema 10 pueda comunicar datos a un usuario. En algunas realizaciones, los dispositivos 16 de entrada y los dispositivos 18 de salida pueden compartir un elemento común de hardware, como en el caso de los dispositivos de pantalla táctil. Los dispositivos 20 de almacenamiento incluyen medios legibles por ordenador que permiten el almacenamiento, lectura y escritura no volátiles de instrucciones de software y/o datos. Los dispositivos 20 de almacenamiento a modo de ejemplo incluyen discos ópticos y magnéticos y dispositivos de memoria flash, así como medios extraíbles tales como unidades y discos CD y/o DVD. El conjunto 22 de adaptadores de red habilita al sistema 10 para conectarse a una red informática y/o a otros dispositivos/sistemas computacionales. Los buses 24 representan colectivamente la pluralidad de buses de sistema, periféricos y chipset, y/o todos los demás circuitos que permiten la intercomunicación de dispositivos 12-22 del sistema 10 anfitrión. Por ejemplo, los buses 24 pueden comprender el northbridge que conecta el procesador 12 a la memoria 14, y/o el southbridge que conecta el procesador 12 de conexión a los dispositivos 16-22, entre otros.
La Fig. 2 muestra un conjunto de máquinas 32a-b virtuales huéspedes a modo de ejemplo que se ejecutan en el sistema 10 anfitrión y expuestas por un hipervisor 30 según algunas realizaciones de la presente invención. Las máquinas virtuales (MV) se conocen comúnmente en la técnica como emulaciones mediante software de máquinas físicas/sistemas computacionales reales, cada una de ellas capaz de ejecutar su propio sistema operativo y software independientemente de otras MV. El hipervisor 30 comprende software que permite multiplexar (compartir) mediante múltiples máquinas virtuales los recursos de hardware del sistema 10 anfitrión, tales como operaciones del procesador, memoria, almacenamiento, entrada/salida y dispositivos de red. En algunas realizaciones, el hipervisor 30 permite que varias máquinas virtuales y/o sistemas operativos (SO) se ejecuten simultáneamente en el sistema 10 anfitrión, con varios grados de aislamiento. Para habilitar tales configuraciones, el software que forma parte del hipervisor 30 puede crear una pluralidad de dispositivos virtualizados, es decir, emulados mediante software, de manera que cada dispositivo virtualizado emula un dispositivo de hardware físico del sistema 10, tal como el procesador 12 y la memoria 14, entre otros. El hipervisor 30 puede además asignar un conjunto de dispositivos virtuales a cada MV que opere en el sistema 10 anfitrión. Por lo tanto, cada MV 32a-b opera como si poseyera su propio conjunto de dispositivos físicos; es decir, como un sistema computacional más o menos completo. Ejemplos de hipervisores populares incluyen MVware vSphere ™ de MVware Inc. y el hipervisor Xen de código abierto, entre otros.
En algunas realizaciones, el hipervisor 30 incluye un motor 40 de introspección de memoria, configurado para realizar operaciones antimalware tal como se describe más adelante, y un módulo 46 de dotación de protección conectado al motor 40 de introspección de memoria. El motor 40 y módulo 46 puede estar incorporados en el hipervisor 30, o bien pueden proporcionarse como componentes de software distintos e independientes del hipervisor 30, pero ejecutándose sustancialmente al mismo nivel de privilegios de procesador que el hipervisor 30. Se puede configurar un solo motor 40 para proteger contra malware varias máquinas virtuales que se ejecutan en el sistema 10 anfitrión.
Mientras que, en aras de la simplicidad, la Fig. 2 muestra solo dos máquinas 32a-b virtuales, el sistema 10 anfitrión puede operar un gran número, por ejemplo cientos, de MV, y el número de tales MV puede cambiar durante el funcionamiento del sistema 10 anfitrión. En algunas realizaciones, cada MV 32a-b ejecuta un sistema operativo 34ab huésped y/o un conjunto de aplicaciones 42a-b y 42c-d de software, respectivamente, de forma simultánea e independiente de otras máquinas virtuales que se ejecutan en el sistema 10 anfitrión. Cada SO 34a-b comprende software que proporciona una interfaz para el hardware (virtualizado) de la respectiva MV 32a-b, y actúa como anfitrión para aplicaciones 42a-b y 42c-d de software, respectivamente, ejecutándose en el sistema operativo respectivo. Los sistemas 34a-b operativos pueden comprender cualquier sistema operativo ampliamente disponible, tal como Windows®, MacSO®, Linux®, iSO® o Android™, entre otros. Las aplicaciones 42a-d pueden incluir procesadores de texto, procesadores de imágenes, bases de datos, navegadores, aplicaciones de comunicación electrónica y aplicaciones antimalware, entre otras.
La Fig. 3 ilustra una jerarquía de objetos de software que se ejecutan en el sistema 10 anfitrión según algunas realizaciones de la presente invención. La Fig. 3 se representa desde la perspectiva de los niveles de privilegio del procesador, también conocidos en la técnica como capas o anillos de protección. En algunas realizaciones, el hipervisor 30 toma el control del procesador 12 en el nivel más privilegiado (normalmente conocido como modo raíz, o como MVXroot en plataformas Intel), creando así una plataforma de virtualización de hardware presentada como una máquina 32 virtual a otro software que se ejecuta en el sistema 10 anfitrión. Un sistema 34 operativo, tal como el SO 34a-b de la Fig. 2, se ejecuta dentro del entorno virtual de MV 32, de manera que el SO 34 tiene privilegios de procesador (por ejemplo, modo núcleo o anillo 0 en plataformas Intel) más bajos que el hipervisor 30. El SO 34 puede incluir además un objeto 36a de sistema operativo protegido, ejecutándose en el nivel de privilegios del sistema operativo. En algunas realizaciones, el objeto 36a de sistema operativo protegido comprende una estructura de datos seleccionada para la protección contra malware, tal como un objeto controlador, como se muestra más abajo. Un conjunto 42e-f de aplicaciones, tales como las aplicaciones 42a-d de la Fig. 2, se ejecutan a un nivel de privilegios de procesador (por ejemplo, modo de usuario en plataformas Intel) más bajo que el nivel de privilegios del sistema 34 operativo.
En algunas realizaciones, una aplicación 44 antimalware se ejecuta en el sistema 34 operativo, normalmente en el mismo nivel de privilegios de procesador que las aplicaciones 42e-f. Aplicaciones 44 antimalware a modo de ejemplo incluyen programas antivirus o conjuntos de software más completos que comprenden antivirus, antispyware y otras aplicaciones de seguridad informática. En algunas realizaciones, un controlador 36b antimalware se ejecuta a un nivel de procesador similar al del sistema operativo 34. El controlador 36b proporciona funcionalidad a la aplicación 44 antimalware, por ejemplo para escanear la memoria en busca de firmas de malware y/o para detectar el comportamiento indicativo de malware de los objetos de software que se ejecutan en el sistema 34 operativo.
En algunas realizaciones, el motor 40 de introspección se ejecuta sustancialmente al mismo nivel de privilegios que el hipervisor 30, y está configurado para realizar introspección de máquinas virtuales tales como la MV 32. La introspección de una MV, o de un objeto de software que se ejecuta en la MV respectiva, puede comprender analizar un comportamiento del objeto de software, determinar y/o acceder a las direcciones de memoria de dichos objetos de software, restringir el acceso de ciertos procesos a un contenido de la memoria ubicado en dichas direcciones y analizar dicho contenido, entre otras acciones. En algunas realizaciones, los objetos de software a los que se dirige el motor 40 de introspección comprenden procesos, secuencias de instrucciones, registros y estructuras de datos como tablas de páginas y objetos de controlador, entre otros.
En una operación a modo de ejemplo, el motor 40 de introspección de memoria puede establecer un área 38 protegida que consta de objetos de software protegidos contra malware. La protección de tales objetos puede comprender restringir el acceso a una región de memoria que almacena datos pertenecientes a los respectivos objetos. Puesto que el hipervisor 30 tiene control sobre el espacio de memoria de MV 32, proteger ciertas regiones de memoria utilizadas por el sistema 34 operativo puede lograrse, por ejemplo, haciendo que el hipervisor 30 establezca los derechos de acceso adecuados a las respectivas regiones de memoria. En algunas realizaciones, el área 38 protegida incluye el objeto 36a de sistema operativo protegido y el controlador 36b antimalware. Cuando el SO 34 es un sistema operativo Linux, objetos 36a de SO protegidos a modo de ejemplo incluyen: el núcleo (código de solo lectura y/o datos tales como sys_call_table), registros de control sysenter/syscall y direcciones int 0x80 (syscall) y/o int 0x01, entre otros. Los objetos protegidos a modo de ejemplo de un sistema operativo Windows incluyen: el núcleo (código de solo lectura y/o datos, incluida la Tabla de Distribución de Servicios de Sistema SSDT), varias tablas de descriptores (por ejemplo, interrupción, general y/o local), registros de control de sysenter/syscall y/u otros registros tales como un registro de Tabla de Descriptores de Interrupción (IDTR), un registro de Tabla de Descriptores Globales (GDTR) y un registro de Tabla de Descriptores Locales (LDTR). En algunas realizaciones, el objeto 36a del sistema operativo protegido también puede comprender objetos de controlador específicos y tablas de direccionamiento de E/S rápidas (como, por ejemplo, disk, atapi, clfs, fltmgr, ntfs, fastfat, iastor, iastorv), entre otras. Otros objetos 36a de SO protegidos puede incluir ciertos registros específicos de modelo (MSR), tales como ia32_systenter_eip, ia32_sysenter_esp, ia32_efer, ia32_star, ia32_lstar y ia32_gs_base. En algunas realizaciones, el motor 40 de introspección también protege las tablas de páginas para evitar el redireccionamiento no autorizado a direcciones que albergan códigos maliciosos.
Las máquinas virtuales normalmente operan con una memoria física virtualizada; es decir, con una representación virtual de la memoria 14 física real del sistema 10 anfitrión. La memoria física virtualizada comprende un espacio contiguo de direcciones virtualizadas, específico para cada MV 32a-b huésped, con partes de dicho espacio mapeadas a direcciones dentro de la memoria 14 física y/o dispositivos 20 de almacenamiento físico. En los sistemas configurados para admitir la virtualización, dicha asignación se logra normalmente mediante estructuras de datos
dedicadas controladas por el procesador 12, tales como tablas de páginas extendidas (EPT) o tablas de páginas anidadas (NPT). En tales sistemas, la memoria física virtualizada puede dividirse en unidades conocidas en la técnica como páginas, en donde una página que representa la unidad más pequeña de memoria física virtualizada mapeada individualmente a la memoria física a través de mecanismos como EPT y/o NPT; es decir, que el mapeo entre memoria física y memoria física virtualizada se realiza con granularidad de página. Por lo general, todas las páginas tienen un tamaño predeterminado, como por ejemplo 4 kilobytes, 2 megabytes, etc. La partición de la memoria física virtualizada generalmente se configura mediante el hipervisor 30. En algunas realizaciones, el hipervisor 30 también configura la EPT/NPT y por lo tanto el mapeo entre la memoria física y la memoria física virtualizada. Algunas configuraciones de hardware permiten que el hipervisor 30 controle selectivamente el acceso a los datos almacenados dentro de cada página, como por ejemplo estableciendo derechos de acceso de lectura y escritura a la página respectiva. Dichos derechos pueden establecerse, por ejemplo, modificando una entrada de la página respectiva dentro de la EPT o NPT. El hipervisor 30, por lo tanto, puede seleccionar qué objeto de software puede acceder a los datos almacenados en las direcciones dentro de cada página, y puede indicar qué operaciones están permitidas con los datos respectivos, como, por ejemplo, leer, escribir, etc. Un intento por parte de un objeto de software de llevar a cabo una operación, como leer datos de, o escribir datos en, una página a la que el objeto no tiene el derecho respectivo, puede desencadenar un evento de salida de la máquina virtual (por ejemplo, un evento de salida de MV en plataformas Intel). En algunas realizaciones, los eventos de salida de la máquina virtual transfieren el control del procesador desde la MV que ejecuta el objeto de software respectivo al hipervisor 30, evitando así el intento no autorizado de lectura/escritura.
En algunas realizaciones, el SO 34 configura un espacio de memoria virtual (también denominado espacio de direcciones lógicas) y expone dicho espacio de memoria virtual a una aplicación tal como las aplicaciones 42e-f y 44 de la Fig. 3, y/o a otro objeto de software, tal como los objetos 36a-b protegidos. En tales sistemas, el SO 34 configura y mantiene un mapeo entre dicho espacio de memoria virtual y la memoria física virtualizada de la MV 32, como por ejemplo utilizando un mecanismo de tabla de páginas. En algunas realizaciones, dicho espacio de memoria virtual también se divide en páginas, representando tales páginas la unidad más pequeña de memoria virtual asignada individualmente a la memoria física virtualizada por el SO 34 (el mapeo de memoria física virtual a virtualizada se realiza con granularidad de página).
La Fig. 4 ilustra un mapeo de direcciones de memoria a modo de ejemplo en una realización tal como la que se muestra en la Fig. 2. A un objeto de software, tal como la aplicación 42a o el SO 34a huésped, se le asigna un espacio 214a de direcciones virtual por parte del SO huésped 34a. Cuando el objeto de software respectivo intenta acceder a una dirección 50a de memoria a modo de ejemplo, la dirección 50a es traducida por el procesador virtualizado de la máquina 32a virtual huésped, de acuerdo con las tablas de páginas configuradas y controladas por el sistema 34a operativo huésped, a una dirección 50b dentro de un espacio de memoria 114a física virtualizada de la máquina 32a virtual. La dirección 50b también se conoce en la técnica como dirección física de huésped. El hipervisor 30, que configura y controla la memoria 114a física virtualizada, mapea entonces la dirección 50b a una dirección 50c dentro de la memoria 14 física del sistema 10 anfitrión, como por ejemplo usando medios EPT o NPT, como se discutió anteriormente.
Del mismo modo, un espacio 214b de memoria virtual está configurado por el sistema 34b operativo huésped para aplicaciones (como por ejemplo la 42c) u otros objetos de software que se ejecutan en la máquina 32b virtual huésped. Una dirección 50d virtual a modo de ejemplo dentro del espacio 214b es traducida por el procesador virtualizado de la máquina 32b virtual huésped, de acuerdo con las tablas de traducción configuradas y controladas por el sistema 34b operativo huésped, a una dirección 50e dentro de un espacio 114b de memoria física virtualizada de la MV 32b huésped. La dirección 50e es mapeada adicionalmente por el hipervisor 30 a una dirección 50f dentro de la memoria 14 física.
En algunas realizaciones, el hipervisor 30 configura su propio espacio 214c de memoria virtual que comprende una representación de la memoria 14 física, y emplea un mecanismo de traducción (por ejemplo, tablas de páginas) para mapear direcciones en el espacio 214c a direcciones en la memoria 14 física. En la Fig. 4, tal mapeo a modo de ejemplo traduce una dirección 50g en una dirección 50h. Del mismo modo, direcciones como 50c y 50f en la memoria 14 física corresponden a direcciones 50k y 50m, respectivamente, dentro del espacio 214c de memoria virtual del hipervisor 30.
Una tarea esencial del SO 34a-b consiste en asignar dinámicamente secciones de memoria a objetos de software que se ejecutan en la respectiva MV 32a-b, y liberar dichas secciones para su reutilización cuando el proceso respectivo ya no las necesite. Tal asignación de memoria se puede ejecutar a nivel de memoria 214a-b virtual, o bien a nivel de la memoria 114a-b física virtualizada de la respectiva máquina virtual. La asignación y desasignación de memoria se realiza normalmente mediante funciones dedicadas de gestión de memoria del sistema operativo, tales como KeAllocatePoolWithTag y KeFreePoolWithTag en Windows®.
Debido a los mecanismos de mapeo de memoria discutidos anteriormente, la asignación de memoria para un objeto de destino siempre da como resultado la asignación de una sección de memoria física virtualizada de la respectiva MV al objeto de destino. El tamaño de la sección respectiva puede ser solo una fracción de una página, o más de una página, según el tamaño de la página y los requisitos de memoria del objeto de software respectivo. En lo que sigue, se dice que una sección abarca un conjunto de páginas cuando cada página del conjunto de páginas contiene una
parte de la sección respectiva. A varios objetos se les pueden asignar distintas secciones de la misma página. La Fig. 5 muestra una región de memoria física virtualizada a modo de ejemplo dividida en una pluralidad de páginas 26a-d, y una asignación de memoria a modo de ejemplo, en la que dos secciones 52 y 54, cada una asignada a un objeto de software distinto, abarcan la misma página 26b. Otro tramo 56 a modo de ejemplo abarca dos páginas 26c-d.
Por el contrario, la Fig. 6 muestra una asignación de memoria a modo de ejemplo según algunas realizaciones de la presente invención. Como se muestra en detalle a continuación, cuando un objeto de destino requiere protección contra malware, como por ejemplo cuando el objeto de destino es un objeto controlador u otro objeto que pertenece al área 38 protegida, algunas realizaciones del módulo 46 de dotación de protección modifican la asignación de memoria para el objeto de destino, de modo que cada página que contenga una parte del objeto de destino esté reservada para el objeto de destino.
Una persona experta en la técnica apreciará que la reserva de un conjunto de páginas para un objeto de destino se puede lograr de varias formas. En algunas realizaciones, reservar una página comprende asignar la página completa al objeto de destino, tal como se muestra en el ejemplo de la Fig. 6, en donde la sección 58 ocupa toda la página 26f. Tal asignación exclusiva puede lograrse, por ejemplo, cambiando el tamaño de la sección asignada al objeto respectivo a un nuevo tamaño igual a un múltiplo entero del tamaño de página, tal como se muestra con más detalle a continuación. Por el contrario, en el mismo ejemplo de la Fig. 6, a un objeto de software no protegido se le asigna una sección 60 que consta de solo una fracción de otra página 26g. En otras realizaciones, reservar un conjunto de páginas para el objeto de destino no incluye necesariamente modificar el tamaño del objeto de destino o asignar el conjunto completo de páginas al objeto de destino, pero puede lograrse de otro modo asegurando que a ningún objeto excepto el objeto de destino se le asigna espacio de memoria dentro del respectivo conjunto de páginas. Por ejemplo, reservar una página para el objeto de destino puede comprender apartar un conjunto de páginas vacías, por ejemplo tras la inicialización del sistema 34 operativo, y asignar (o mover) el objeto dentro del respectivo conjunto de páginas vacías, tal como se muestra con más detalle a continuación.
La Fig. 7 muestra una secuencia a modo de ejemplo de pasos llevados a cabo por el motor 40 de introspección de memoria según algunas realizaciones de la presente invención. El motor 40 puede configurarse para inspeccionar y/o proteger una pluralidad de máquinas virtuales que se ejecutan simultáneamente en el sistema 10 anfitrión. Los pasos ilustrados en la Fig. 7 pueden repetirse para cada una de estas máquinas virtuales. En un paso 102, motor 40 detecta una inicialización del sistema 34 operativo. En algunas realizaciones, el paso 102 comprende escuchar, desde el nivel de hipervisor 30, eventos de procesador indicativos de inicialización del sistema operativo. Las instrucciones del procesador que llevan a cabo operaciones de inicialización del sistema operativo generalmente requieren privilegios de procesador de núcleo, como, por ejemplo, de anillo 0 en plataformas Intel. Cuando se ejecutan desde el nivel de privilegios del sistema 34 operativo, tales instrucciones pueden desencadenar un evento de salida de la máquina virtual, como un evento de salida de MV en plataformas Intel, que transfiere el control del procesador 12 desde el SO 34 al hipervisor 30. Por lo tanto, los eventos de salida de la máquina virtual pueden ser analizados por el hipervisor 30 y/o por el motor 40 de introspección. Ejemplos de eventos y/o instrucciones de procesador que indican la inicialización del sistema operativo comprenden la inicialización de la interrupción y la tabla de descriptores globales, que se llevan a cabo al principio de la inicialización del sistema operativo Windows, mediante el uso de instrucciones privilegiadas como LIDT y/o LGDT. Otros ejemplos de eventos/instrucciones que indican la inicialización del sistema operativo incluyen escribir en los registros específicos de modelo SYSENTER y/o SYSCALL, mediante el uso de la instrucción de máquina WRMSR, que se lleva a cabo inmediatamente después de que la imagen del núcleo del sistema operativo se haya cargado en la memoria. Otros ejemplos adicionales comprenden la inicialización de otros registros específicos de modelo programados por SO 34, tales como los registros de configuración de verificación de máquina y los registros base FS/GS, entre otros. En algunas realizaciones, la detección de tales eventos/instrucciones indica que el SO 34 se ha inicializado.
En un paso 104, algunas realizaciones del motor 40 de introspección de memoria identifican un tipo de sistema operativo que se esté ejecutando o que se esté inicializando en la respectiva máquina virtual huésped. Los tipos de sistemas operativos a modo de ejemplo incluyen Windows, Linux, MacSO y Android, entre otros. El tipo de sistema operativo puede comprender un indicador de nombre, como Windows, y un indicador de versión, como 7, Home o Enterprise, entre otros. En algunas realizaciones, el paso 104 comprende identificar el tipo de SO de acuerdo con un contenido de un Registro Específico de Modelo (MSR) de la respectiva MV huésped, o con un contenido de una sección de memoria a la que apunta el MSR respectivo. En algunas realizaciones, el motor 40 puede determinar el nombre del sistema operativo de acuerdo con los datos que se escriben en dichos MSR mediante instrucciones interceptadas en el paso 102. Por ejemplo, motor 40 puede interceptar instrucciones para escribir en un MSR SYSENTER o en un MSR SYSCALL, y determinar el tipo de SO que se está ejecutando actualmente, o que se está inicializando actualmente, de acuerdo con un parámetro de dicha instrucción de escritura. Otros registros a modo de ejemplo, que pueden proporcionar información sobre el nombre del sistema operativo, incluyen registros de control, Tabla de Descriptores de Interrupción (IDT) y Tabla de Descriptores Globales (GDT), entre otros. Para identificar el tipo de sistema operativo según la escritura de MSR, el motor 40 de introspección puede utilizar además la coincidencia de patrones con una biblioteca predeterminada de manejadores rápidos de llamadas al sistema específicas para cada sistema operativo (por ejemplo, llamadas al sistema manejadas de acuerdo con un contenido de SYSCALL o SYSENTER MSR). Estas bibliotecas rápidas de llamadas al sistema se pueden proporcionar con un motor 40 de introspección de memoria, y pueden mantenerse actualizadas mediante actualizaciones de software periódicas o bajo demanda.
En algunas realizaciones, se puede obtener un indicador de versión (tal como un nombre de versión, número de compilación, etc.) analizando ciertas estructuras de datos del núcleo específicas para el tipo de SO respectivo. Las estructuras de datos a modo de ejemplo que permiten la identificación de la versión del SO son ciertos símbolos exportados del núcleo de Linux o ciertos símbolos exportados del núcleo de Windows, como el NtBuildNumber, entre otros.
En un paso 106, el motor 40 de introspección de memoria puede llamar al módulo 46 de dotación de protección para realizar operaciones de protección de memoria, en preparación para que el motor 40 aplique protección de integridad. En algunas realizaciones, tales operaciones de protección de memoria comprenden modificar una asignación de un objeto de destino seleccionado para protegerlo contra malware, de modo que todas las páginas que contienen partes del objeto de destino están reservadas para el objeto de destino respectivo. En algunas realizaciones, el paso 106 puede incluir el establecimiento de un conjunto reservado de páginas de memoria no asignadas, que luego se asignarán exclusivamente a los objetos seleccionados para protección contra malware. Para establecer tal conjunto reservado, el módulo 46 de dotación de protección puede llamar a una función de asignación de memoria del sistema operativo nativo para asignar el conjunto respectivo a un objeto de software ficticio de tamaño predeterminado (por ejemplo, de 20 MB). El módulo 46, por lo tanto, puede garantizar que el conjunto de memoria respectivo no se utilice en asignaciones adicionales realizadas por las funciones de gestión de memoria del SO nativo. La funcionalidad del módulo 46 se detalla más a continuación, en relación con las Figs. 8-10.
En un paso 108, el motor 40 de introspección de memoria selecciona un objeto de destino para protegerlo. En algunas realizaciones, el paso 108 comprende la identificación de objetos de software que requieren protección contra malware (ver área 38 protegida en la Fig. 3), según el tipo de SO determinado en pasos 102-104. Los objetos a modo de ejemplo destinados a la protección son los objetos del controlador del sistema operativo y el controlador 36b antimalware, entre otros. Para identificar tales objetos, el motor 40 de introspección de memoria puede mantener una lista de objetos específicos del sistema operativo que requieren protección contra malware; la lista puede mantenerse actualizada mediante actualizaciones de software periódicas y/o bajo demanda. En algunas realizaciones, el motor 40 puede interceptar cada intento por parte del sistema 34 operativo para cargar un controlador y realizar una serie de comprobaciones de integridad y/o firma del controlador respectivo. Dichas comprobaciones pueden incluir hacer coincidir un código de comprobación de una parte del controlador respectivo con una biblioteca de códigos de comprobación determinados para controladores conocidos, y pueden permitir la identificación del controlador 36b antimalware entre una pluralidad de controladores que el sistema 34 operativo está usando y/o está intentando cargar. Una vez identificado, el controlador 36b puede estar protegido junto con otros componentes del sistema operativo, tal como se muestra con más detalle a continuación.
Un paso 110 espera hasta que se haya inicializado el objeto de destino. Por ejemplo, cuando se inicializa un controlador, el SO 34 realiza una serie de escrituras de configuración legítimas en el espacio de memoria asignado al controlador respectivo o bien a otros objetos de software seleccionados según el controlador respectivo o según un dispositivo que el controlador respectivo está configurado para controlar; el motor 40 puede permitir que tengan lugar tales escrituras legítimas como parte del paso 110. Para determinar si el objeto de destino se ha inicializado, algunas realizaciones del motor 40 pueden escuchar eventos y/o instrucciones del procesador que indiquen la inicialización del controlador. Ejemplos de tales eventos incluyen modificaciones a ciertas áreas del objeto respectivo, entre otros.
En un paso 112, motor 40 protege el objeto de destino respectivo frente a modificaciones no deseadas como, por ejemplo, aquellas causadas por software malicioso que intenta comprometer el sistema 34 operativo. Se conocen en la técnica varios de tales mecanismos de protección de la memoria. En algunas realizaciones, proteger el objeto de destino comprende proteger contra escritura el espacio de memoria asignado por el sistema 34 operativo al objeto de destino respectivo. Dicha protección contra escritura puede ser aplicada por el hipervisor 30 a petición del motor 40 de introspección de memoria, utilizando estructuras de datos como las EPT o NPT. Por ejemplo, el hipervisor 30 puede establecer las páginas de memoria asignadas al objeto de destino como de solo lectura, modificando los bits de derecho de acceso EPT/NPT de las páginas respectivas. Alternativamente, el hipervisor 30 puede interceptar cualquier intento de escribir en las páginas de memoria asignadas al objeto de destino y redirigir el intento respectivo al motor 40 de introspección de memoria para propósitos de análisis. Después de analizar el intento de escritura, el motor 40 de introspección de memoria puede decidir si permitir o denegar (eliminar) la operación de escritura respectiva. Los pasos 108-112 pueden repetirse para todos los objetos de destino que requieran protección contra malware.
En algunas realizaciones, las operaciones de protección de memoria realizadas por el módulo 46 de dotación de protección comprenden modificar una asignación de memoria de un objeto de software de destino seleccionado para protección contra malware, produciéndose dicha modificación antes de que el motor 40 aplique la protección de integridad del objeto de software respectivo, tal como se mostró anteriormente (Fig. 7, pasos 108-112). En algunas realizaciones, el módulo 46 modifica la asignación de memoria para que las páginas de memoria que contienen partes del objeto de destino se reserven para el objeto de destino respectivo. Modificar dicha asignación de memoria puede comprender modificar un resultado de ejecutar una función de gestión de memoria nativa del SO 34, y/o modificando la propia función de gestión de memoria respectiva. Las funciones de gestión de memoria nativa comprenden objetos de software proporcionados por el fabricante del sistema 34 operativo, de modo que las funciones nativas realizan operaciones de asignación y desasignación de memoria. Ejemplos de tales funciones son KeAllocatePoolWithTag y KeFreePoolWithTag, nativas del sistema operativo Windows.
En algunas realizaciones, el módulo 46 de dotación de protección identifica un conjunto de funciones de administración de memoria nativa de acuerdo con el tipo de sistema operativo determinado por el motor de introspección en el paso 104; por ejemplo, determinando las direcciones de memoria donde residen dichas funciones en la memoria de la máquina 32 virtual huésped respectiva. Para determinar dichas direcciones de memoria, el módulo 46 puede acceder a ciertas estructuras de datos, como las tablas de funciones exportadas de las imágenes binarias del núcleo (por ejemplo, Portable Executable en Windows, Executable and Linkable Formaten Linux).
Tras la identificación de las funciones de gestión de la memoria nativa, algunas realizaciones del módulo 46 pueden proceder a modificar dichas funciones, proporcionando funcionalidad adicional. Tales modificaciones pueden lograrse usando cualquier método de enganche conocido en la técnica. Por ejemplo, el módulo 46 puede aplicar un parche de redireccionamiento, tal como una instrucción MVCall o una instrucción JMP, sobrescrito o agregado a la función nativa respectiva. Otras realizaciones pueden modificar la entrada EPT de la función de gestión de memoria respectiva, para apuntar a una nueva dirección. En algunas realizaciones, el efecto de dichos parches y/o enganches de EPT es redirigir la ejecución de la función nativa a un fragmento de código proporcionado por el módulo 46 de dotación de protección; se proporciona a continuación una funcionalidad a modo de ejemplo de dicho código. Después del enganche, cuando el SO 34 intenta asignar memoria o desasignar memoria de un objeto de destino, el fragmento de código se ejecutará antes o en lugar del código de la función de gestión de memoria del sistema operativo nativo respectivo.
La Fig. 8 muestra una secuencia a modo de ejemplo de pasos que comprenden una modificación de una función de asignación de memoria del SO nativo, tal como KeAllocatePoolWithTag en Windows, según algunas realizaciones de la presente invención. La secuencia puede formar parte del módulo 46 de dotación de protección, y puede ejecutarse como resultado de la redirección realizada por el parche/enganche aplicado a la función de asignación de memoria respectiva. Un paso 122 aplica un criterio de selección para determinar si el objeto que solicita la asignación de memoria es apto para la protección contra malware. Tales determinaciones se pueden realizar, por ejemplo, de acuerdo con parámetros y/o argumentos de la respectiva llamada de función. Un criterio de selección a modo de ejemplo comprende seleccionar objetos según su tipo; por ejemplo, objetos de controlador. En una realización que ejecuta un sistema 34 operativo de la familia Windows, el tipo de objeto que se asigna puede determinarse de acuerdo con la etiqueta de asignación de la función de asignación de memoria nativa KeAllocatePoolWithTag. Por ejemplo, una etiqueta 'Driv' indica un objeto de controlador. Un criterio de selección alternativo comprende determinar si el objeto que solicita la asignación está en una lista de objetos destinados a la protección contra malware. Dicha lista puede incluir miembros del área 38 protegida (Fig. 3). En algunas realizaciones, un criterio de selección adicional comprende determinar si una asignación de memoria del objeto respectivo se puede modificar de forma segura mediante los métodos que se describen a continuación.
Un paso 124 determina si el objeto de destino cumple el criterio de selección para la protección contra malware. Si no es así, un paso 128 devuelve el control de la ejecución a la función de asignación de memoria nativa del sistema operativo respectivo. Cuando se selecciona el objeto de destino para su protección, en un paso 126, algunas realizaciones del módulo 46 de dotación de protección cambian el tamaño del objeto de destino a un nuevo tamaño de objeto, igual a un múltiplo entero del tamaño de la página. Cambiar el tamaño del objeto de tal manera puede forzar efectivamente al asignador de memoria a asignar un conjunto de páginas completas al objeto de destino respectivo, en lugar de la cantidad real de memoria requerida para acomodar el objeto. En algunas realizaciones, el tamaño del objeto de destino se redondea al siguiente múltiplo entero más cercano del tamaño de la página. Por ejemplo, a un objeto de destino de 320 bytes se le puede asignar una página completa de 4kB, a un objeto de 6kB se le pueden asignar dos páginas completas de 4kB, etc. En algunas realizaciones, como por ejemplo en el caso de una máquina virtual que ejecuta un sistema operativo Windows, la asignación de una sección de memoria que mide al menos una página en tamaño alinea automáticamente la sección asignada a un límite de página (por ejemplo, la sección 58 en la Fig. 6). En otras realizaciones, el paso 126 puede incluir alinear explícitamente la sección asignada a un límite de página, de modo que todas las páginas abarcadas por la sección se asignan exclusivamente al objeto de destino. Una persona experta en la técnica apreciará que puede haber muchas formas de lograr la alineación de la sección con un límite de página. Por ejemplo, el paso 126 puede incluir aumentar el tamaño del objeto de destino por el tamaño de una página y cambiar el puntero a la sección de memoria asignada resultante. Después de completar el paso 126, el control de la ejecución se devuelve a la función de gestión de la memoria del sistema operativo nativo.
La Fig.9 muestra una secuencia a modo de ejemplo de pasos que ilustran una manera alternativa en la que el módulo 46 de dotación de protección puede lograr una asignación de memoria en la que todas las páginas abarcadas por una sección asignada a un objeto de software protegido estén reservadas para el objeto respectivo. La secuencia mostrada en la Fig. 9 comprende modificar una funcionalidad de una función de asignación de memoria del sistema operativo nativo, como KeAllocatePoolWithTag en Windows, y puede ejecutarse en respuesta a un parche/enganche aplicado a la función de asignación de memoria respectiva. Una secuencia de pasos 132-134 verifica si el objeto de destino cumple un criterio de protección contra malware; los pasos 132-134 pueden proceder de una manera similar a la de los pasos 122-124 descritos más arriba. Cuando el objeto de destino no está seleccionado para protección, un paso 138 devuelve el control del procesador a la función de asignación de memoria nativa respectiva. Cuando se selecciona el objeto de destino para la protección contra malware, un paso 136 omite la función de asignación nativa y asigna directamente una sección ubicada dentro de una región de memoria reservada para objetos protegidos. En algunas realizaciones, el paso 136 comprende determinar un puntero de asignación que indica una dirección ubicada dentro de un conjunto reservado de memoria establecido por el módulo 46 tras la inicialización del sistema 34 operativo (ver más arriba, en relación con la Fig. 7, paso 106). En algunas realizaciones, el módulo 46 puede determinar además el
puntero de asignación de modo que la sección asignada esté alineada con un límite de página. A continuación, un paso 140 devuelve el puntero de asignación determinado en el paso 136.
En algunas realizaciones, el módulo 46 de dotación de protección también puede modificar un proceso de desasignación, cambiando el resultado de la ejecución de una función de desasignación de memoria del SO nativo, o modificando la función respectiva en sí. Tales modificaciones se pueden lograr, por ejemplo, enganchando una función de desasignación de memoria del sistema operativo nativo, tal como KeFreePoolWithTag, para incluir funcionalidad adicional. La Fig. 10 muestra una secuencia a modo de ejemplo de pasos que comprenden tal modificación de una función de desasignación de memoria, según algunas realizaciones de la presente invención. Una secuencia de pasos 142-144 determina si la dirección del objeto que se desasigna está protegida contra escritura por el motor 40 de introspección y/o el hipervisor 30 (véase más arriba). Cuando la dirección/página respectiva no tiene tal protección, un paso 148 devuelve el control de la ejecución a la función de desasignación del sistema operativo nativo. Cuando la dirección/página respectiva está protegida contra escritura por el motor 40 y/o el hipervisor 30, en un paso 146, el motor 40 de introspección de memoria y/o un componente del hipervisor 30 puede quitar la protección, antes de continuar con el paso 148. En algunas realizaciones, eliminar la protección del objeto respectivo comprende operar un cambio en la EPT o la NPT, lo que indica que la página que contiene la dirección del objeto respectivo ya no está protegida contra escritura, quedando por ejemplo como de solo lectura.
Los sistemas y métodos a modo de ejemplo descritos anteriormente permiten proteger un sistema anfitrión, como un sistema computacional, de malware como virus y rootkits. En los sistemas convencionales, un rootkit puede tomar el control de un sistema computacional operando a un nivel de privilegio de procesador sustancialmente similar al del sistema operativo. Por el contrario, en algunas realizaciones de la presente invención, un hipervisor se ejecuta en el sistema computacional al nivel de privilegio más alto, desplazando el sistema operativo a una máquina virtual. En algunas realizaciones, un motor de introspección de memoria se ejecuta en el mismo nivel de privilegios de procesador que el hipervisor. Por tanto, las operaciones antimalware pueden realizarse desde un nivel de privilegio de procesador superior al del sistema operativo. En algunas realizaciones, un único motor de introspección de memoria puede proteger múltiples máquinas virtuales que se ejecutan simultáneamente en el sistema computacional respectivo.
En algunas realizaciones, proteger el sistema respectivo del malware comprende seleccionar un conjunto de objetos de software críticos, como ciertos controladores, registros y tablas de páginas, entre otros, y prevenir cambios maliciosos en dichos objetos. Para proteger un objeto de destino, algunas realizaciones pueden evitar tales cambios maliciosos interceptando un intento de escribir en un espacio de memoria asignado al objeto respectivo. Estas intercepciones se pueden realizar desde el nivel del hipervisor.
Otras realizaciones pueden proteger un objeto de destino marcando el espacio de memoria asignado al objeto respectivo como de solo lectura. En las configuraciones típicas de hardware y software, la memoria se divide en bloques individuales de direcciones contiguas, conocidas como páginas. Los permisos de acceso como, por ejemplo, los permisos de lectura y escritura, generalmente se establecen con granularidad de página; es decir, todas las direcciones dentro de una página tienen los mismos permisos de acceso. Por tanto, la protección del espacio de memoria de un objeto de destino puede lograrse, por ejemplo, marcando un conjunto de páginas que contienen datos que pertenecen al objeto respectivo como de sólo lectura. Los permisos de acceso a nivel de página están controlados por el hipervisor, por ejemplo mediante el uso de estructuras de datos dedicadas, como tablas de páginas extendidas (EPT) en plataformas Intel.
En los sistemas convencionales, cuando el SO asigna espacio de memoria a los objetos de software que se ejecutan en el sistema respectivo, se pueden asignar múltiples objetos de software dentro de la misma página, como por ejemplo cuando los objetos respectivos tienen pequeñas huellas de memoria. En algunas situaciones, uno de los objetos respectivos puede ser crítico para el sistema operativo y, por lo tanto, requerir protección contra malware, mientras que otro objeto de la misma página puede requerir una reescritura frecuente y legítima. Dado que los permisos de acceso se establecen con granularidad de página, la protección del objeto crítico puede resultar en denegar el acceso de escritura a todos los objetos que residen dentro de la misma página que el objeto crítico. Cada intento de escribir en una dirección de memoria que reside dentro de una página protegida generalmente resulta en un fallo, seguido de un evento de salida de la máquina virtual que transfiere el control del procesador desde el sistema operativo de la máquina virtual respectiva al hipervisor. Dichos eventos pueden comprender cargar y/o descargar el estado de la máquina virtual respectiva en o desde el procesador, lo que se suma a la sobrecarga computacional. Incluso los intentos legítimos de escribir en una página que contenga, entre otros, un objeto protegido, pueden por tanto producir una ralentización significativa del sistema computacional.
Por el contrario, algunas realizaciones de la presente invención modifican la manera en la que se asigna la memoria a un objeto de software que requiere protección contra malware, de modo que cada página de memoria que contiene una parte del objeto respectivo está reservada para el objeto respectivo. Dicha modificación se realiza antes de aplicar la protección de integridad al objeto de software respectivo. Asegurándose de que ningún otro objeto comparte una página de memoria con el objeto de destino, algunas realizaciones de la presente invención permiten la protección de la integridad con granularidad de la página, evitando al mismo tiempo la sobrecarga computacional causada por la interceptación de intentos de escritura legítimos.
En algunas realizaciones, modificar la forma de asignación nativa del SO respectivo comprende identificar las funciones de asignación y desasignación de memoria del SO, y enganchar las funciones respectivas para redirigir su ejecución a un conjunto de instrucciones ejecutadas desde el nivel de privilegio del procesador del hipervisor. Alternativamente, dicha modificación redirige las funciones respectivas a un conjunto de instrucciones ejecutadas dentro de la MV que ejecuta el respectivo SO, de manera que el conjunto de instrucciones es inyectado en la memoria de la respectiva MV desde el nivel del hipervisor. En algunas realizaciones, se modifica una función de asignación de memoria para forzar la asignación de páginas de memoria completas a objetos de software que requieren protección, alineando la sección asignada con un límite de página. Por lo tanto, un objeto que requiere protección ya no puede asignarse a la misma página de memoria que un objeto que no requiere protección.
Una realización alternativa asegura que cada página asignada a un objeto de destino esté reservada para el objeto de destino dejando a un lado un conjunto reservado de memoria, por ejemplo tras la inicialización del sistema operativo. Cuando el sistema operativo solicita la asignación de memoria para un objeto de destino, algunas realizaciones pueden redirigir el puntero de asignación a una dirección dentro del conjunto reservado, moviendo así efectivamente el objeto de destino a un conjunto de páginas reservado.
Las soluciones antimalware convencionales suelen adaptarse a un único sistema operativo. Cambiar entre un sistema operativo y otro puede requerir cargar una versión diferente del software antimalware. Por el contrario, en algunas realizaciones de la presente invención, el mismo motor de introspección de memoria puede proteger contra malware el sistema computacional respectivo, independientemente del tipo y versión del sistema operativo que se esté ejecutando actualmente. Al ejecutar el motor de introspección de memoria al nivel de un hipervisor y al desplazar el sistema operativo a una máquina virtual, algunas realizaciones pueden ejecutar y proteger varios sistemas operativos al mismo tiempo. En algunas realizaciones, el motor de introspección de memoria puede identificar dinámicamente cada sistema operativo, por ejemplo durante el arranque, y puede proteger adicionalmente las estructuras de datos y los objetos de software específicos del sistema operativo.
Resultará evidente para un experto en la técnica que las realizaciones anteriores pueden modificarse de muchas formas sin apartarse del alcance de la invención. Por consiguiente, el alcance de la invención debería determinarse mediante las siguientes reivindicaciones.
Claims (25)
1. Un sistema (10) anfitrión que comprende al menos un procesador (12) configurado para ejecutar un sistema (34) operativo configurado para asignar una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor (30) se ejecuta en el sistema (10) anfitrión, en donde la memoria física virtualizada se divide en páginas, siendo una página la unidad más pequeña de memoria asignada individualmente entre la memoria física virtualizada y una memoria (14) física del sistema (10) anfitrión; y en donde el sistema anfitrión está caracterizado por que posee al menos un procesador (12) configurado adicionalmente para ejecutar un módulo (46) de dotación de protección configurado, en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware, cuando el objeto de software de destino satisface el criterio de selección, para cambiar una asignación de memoria del objeto de software de destino, en donde cambiar la asignación de memoria comprende asegurarse de que cualquier página que contenga al menos parte del objeto de software de destino está reservada para el objeto de software de destino; en donde el sistema anfitrión comprende adicionalmente un motor (40) de introspección de memoria conectado al módulo (46) de dotación de protección, en donde el motor de introspección de memoria está configurado, en respuesta al módulo de dotación de protección que cambia la asignación de memoria, para proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino; en donde el motor de introspección de memoria está configurado además para: determinar si el objeto de software de destino se ha inicializado y, en respuesta a ello, cuando el objeto de software de destino se ha inicializado, proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino.
2. El sistema anfitrión de la reivindicación 1, en el que el criterio de selección comprende seleccionar el objeto de software de destino de acuerdo con un tipo de sistema (34) operativo.
3. El sistema anfitrión de la reivindicación 2, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende identificar el tipo de sistema (34) operativo según un contenido de un registro específico de modelo (MSR) de la máquina virtual.
4. El sistema anfitrión de la reivindicación 2, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende identificar el tipo de sistema (34) operativo según un contenido de memoria al que apunta un registro específico de modelo (MSR) de la máquina virtual.
5. El sistema anfitrión de la reivindicación 1, en el que cambiar la asignación de memoria comprende enganchar una función de asignación de memoria del sistema (34) operativo.
6. El sistema anfitrión de la reivindicación 1, en el que cambiar la asignación de memoria comprende dar una instrucción a una función de asignación de memoria del sistema (34) operativo para asignar cualquier página que contenga al menos parte del objeto de software de destino exclusivamente al objeto de software de destino.
7. El sistema anfitrión de la reivindicación 6, en el que la instrucción de la función de asignación de memoria comprende cambiar un tamaño del objeto de software de destino a un múltiplo entero del tamaño de la página.
8. El sistema anfitrión de la reivindicación 7, en el que dar una instrucción a la función de asignación de memoria comprende además alinear la sección a un límite de página.
9. El sistema anfitrión de la reivindicación 1, en el que el módulo (46) de dotación de protección está configurado además para establecer un conjunto reservado de páginas, en donde el conjunto está reservado para la asignación a objetos de software protegidos contra malware, y en donde cambiar la asignación de memoria comprende asignar la sección dentro del conjunto reservado de páginas de memoria.
10. El sistema anfitrión de la reivindicación 1, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende: determinar si el objeto de software de destino es un objeto de controlador; y, en respuesta a ello, cuando el objeto de software de destino es un objeto de controlador, determinar que el objeto de software de destino satisface el criterio de selección para la protección contra malware.
11. El sistema anfitrión de la reivindicación 1, en el que el módulo (46) de dotación de protección está configurado además para cambiar una desasignación del objeto de destino, en donde cambiar la desasignación comprende: determinar si una página que contiene al menos parte del objeto de software de destino está protegida contra escritura y, en respuesta a ello, cuando la página está protegida contra escritura, eliminar la protección contra escritura de la página.
12. El sistema anfitrión de la reivindicación 11, en el que cambiar la desasignación comprende además enganchar una función de desasignación de memoria del sistema (34) operativo.
13. Un método que comprende emplear al menos un procesador (12) de un sistema (10) anfitrión para formar un sistema (34) operativo configurado para asignar una sección de una memoria física virtualizada de una máquina virtual a un objeto de software de destino que se ejecuta dentro de la máquina virtual, en donde la máquina virtual expuesta por un hipervisor (30) se ejecuta en el sistema (10) anfitrión, en donde la memoria física virtualizada se divide en
páginas, siendo una página la unidad más pequeña de memoria asignada individualmente entre la memoria física virtualizada y una memoria (14) física del sistema (10) anfitrión; y en donde la mejora comprende: en respuesta a una determinación de si el objeto de software de destino satisface un criterio de selección para la protección contra malware, cuando el objeto de software de destino satisface el criterio de selección, emplear al menos un procesador (12) para cambiar una asignación de memoria del objeto de software de destino, en el que cambiar la asignación de memoria comprende asegurarse de que cualquier página que contenga al menos parte del objeto de software de destino esté reservada para el objeto de software de destino; en respuesta a cambiar la asignación de memoria, proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino; y determinar si el objeto de software de destino se ha inicializado y, en respuesta a ello, cuando se ha inicializado el objeto de software de destino, proteger contra escritura todas las páginas que contienen al menos parte del objeto de software de destino.
14. El método de la reivindicación 13, en el que el criterio de selección comprende seleccionar el objeto de software de destino según un tipo de sistema operativo.
15. El método de la reivindicación 14, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende identificar el tipo de sistema (34) operativo según un contenido de un registro específico de modelo (MSR) de la máquina virtual.
16. El método de la reivindicación 14, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende identificar el tipo de sistema (34) operativo según un contenido de memoria apuntado por un registro específico de modelo (MSR) de la máquina virtual.
17. El método de la reivindicación 13, en el que cambiar la asignación de memoria comprende enganchar una función de asignación de memoria del sistema (34) operativo.
18. El método de la reivindicación 17, en el que cambiar la asignación de memoria comprende dar una instrucción a una función de asignación de memoria del sistema (34) operativo para asignar todas las páginas que contienen al menos parte del objeto de software de destino exclusivamente al objeto de software de destino.
19. El método de la reivindicación 18, en el que dar una instrucción a la función de asignación de memoria comprende cambiar un tamaño del objeto de software de destino a un múltiplo entero del tamaño de página.
20. El método de la reivindicación 19, en el que dar una instrucción a la función de asignación de memoria comprende además alinear la sección a un límite de página.
21. El método de la reivindicación 13, en el que cambiar la asignación de memoria comprende: establecer un conjunto reservado de páginas, en donde el conjunto está reservado para asignación a objetos de software protegidos contra malware, y asignar la sección dentro del conjunto reservado de páginas de memoria.
22. El método de la reivindicación 13, en el que la determinación de si el objeto de software de destino satisface el criterio de selección para la protección contra malware comprende: determinar si el objeto de software de destino es un objeto de controlador; y, en respuesta a ello, cuando el objeto de software de destino es un objeto de controlador, determinar que el objeto de software de destino satisface el criterio de selección para la protección contra malware.
23. El método de la reivindicación 13, que comprende además emplear el al menos un procesador para cambiar una desasignación del objeto de software de destino, en el que cambiar la desasignación comprende: determinar si una página que contiene al menos parte del objeto de software está protegida contra escritura y, en respuesta a ello, cuando la página está protegida contra escritura, eliminar la protección contra escritura de la página.
24. El método de la reivindicación 23, en el que cambiar la desasignación comprende además enganchar una función de desasignación de memoria del sistema operativo.
25. Un medio no transitorio legible por ordenador que codifica instrucciones que, cuando son ejecutadas por al menos un procesador del sistema anfitrión de la reivindicación 1, hacen que el al menos un procesador lleve a cabo todos los pasos del método de la reivindicación 13.
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US13/774,720 US8875295B2 (en) | 2013-02-22 | 2013-02-22 | Memory introspection engine for integrity protection of virtual machines |
| PCT/RO2014/000006 WO2014129918A1 (en) | 2013-02-22 | 2014-02-04 | Memory introspection engine for integrity protection of virtual machines |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2873229T3 true ES2873229T3 (es) | 2021-11-03 |
Family
ID=50389476
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES14713274T Active ES2873229T3 (es) | 2013-02-22 | 2014-02-04 | Motor de introspección de memoria para la protección de integridad de máquinas virtuales |
Country Status (12)
| Country | Link |
|---|---|
| US (1) | US8875295B2 (es) |
| EP (1) | EP2959392B1 (es) |
| JP (1) | JP6218859B2 (es) |
| KR (1) | KR101863174B1 (es) |
| CN (1) | CN105190570B (es) |
| AU (1) | AU2014219466B2 (es) |
| CA (1) | CA2897747C (es) |
| ES (1) | ES2873229T3 (es) |
| IL (1) | IL239855B (es) |
| RU (1) | RU2640300C2 (es) |
| SG (1) | SG11201505931RA (es) |
| WO (1) | WO2014129918A1 (es) |
Families Citing this family (115)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8989705B1 (en) | 2009-06-18 | 2015-03-24 | Sprint Communications Company L.P. | Secure placement of centralized media controller application in mobile access terminal |
| US9239909B2 (en) * | 2012-01-25 | 2016-01-19 | Bromium, Inc. | Approaches for protecting sensitive data within a guest operating system |
| US9027102B2 (en) | 2012-05-11 | 2015-05-05 | Sprint Communications Company L.P. | Web server bypass of backend process on near field communications and secure element chips |
| US9282898B2 (en) | 2012-06-25 | 2016-03-15 | Sprint Communications Company L.P. | End-to-end trusted communications infrastructure |
| US9066230B1 (en) | 2012-06-27 | 2015-06-23 | Sprint Communications Company L.P. | Trusted policy and charging enforcement function |
| US8649770B1 (en) | 2012-07-02 | 2014-02-11 | Sprint Communications Company, L.P. | Extended trusted security zone radio modem |
| US8667607B2 (en) | 2012-07-24 | 2014-03-04 | Sprint Communications Company L.P. | Trusted security zone access to peripheral devices |
| US9183412B2 (en) | 2012-08-10 | 2015-11-10 | Sprint Communications Company L.P. | Systems and methods for provisioning and using multiple trusted security zones on an electronic device |
| US9191435B2 (en) | 2012-08-23 | 2015-11-17 | TidalScale, Inc. | Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores |
| US8954588B1 (en) | 2012-08-25 | 2015-02-10 | Sprint Communications Company L.P. | Reservations in real-time brokering of digital content delivery |
| US9215180B1 (en) | 2012-08-25 | 2015-12-15 | Sprint Communications Company L.P. | File retrieval in real-time brokering of digital content |
| US9015068B1 (en) | 2012-08-25 | 2015-04-21 | Sprint Communications Company L.P. | Framework for real-time brokering of digital content delivery |
| US9578664B1 (en) | 2013-02-07 | 2017-02-21 | Sprint Communications Company L.P. | Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system |
| US9161227B1 (en) | 2013-02-07 | 2015-10-13 | Sprint Communications Company L.P. | Trusted signaling in long term evolution (LTE) 4G wireless communication |
| US9104840B1 (en) | 2013-03-05 | 2015-08-11 | Sprint Communications Company L.P. | Trusted security zone watermark |
| US9075995B2 (en) * | 2013-03-11 | 2015-07-07 | Microsoft Technology Licensing, Llc | Dynamically loaded measured environment for secure code launch |
| US9335886B2 (en) * | 2013-03-13 | 2016-05-10 | Assured Information Security, Inc. | Facilitating user interaction with multiple domains while preventing cross-domain transfer of data |
| US9613208B1 (en) * | 2013-03-13 | 2017-04-04 | Sprint Communications Company L.P. | Trusted security zone enhanced with trusted hardware drivers |
| US9049186B1 (en) | 2013-03-14 | 2015-06-02 | Sprint Communications Company L.P. | Trusted security zone re-provisioning and re-use capability for refurbished mobile devices |
| US9049013B2 (en) | 2013-03-14 | 2015-06-02 | Sprint Communications Company L.P. | Trusted security zone containers for the protection and confidentiality of trusted service manager data |
| US8984592B1 (en) | 2013-03-15 | 2015-03-17 | Sprint Communications Company L.P. | Enablement of a trusted security zone authentication for remote mobile device management systems and methods |
| US9021585B1 (en) | 2013-03-15 | 2015-04-28 | Sprint Communications Company L.P. | JTAG fuse vulnerability determination and protection using a trusted execution environment |
| US9374363B1 (en) | 2013-03-15 | 2016-06-21 | Sprint Communications Company L.P. | Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device |
| US9191388B1 (en) | 2013-03-15 | 2015-11-17 | Sprint Communications Company L.P. | Trusted security zone communication addressing on an electronic device |
| US9171243B1 (en) | 2013-04-04 | 2015-10-27 | Sprint Communications Company L.P. | System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device |
| US9324016B1 (en) | 2013-04-04 | 2016-04-26 | Sprint Communications Company L.P. | Digest of biographical information for an electronic device with static and dynamic portions |
| US9454723B1 (en) | 2013-04-04 | 2016-09-27 | Sprint Communications Company L.P. | Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device |
| US9838869B1 (en) | 2013-04-10 | 2017-12-05 | Sprint Communications Company L.P. | Delivering digital content to a mobile device via a digital rights clearing house |
| US9443088B1 (en) | 2013-04-15 | 2016-09-13 | Sprint Communications Company L.P. | Protection for multimedia files pre-downloaded to a mobile device |
| US9069952B1 (en) | 2013-05-20 | 2015-06-30 | Sprint Communications Company L.P. | Method for enabling hardware assisted operating system region for safe execution of untrusted code using trusted transitional memory |
| US9560519B1 (en) | 2013-06-06 | 2017-01-31 | Sprint Communications Company L.P. | Mobile communication device profound identity brokering framework |
| US9183606B1 (en) | 2013-07-10 | 2015-11-10 | Sprint Communications Company L.P. | Trusted processing location within a graphics processing unit |
| US9208339B1 (en) | 2013-08-12 | 2015-12-08 | Sprint Communications Company L.P. | Verifying Applications in Virtual Environments Using a Trusted Security Zone |
| WO2015030746A1 (en) * | 2013-08-28 | 2015-03-05 | Empire Technology Development, Llc | Virtual machine exit analyzer |
| EP3063692B1 (en) * | 2013-10-29 | 2019-07-24 | Hewlett-Packard Enterprise Development LP | Virtual machine introspection |
| US9185626B1 (en) | 2013-10-29 | 2015-11-10 | Sprint Communications Company L.P. | Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning |
| US9191522B1 (en) | 2013-11-08 | 2015-11-17 | Sprint Communications Company L.P. | Billing varied service based on tier |
| US9161325B1 (en) | 2013-11-20 | 2015-10-13 | Sprint Communications Company L.P. | Subscriber identity module virtualization |
| US9118655B1 (en) | 2014-01-24 | 2015-08-25 | Sprint Communications Company L.P. | Trusted display and transmission of digital ticket documentation |
| US10078752B2 (en) | 2014-03-27 | 2018-09-18 | Barkly Protects, Inc. | Continuous malicious software identification through responsive machine learning |
| US9733976B2 (en) * | 2014-03-27 | 2017-08-15 | Barkly Protects, Inc. | Method and apparatus for SYSRET monitoring of system interactions |
| US9977895B2 (en) * | 2014-03-27 | 2018-05-22 | Barkly Protects, Inc. | Malicious software identification integrating behavioral analytics and hardware events |
| US9226145B1 (en) | 2014-03-28 | 2015-12-29 | Sprint Communications Company L.P. | Verification of mobile device integrity during activation |
| US9973531B1 (en) * | 2014-06-06 | 2018-05-15 | Fireeye, Inc. | Shellcode detection |
| US9230085B1 (en) | 2014-07-29 | 2016-01-05 | Sprint Communications Company L.P. | Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services |
| US20160062655A1 (en) * | 2014-08-28 | 2016-03-03 | Endgame, Inc. | System and Method for Improved Memory Allocation in a Computer System |
| US9600664B1 (en) * | 2014-09-03 | 2017-03-21 | Amazon Technologies, Inc. | Monitoring execution environments for approved configurations |
| CN107077356A (zh) * | 2014-09-10 | 2017-08-18 | 爱迪德技术有限公司 | 存储器特权 |
| US9716727B1 (en) | 2014-09-30 | 2017-07-25 | Palo Alto Networks, Inc. | Generating a honey network configuration to emulate a target network environment |
| US10044675B1 (en) | 2014-09-30 | 2018-08-07 | Palo Alto Networks, Inc. | Integrating a honey network with a target network to counter IP and peer-checking evasion techniques |
| US9860208B1 (en) | 2014-09-30 | 2018-01-02 | Palo Alto Networks, Inc. | Bridging a virtual clone of a target device in a honey network to a suspicious device in an enterprise network |
| US9882929B1 (en) | 2014-09-30 | 2018-01-30 | Palo Alto Networks, Inc. | Dynamic selection and generation of a virtual clone for detonation of suspicious content within a honey network |
| US9495188B1 (en) | 2014-09-30 | 2016-11-15 | Palo Alto Networks, Inc. | Synchronizing a honey network configuration to reflect a target network environment |
| US9921979B2 (en) | 2015-01-14 | 2018-03-20 | Red Hat Israel, Ltd. | Position dependent code in virtual machine functions |
| US9779232B1 (en) | 2015-01-14 | 2017-10-03 | Sprint Communications Company L.P. | Trusted code generation and verification to prevent fraud from maleficent external devices that capture data |
| US9189630B1 (en) | 2015-01-21 | 2015-11-17 | AO Kaspersky Lab | Systems and methods for active operating system kernel protection |
| US9838868B1 (en) | 2015-01-26 | 2017-12-05 | Sprint Communications Company L.P. | Mated universal serial bus (USB) wireless dongles configured with destination addresses |
| US9600190B2 (en) | 2015-02-27 | 2017-03-21 | Red Hat Israel, Ltd. | Virtual machine functions for multiple privileged pages |
| US9473945B1 (en) | 2015-04-07 | 2016-10-18 | Sprint Communications Company L.P. | Infrastructure for secure short message transmission |
| US11010054B1 (en) | 2015-06-10 | 2021-05-18 | EMC IP Holding Company LLC | Exabyte-scale data processing system |
| US10515014B1 (en) | 2015-06-10 | 2019-12-24 | EMC IP Holding Company LLC | Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence |
| US10496284B1 (en) * | 2015-06-10 | 2019-12-03 | EMC IP Holding Company LLC | Software-implemented flash translation layer policies in a data processing system |
| US10713334B1 (en) | 2015-06-10 | 2020-07-14 | EMC IP Holding Company LLC | Data processing system with a scalable architecture over ethernet |
| US10503416B1 (en) | 2015-06-10 | 2019-12-10 | EMC IP Holdings Company LLC | Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system |
| US10496626B2 (en) | 2015-06-11 | 2019-12-03 | EB Storage Systems Ltd. | Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect |
| US10726127B1 (en) | 2015-06-30 | 2020-07-28 | Fireeye, Inc. | System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer |
| US10642753B1 (en) | 2015-06-30 | 2020-05-05 | Fireeye, Inc. | System and method for protecting a software component running in virtual machine using a virtualization layer |
| US11113086B1 (en) | 2015-06-30 | 2021-09-07 | Fireeye, Inc. | Virtual system and method for securing external network connectivity |
| US10395029B1 (en) * | 2015-06-30 | 2019-08-27 | Fireeye, Inc. | Virtual system and method with threat protection |
| US9819679B1 (en) | 2015-09-14 | 2017-11-14 | Sprint Communications Company L.P. | Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers |
| RU2609761C1 (ru) * | 2015-09-30 | 2017-02-02 | Акционерное общество "Лаборатория Касперского" | Способ выполнения кода в режиме гипервизора |
| US10222632B2 (en) | 2015-10-01 | 2019-03-05 | Verily Life Sciences Llc | Lens-to-lens communication for contact lenses |
| US11240334B2 (en) | 2015-10-01 | 2022-02-01 | TidalScale, Inc. | Network attached memory using selective resource migration |
| US10281743B2 (en) | 2015-10-01 | 2019-05-07 | Verily Life Sciences Llc | Eye convergence detection with contact lenses |
| KR102513961B1 (ko) * | 2015-11-11 | 2023-03-27 | 삼성전자주식회사 | 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법 |
| US10282719B1 (en) | 2015-11-12 | 2019-05-07 | Sprint Communications Company L.P. | Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit |
| US9817992B1 (en) | 2015-11-20 | 2017-11-14 | Sprint Communications Company Lp. | System and method for secure USIM wireless network access |
| US9965313B2 (en) * | 2016-01-05 | 2018-05-08 | Bitdefender IPR Management Ltd. | Systems and methods for auditing a virtual machine |
| US12339979B2 (en) * | 2016-03-07 | 2025-06-24 | Crowdstrike, Inc. | Hypervisor-based interception of memory and register accesses |
| US12248560B2 (en) * | 2016-03-07 | 2025-03-11 | Crowdstrike, Inc. | Hypervisor-based redirection of system calls and interrupt-based task offloading |
| US9842084B2 (en) | 2016-04-05 | 2017-12-12 | E8 Storage Systems Ltd. | Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices |
| US11379385B2 (en) * | 2016-04-16 | 2022-07-05 | Vmware, Inc. | Techniques for protecting memory pages of a virtual computing instance |
| US10255088B2 (en) | 2016-05-13 | 2019-04-09 | Red Hat Israel, Ltd. | Modification of write-protected memory using code patching |
| US10579421B2 (en) | 2016-08-29 | 2020-03-03 | TidalScale, Inc. | Dynamic scheduling of virtual processors in a distributed system |
| KR101970176B1 (ko) * | 2016-10-24 | 2019-04-17 | 주식회사 산엔지니어링 | 가상 플랫폼 기반의 통합 항해 시스템 |
| US9798482B1 (en) * | 2016-12-05 | 2017-10-24 | Red Hat, Inc. | Efficient and secure memory allocation in virtualized computer systems |
| US10635479B2 (en) * | 2016-12-19 | 2020-04-28 | Bitdefender IPR Management Ltd. | Event filtering for virtual machine security applications |
| CN106844005B (zh) * | 2016-12-29 | 2020-04-14 | 北京瑞星网安技术股份有限公司 | 基于虚拟化环境下的数据恢复方法及系统 |
| US10031872B1 (en) * | 2017-01-23 | 2018-07-24 | E8 Storage Systems Ltd. | Storage in multi-queue storage devices using queue multiplexing and access control |
| US10489185B2 (en) * | 2017-03-17 | 2019-11-26 | Nicira, Inc. | Hypervisor-assisted approach for locating operating system data structures based on attribute matching |
| EP3379445B1 (en) | 2017-03-22 | 2024-06-12 | Diebold Nixdorf Systems GmbH | System and method to generate encryption keys based on information of peripheral devices |
| US10579274B2 (en) | 2017-06-27 | 2020-03-03 | TidalScale, Inc. | Hierarchical stalling strategies for handling stalling events in a virtualized environment |
| US10503904B1 (en) | 2017-06-29 | 2019-12-10 | Fireeye, Inc. | Ransomware detection and mitigation |
| US10499249B1 (en) | 2017-07-11 | 2019-12-03 | Sprint Communications Company L.P. | Data link layer trust signaling in communication network |
| US10742491B2 (en) | 2017-07-20 | 2020-08-11 | Vmware, Inc. | Reducing initial network launch time of container applications |
| US10579439B2 (en) | 2017-08-29 | 2020-03-03 | Red Hat, Inc. | Batched storage hinting with fast guest storage allocation |
| US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
| US10956216B2 (en) | 2017-08-31 | 2021-03-23 | Red Hat, Inc. | Free page hinting with multiple page sizes |
| US10565376B1 (en) | 2017-09-11 | 2020-02-18 | Palo Alto Networks, Inc. | Efficient program deobfuscation through system API instrumentation |
| US10685010B2 (en) | 2017-09-11 | 2020-06-16 | Amazon Technologies, Inc. | Shared volumes in distributed RAID over shared multi-queue storage devices |
| US10474382B2 (en) | 2017-12-01 | 2019-11-12 | Red Hat, Inc. | Fast virtual machine storage allocation with encrypted storage |
| US10970390B2 (en) | 2018-02-15 | 2021-04-06 | Intel Corporation | Mechanism to prevent software side channels |
| US10922096B2 (en) * | 2018-02-28 | 2021-02-16 | Vmware, Inc. | Reducing subsequent network launch time of container applications |
| EP3814913B1 (en) * | 2018-08-08 | 2024-10-09 | Huawei Technologies Co., Ltd. | Apparatus and method for providing one time programmable memory features in a hypervisor of a computing device |
| US12153944B2 (en) * | 2019-06-27 | 2024-11-26 | The Trustees Of Columbia University In The City Of New York | Systems, methods, and media for trusted hypervisors |
| US11436141B2 (en) | 2019-12-13 | 2022-09-06 | Red Hat, Inc. | Free memory page hinting by virtual machines |
| US11271907B2 (en) | 2019-12-19 | 2022-03-08 | Palo Alto Networks, Inc. | Smart proxy for a large scale high-interaction honeypot farm |
| US11265346B2 (en) | 2019-12-19 | 2022-03-01 | Palo Alto Networks, Inc. | Large scale high-interactive honeypot farm |
| KR102370848B1 (ko) * | 2020-11-17 | 2022-03-07 | 주식회사 시큐브 | 분할된 보안 모듈을 구비하는 컴퓨터 장치 및 보안 모듈 업데이트 방법 |
| US12142338B2 (en) | 2021-01-19 | 2024-11-12 | Alibaba Group Holding Limited | Memory priming and initialization systems and methods |
| US12223044B1 (en) | 2021-07-12 | 2025-02-11 | Palo Alto Networks, Inc. | Identifying malware based on system API function pointers |
| WO2023069166A1 (en) * | 2021-10-21 | 2023-04-27 | Microsoft Technology Licensing, Llc | Securely redirecting system service routines |
| US12086237B2 (en) | 2021-10-21 | 2024-09-10 | Microsoft Technology Licensing, Llc | Securely redirecting system service routines |
| US12561434B2 (en) | 2022-04-07 | 2026-02-24 | Palo Alto Networks, Inc. | Heidi: ML on hypervisor dynamic analysis data for malware classification |
| US12259824B2 (en) | 2022-10-26 | 2025-03-25 | Red Hat, Inc. | Assigning input/output virtual addresses using a pre-defined randomness algorithm |
Family Cites Families (40)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6851057B1 (en) * | 1999-11-30 | 2005-02-01 | Symantec Corporation | Data driven detection of viruses |
| US6779099B2 (en) * | 2001-07-20 | 2004-08-17 | Chien-Tzu Hou | Operation method for controlling access attributes of a memorized page of a memory unit and its structure |
| KR101044173B1 (ko) * | 2003-03-06 | 2011-06-24 | 마이크로소프트 코포레이션 | 분산형 컴퓨팅 시스템상에서 분산형 애플리케이션들을 설계, 배포 및 관리하기 위한 방법 및 장치, 자원 관리자 및 컴퓨터 판독가능 기록 매체 |
| US7760882B2 (en) * | 2004-06-28 | 2010-07-20 | Japan Communications, Inc. | Systems and methods for mutual authentication of network nodes |
| US7277999B1 (en) | 2004-08-12 | 2007-10-02 | Vmware, Inc. | Restricting memory access to protect data when sharing a common address space |
| US7836504B2 (en) * | 2005-03-01 | 2010-11-16 | Microsoft Corporation | On-access scan of memory for malware |
| US7380049B2 (en) | 2005-09-06 | 2008-05-27 | Intel Corporation | Memory protection within a virtual partition |
| US20070067590A1 (en) * | 2005-09-22 | 2007-03-22 | Uday Savagaonkar | Providing protected access to critical memory regions |
| GB0525871D0 (en) * | 2005-12-20 | 2006-02-01 | Symbian Software Ltd | Malicious software detecting in a computing device |
| US20140373144A9 (en) * | 2006-05-22 | 2014-12-18 | Alen Capalik | System and method for analyzing unauthorized intrusion into a computer network |
| US7822941B2 (en) | 2006-06-05 | 2010-10-26 | Oracle America, Inc. | Function-based virtual-to-physical address translation |
| US20080320594A1 (en) * | 2007-03-19 | 2008-12-25 | Xuxian Jiang | Malware Detector |
| US7657695B1 (en) | 2007-05-30 | 2010-02-02 | Paravirtual Corporation | Efficient processing of memory accesses to virtual hardware using runtime code patching |
| US7797748B2 (en) * | 2007-12-12 | 2010-09-14 | Vmware, Inc. | On-access anti-virus mechanism for virtual machine architecture |
| US8510828B1 (en) * | 2007-12-31 | 2013-08-13 | Symantec Corporation | Enforcing the execution exception to prevent packers from evading the scanning of dynamically created code |
| US8839237B2 (en) * | 2007-12-31 | 2014-09-16 | Intel Corporation | Method and apparatus for tamper resistant communication in a virtualization enabled platform |
| US8104089B1 (en) * | 2007-12-31 | 2012-01-24 | Symantec Corporation | Tracking memory mapping to prevent packers from evading the scanning of dynamically created code |
| JP4783392B2 (ja) * | 2008-03-31 | 2011-09-28 | 株式会社東芝 | 情報処理装置および障害回復方法 |
| US20090307705A1 (en) | 2008-06-05 | 2009-12-10 | Neocleus Israel Ltd | Secure multi-purpose computing client |
| US8381288B2 (en) * | 2008-09-30 | 2013-02-19 | Intel Corporation | Restricted component access to application memory |
| RU2406138C1 (ru) * | 2009-06-18 | 2010-12-10 | Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." | Система безопасности виртуализованной компьютерной системы |
| US8397242B1 (en) * | 2009-06-30 | 2013-03-12 | Symantec Corporation | System and method for managing operations within virtual machines |
| US8838913B1 (en) * | 2009-09-15 | 2014-09-16 | Symantec Corporation | System and method for locating a memory page in a guest virtual machine |
| US8327059B2 (en) | 2009-09-30 | 2012-12-04 | Vmware, Inc. | System and method to enhance memory protection for programs in a virtual machine environment |
| US8209510B1 (en) | 2010-01-13 | 2012-06-26 | Juniper Networks, Inc. | Secure pool memory management |
| US8474039B2 (en) * | 2010-01-27 | 2013-06-25 | Mcafee, Inc. | System and method for proactive detection and repair of malware memory infection via a remote memory reputation system |
| US20120240224A1 (en) * | 2010-09-14 | 2012-09-20 | Georgia Tech Research Corporation | Security systems and methods for distinguishing user-intended traffic from malicious traffic |
| US20130179971A1 (en) * | 2010-09-30 | 2013-07-11 | Hewlett-Packard Development Company, L.P. | Virtual Machines |
| KR101213572B1 (ko) * | 2010-12-03 | 2012-12-18 | 한국과학기술원 | 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법 |
| US8490090B2 (en) * | 2011-02-17 | 2013-07-16 | International Business Machines Corporation | Multilevel support in a nested virtualization environment |
| CN102859502B (zh) * | 2011-03-02 | 2016-03-23 | 松下电器(美国)知识产权公司 | 虚拟计算机系统、虚拟计算机控制方法、及半导体集成电路 |
| US8307169B2 (en) | 2011-03-10 | 2012-11-06 | Safenet, Inc. | Protecting guest virtual machine memory |
| US20120254993A1 (en) | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | System and method for virtual machine monitor based anti-malware security |
| US8893124B2 (en) | 2011-03-31 | 2014-11-18 | Intel Corporation | Method, apparatus and system for limiting access to virtualization information in a memory |
| US8656482B1 (en) * | 2012-08-20 | 2014-02-18 | Bitdefender IPR Management Ltd. | Secure communication using a trusted virtual machine |
| US20140053272A1 (en) * | 2012-08-20 | 2014-02-20 | Sandor Lukacs | Multilevel Introspection of Nested Virtual Machines |
| US9043653B2 (en) * | 2012-08-31 | 2015-05-26 | International Business Machines Corporation | Introspection of software program components and conditional generation of memory dump |
| US8910238B2 (en) * | 2012-11-13 | 2014-12-09 | Bitdefender IPR Management Ltd. | Hypervisor-based enterprise endpoint protection |
| US10572665B2 (en) * | 2012-12-28 | 2020-02-25 | Fireeye, Inc. | System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events |
| US20140259169A1 (en) * | 2013-03-11 | 2014-09-11 | Hewlett-Packard Development Company, L.P. | Virtual machines |
-
2013
- 2013-02-22 US US13/774,720 patent/US8875295B2/en active Active
-
2014
- 2014-02-04 RU RU2015135541A patent/RU2640300C2/ru active
- 2014-02-04 AU AU2014219466A patent/AU2014219466B2/en active Active
- 2014-02-04 WO PCT/RO2014/000006 patent/WO2014129918A1/en not_active Ceased
- 2014-02-04 EP EP14713274.0A patent/EP2959392B1/en active Active
- 2014-02-04 ES ES14713274T patent/ES2873229T3/es active Active
- 2014-02-04 CA CA2897747A patent/CA2897747C/en active Active
- 2014-02-04 CN CN201480009502.9A patent/CN105190570B/zh active Active
- 2014-02-04 KR KR1020157022480A patent/KR101863174B1/ko active Active
- 2014-02-04 JP JP2015559213A patent/JP6218859B2/ja active Active
- 2014-02-04 SG SG11201505931RA patent/SG11201505931RA/en unknown
-
2015
- 2015-07-09 IL IL239855A patent/IL239855B/en active IP Right Grant
Also Published As
| Publication number | Publication date |
|---|---|
| IL239855B (en) | 2018-07-31 |
| JP6218859B2 (ja) | 2017-10-25 |
| CA2897747C (en) | 2019-12-31 |
| KR101863174B1 (ko) | 2018-05-31 |
| KR20150118957A (ko) | 2015-10-23 |
| CA2897747A1 (en) | 2014-08-28 |
| HK1214663A1 (zh) | 2016-07-29 |
| AU2014219466B2 (en) | 2018-11-22 |
| CN105190570B (zh) | 2018-02-13 |
| AU2014219466A1 (en) | 2015-08-06 |
| WO2014129918A1 (en) | 2014-08-28 |
| JP2016511903A (ja) | 2016-04-21 |
| RU2015135541A (ru) | 2017-03-30 |
| US20140245444A1 (en) | 2014-08-28 |
| SG11201505931RA (en) | 2015-09-29 |
| EP2959392A1 (en) | 2015-12-30 |
| CN105190570A (zh) | 2015-12-23 |
| EP2959392B1 (en) | 2021-03-31 |
| IL239855A0 (en) | 2015-08-31 |
| US8875295B2 (en) | 2014-10-28 |
| RU2640300C2 (ru) | 2017-12-27 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2873229T3 (es) | Motor de introspección de memoria para la protección de integridad de máquinas virtuales | |
| US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
| AU2014389571B2 (en) | Page fault injection in virtual machines to cause mapping of swapped-out memory pages into VM] virtu alized memory | |
| ES2785350T3 (es) | Evaluación de procesos para la detección de programas malignos en máquinas virtuales | |
| US9117081B2 (en) | Strongly isolated malware scanning using secure virtual containers | |
| US20150379265A1 (en) | Systems And Methods For Preventing Code Injection In Virtualized Environments | |
| US10489185B2 (en) | Hypervisor-assisted approach for locating operating system data structures based on attribute matching | |
| US20180267818A1 (en) | Hypervisor-assisted approach for locating operating system data structures based on notification data | |
| US10620985B2 (en) | Transparent code patching using a hypervisor | |
| EP3308274B1 (en) | Executing services in containers | |
| HK1214663B (en) | Memory introspection engine for integrity protection of virtual machines | |
| HK1216679B (zh) | 虚拟机中的页面错误注入 |