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 PDF

Info

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
Application number
ES14713274T
Other languages
English (en)
Inventor
Andrei-Vlad Lutas
Sandor Lukacs
Dan-Horea Lutas
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Bitdefender IPR Management Ltd
Original Assignee
Bitdefender IPR Management Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Bitdefender IPR Management Ltd filed Critical Bitdefender IPR Management Ltd
Application granted granted Critical
Publication of ES2873229T3 publication Critical patent/ES2873229T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/109Address translation for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1466Key-lock mechanism
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1458Protection against unauthorised use of memory or access to memory by checking the subject access rights
    • G06F12/1491Protection 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6227Protecting 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring 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)

REIVINDICACIONES
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.
ES14713274T 2013-02-22 2014-02-04 Motor de introspección de memoria para la protección de integridad de máquinas virtuales Active ES2873229T3 (es)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

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) 虚拟机中的页面错误注入