ES2925891T3 - Filtrado de eventos para aplicaciones de seguridad de máquina virtual - Google Patents

Filtrado de eventos para aplicaciones de seguridad de máquina virtual Download PDF

Info

Publication number
ES2925891T3
ES2925891T3 ES17825203T ES17825203T ES2925891T3 ES 2925891 T3 ES2925891 T3 ES 2925891T3 ES 17825203 T ES17825203 T ES 17825203T ES 17825203 T ES17825203 T ES 17825203T ES 2925891 T3 ES2925891 T3 ES 2925891T3
Authority
ES
Spain
Prior art keywords
memory
event
running
event filter
attempt
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
ES17825203T
Other languages
English (en)
Inventor
Andrei-Vlad 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 ES2925891T3 publication Critical patent/ES2925891T3/es
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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

Abstract

Los sistemas y métodos descritos permiten proteger un sistema de virtualización de hardware de software malicioso. Algunas realizaciones utilizan un sistema híbrido de notificación/análisis de eventos, en el que un primer componente que se ejecuta dentro de una máquina virtual (VM) protegida se registra como un controlador para las excepciones del procesador desencadenadas por violaciones de los permisos de acceso a la memoria, y en el que un segundo componente que se ejecuta fuera de los registros de la VM respectiva como controlador de eventos de salida de VM. El primer componente filtra los eventos de violación de permisos de acuerdo con un conjunto de reglas y solo notifica al segundo componente sobre los eventos que se consideran relevantes para la seguridad. El segundo componente analiza los eventos notificados para detectar software malicioso. (Traducción automática con Google Translate, sin valor legal)

Description

DESCRIPCIÓN
Filtrado de eventos para aplicaciones de seguridad de máquina virtual
Esta solicitud reivindica el beneficio de la fecha de presentación de la solicitud de patente provisional de EE. UU. N° 62.436.027, presentada el 19/12/2016, titulada "Event Filter for Accelerating Computer Security Operations in Virtual Machines" (Filtrado de Eventos para Acelerar las Operaciones de Seguridad Informática en las Máquinas Virtuales”).
Antecedentes
La invención se refiere a sistemas y métodos de seguridad informática y, en particular, a sistemas y métodos para proteger máquinas virtuales contra software malicioso.
El software malicioso, también conocido como malware, afecta a un gran número de sistemas informáticos en todo el mundo. En sus muchas formas, tales como virus informáticos, “rootkits” (herramientas para la detección de piratas informáticos”), “spyware” (“programa espía”) y “ransomware” (“cibersecuestro de datos”), el malware presenta un grave riesgo para millones de usuarios de ordenadores, haciéndolos vulnerables a la pérdida de datos e información confidencial, robo de identidad y pérdida de productividad, entre otros. El software de seguridad informática se puede utilizar para proteger un sistema informático del malware.
La tecnología de virtualización de hardware permite la creación de entornos informáticos simulados comúnmente conocidos como máquinas virtuales (VM), que se comportan en muchos aspectos como sistemas informáticos físicos. En aplicaciones típicas tales como la consolidación de servidores y la infraestructura como servicio (también conocida con el nombre popular de "computación en la nube"), varias máquinas virtuales pueden ejecutarse simultáneamente en el mismo sistema informático, compartiendo recursos de hardware entre ellas, reduciendo así los costes de inversión y funcionamiento. Cada máquina virtual puede ejecutar su propio sistema operativo y/o aplicaciones de software, por separado de otras máquinas virtuales. Cada VM de este tipo requiere potencialmente protección contra las amenazas a la seguridad informática.
Colocar el software de seguridad informática fuera de la máquina virtual protegida normalmente garantiza un alto grado de protección. Sin embargo, el funcionamiento del software de seguridad informática es sustancialmente más complejo y costoso desde el punto de vista computacional cuando se lleva a cabo en tales configuraciones, en comparación con los entornos no virtualizados. En los sistemas antimalware de virtualización de hardware convencionales, los eventos relevantes para la seguridad que ocurren dentro de la VM protegida normalmente hacen que el procesador de hardware suspenda la ejecución de la VM respectiva y cambie para ejecutar el software de seguridad fuera de la VM protegida. Luego, el procesador puede volver a cambiar para ejecutar la VM protegida en respuesta al análisis de eventos. Los ciclos frecuentes de suspensión/reanudación de VM conllevan un coste computacional sustancial y pueden afectar a la productividad y a la experiencia del usuario.
Existe un interés sustancial en mejorar la eficiencia de las operaciones de seguridad informática en las plataformas de virtualización de hardware. Los documentos US2016/048679A1, US2016/048679A1, y US2014/115652A1 constituyen la técnica anterior pertinente.
Compendio
Según un aspecto, un sistema anfitrión comprende un procesador de hardware y una memoria. El procesador de hardware está configurado para ejecutar una máquina virtual (VM), un filtro de eventos y un motor de introspección, el filtro de eventos se ejecuta dentro de la VM y el motor de introspección se ejecuta fuera de la VM. El procesador de hardware está configurado además para generar una primera excepción en respuesta a la detección de un intento de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria, y en respuesta a la primera excepción, para cambiar desde la ejecución de la entidad de software hasta la ejecución del filtro de eventos. El procesador de hardware está configurado además, en respuesta a una segunda excepción, para cambiar de ejecutar el filtro de eventos a ejecutar el motor de introspección. El filtro de eventos está configurado, en respuesta a la primera excepción, para determinar según un criterio de elegibilidad de evento si el intento es elegible para su notificación al motor de introspección. El filtro de eventos está configurado además, en respuesta a la determinación de si el intento es elegible para su notificación, cuando el intento es elegible, para hacer que el procesador genere la segunda excepción, y cuando el intento no es elegible, para impedir que el procesador genere la segunda excepción y, en su lugar, hacer que el procesador reanude la ejecución de la entidad de software. El motor de introspección está configurado para determinar si el intento es malicioso.
Según otro aspecto, un método protege un sistema anfitrión de amenazas a la seguridad informática. El sistema anfitrión comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual (VM), un filtro de eventos y un motor de introspección, el filtro de eventos ejecutándose dentro de la VM, el motor de introspección ejecutándose fuera de la VM. El método comprende: configurar el procesador de hardware para generar una primera excepción en respuesta a la detección de un intento por parte de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria. El método comprende además configurar el procesador de hardware para cambiar, en respuesta a la primera excepción, de ejecutar la entidad de software a ejecutar el filtro de eventos, y para cambiar, en respuesta a una segunda excepción, de ejecutar el filtro de eventos a ejecutar el motor de introspección. El método comprende además, en respuesta a la primera excepción, emplear el filtro de eventos para determinar según un criterio de elegibilidad de eventos si el intento es elegible para su notificación al motor de introspección. El método comprende además, en respuesta a la determinación de si el intento es elegible para su notificación, cuándo el intento es elegible, hacer que el procesador genere la segunda excepción, y cuando el intento no es elegible, impedir que el procesador genere la segunda excepción y en su lugar, hacer que el procesador reanude la ejecución de la entidad de software. El método comprende además, en respuesta a la segunda excepción, emplear el motor de introspección para determinar si el intento es malicioso.
Según otro aspecto, un medio legible por ordenador no transitorio almacena instrucciones que, cuando son ejecutadas por un procesador de hardware de un sistema anfitrión que expone una máquina virtual, hacen que el sistema anfitrión forme un filtro de eventos y un motor de introspección, ejecutando el filtro de eventos dentro de la VM, el motor de introspección ejecutándose fuera de la VM. El motor de introspección está configurado para configurar el procesador de hardware para generar una primera excepción en respuesta a la detección de un intento por parte de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria. El motor de introspección está configurado además para configurar el procesador de hardware para cambiar, en respuesta a la primera excepción, de ejecutar la entidad de software a ejecutar el filtro de eventos, y para cambiar, en respuesta a una segunda excepción, de ejecutar el filtro de eventos a ejecutar el motor de la introspección. El motor de introspección está configurado además, en respuesta a la segunda excepción, para determinar si el intento es malicioso. El filtro de eventos está configurado, en respuesta a la primera excepción, para determinar según un criterio de elegibilidad de eventos si el intento es elegible para su notificación al motor de introspección. El filtro de eventos está configurado además, en respuesta a determinar si el intento es elegible para su notificación, cuando el intento es elegible, hace que el procesador genere la segunda excepción, y cuando el intento no es elegible, para impedir que el procesador genere la segunda excepción y, en su lugar, hacer que el procesador reanude la ejecución de la entidad de software.
Breve descripción de los dibujos
Los aspectos y ventajas anteriores de la presente invención se entenderán mejor con la lectura de la siguiente descripción detallada y con la referencia a los dibujos donde:
La Fig. 1 ilustra una configuración de hardware ejemplar de un sistema anfitrión según algunas realizaciones de la presente invención.
La Fig. 2 muestra un conjunto de máquinas virtuales invitadas (VM) expuestas por un hipervisor que se ejecuta en el sistema anfitrión, y un conjunto de componentes de seguridad que protegen las VM respectivas según algunas realizaciones de la presente invención.
La Fig. 3 muestra una traducción de dirección de memoria ejemplar en una configuración de máquinas virtuales como se ilustra en la Fig.2.
La Fig. 4 muestra una entrada de tabla de páginas ejemplar según algunas realizaciones de la presente invención. La Fig. 5 ilustra componentes ejemplares de un filtro de eventos que se ejecuta dentro de una máquina virtual invitada protegida según algunas realizaciones de la presente invención.
La Fig. 6 muestra una secuencia ejemplar de etapas realizadas para instalar e inicializar el software de seguridad en un sistema anfitrión según algunas realizaciones de la presente invención.
La Fig. 7 muestra una secuencia ejemplar de etapas llevadas a cabo por el filtro de eventos según algunas realizaciones de la presente invención.
La Fig. 8 ilustra una secuencia ejemplar de etapas realizadas por el componente verificador de elegibilidad del filtro de eventos para determinar si un evento interceptado es elegible para su notificación al motor de introspección, según algunas realizaciones de la presente invención.
La Fig. 9 muestra otra secuencia ejemplar de etapas realizadas por el verificador de elegibilidad para determinar si un evento interceptado es elegible para su notificación, según algunas realizaciones de la presente invención.
La Fig. 10 muestra una secuencia ejemplar de etapas realizadas por el motor de introspección según algunas realizaciones de la presente invención.
Descripción detallada de las realizaciones preferidas
En la siguiente descripción, se entiende que todas las conexiones enumeradas entre estructuras 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. Cualquier enumeración de un elemento se entiende que se refiere a al menos un elemento. Una pluralidad de elementos incluye al menos dos elementos. A menos que se requiera lo contrario, no es necesario que las etapas del método descritas se realicen necesariamente en un orden ilustrado particular. Un primer elemento (p. ej., datos) derivado de un segundo elemento abarca un primer elemento igual al segundo elemento, así como un primer elemento generado al procesar el segundo elemento y, opcionalmente, otros datos. Tomar una determinación o decisión según un parámetro comprende 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 alguna cantidad/datos puede ser la cantidad/dato en sí, o un indicador diferente de la cantidad/dato en sí. La seguridad informática abarca la protección de usuarios y equipos contra el acceso no intencionado o no autorizado a datos y/o hardware, la modificación no intencionada o no autorizada de datos y/o hardware, y la destrucción de datos y/o hardware. Un programa informático es una secuencia de instrucciones del procesador que llevan a cabo una tarea. Los programas informáticos descritos en algunas realizaciones de la presente invención pueden ser entidades o subentidades de software independientes (p. ej., subrutinas, bibliotecas) de otros programas informáticos. A menos que se especifique lo contrario, un proceso es una instancia de un programa informático, tal como una aplicación o una parte de un sistema operativo, y se caracteriza por tener asignado al menos un hilo de ejecución y un espacio de memoria virtual, en donde el contenido del espacio de memoria virtual respectivo incluye código ejecutable. A menos que se especifique lo contrario, una página representa la unidad más pequeña de memoria virtual que se puede mapear individualmente a una memoria física de un sistema anfitrión. Se dice que un programa se ejecuta dentro o en el interior de una máquina virtual cuando se ejecuta en un procesador virtual de la máquina virtual respectiva. Los medios legibles por ordenador abarcan medios no transitorios tales como medios de almacenamiento magnéticos, ópticos y de semiconductores (p. ej., discos duros, discos ópticos, memoria flash, DRAM), así como enlaces de comunicación tales como cables conductores y enlaces de fibra óptica. Según algunas realizaciones, la presente invención proporciona, entre otros, sistemas informáticos que comprenden hardware (p. ej., uno o más procesadores) programados para realizar los métodos descritos en este documento, así como instrucciones de codificación de medios legibles por ordenador para realizar los métodos descritos en la presente memoria.
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 ejemplar de un sistema anfitrión 10 protegido contra amenazas a la seguridad informática según algunas realizaciones de la presente invención. El sistema anfitrión 10 puede representar un dispositivo informático corporativo, tal como un servidor de empresa, o un dispositivo de usuario final, tal como un ordenador personal, una tableta o un teléfono inteligente. Otros sistemas anfitriones ejemplares incluyen consolas de juegos, electrodomésticos tales como televisores inteligentes, dispositivos informáticos portátiles o cualquier otro dispositivo que tenga una memoria y un procesador. El sistema anfitrión 10 se puede utilizar para ejecutar un conjunto de aplicaciones de software, tales como un navegador, una aplicación de procesamiento de texto y una aplicación de comunicación electrónica (p. ej., correo electrónico, mensajería instantánea), entre otras. En algunas realizaciones, el sistema anfitrión 10 está configurado para soportar la virtualización de hardware y exponer un conjunto de máquinas virtuales, como se ha mostrado a continuación.
Por simplicidad, la Fig. 1 ilustra un sistema informático; la configuración de hardware de otros sistemas anfitrión, tales como teléfonos inteligentes y tabletas, puede diferir. El sistema 10 comprende un conjunto de dispositivos físicos, incluido un procesador 12, una unidad 18 de memoria, un conjunto de dispositivos 14 de entrada, un conjunto de dispositivos 16 de salida, un conjunto de dispositivos 20 de almacenamiento, y un conjunto de adaptadores 22 de red, todos interconectados por un concentrador 24 del controlador. El procesador 12 comprende un dispositivo físico (p. ej., un microprocesador, un circuito integrado multinúcleo formado sobre un sustrato semiconductor) 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 entregan al procesador 12 en forma de una secuencia de instrucciones del procesador (p. ej., código de máquina u otro tipo de software). Unidad 18 de memoria puede comprender medios volátiles legibles por computadora (p. ej., RAM) que almacenan datos/señales a los que accede o genera el procesador 12 mientras lleva a cabo las instrucciones.
Los dispositivos 14 de entrada pueden incluir teclados, ratones y micrófonos de ordenador, entre otros, incluidas las interfaces de hardware y/o adaptadores respectivos que permiten al usuario introducir datos y/o instrucciones en el sistema anfitrión 10. Los dispositivos 16 de salida pueden incluir dispositivos de visualización tales como monitores y altavoces, entre otros, así como interfaces/adaptadores de hardware tales como tarjetas gráficas, que permiten al sistema anfitrión 10 comunicar datos a un usuario. En algunas realizaciones, los dispositivos 14 de entrada y los dispositivos 16 de salida pueden compartir una pieza 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, la lectura y la escritura no volátiles de instrucciones y/o datos del procesador. Los dispositivos 20 de almacenamiento ejemplares incluyen discos magnéticos y ópticos y dispositivos de memoria flash, así como medios extraíbles tales como discos y unidades de CD y/o DVD. El conjunto de adaptadores 22 de red habilita el sistema anfitrión 10 para conectarse a una red informática y/o a otros dispositivos/sistemas informáticos. El concentrador 24 del controlador representa genéricamente la pluralidad de buses de sistema, periféricos y/o conjunto de chips, y/o todos los demás circuitos que permiten la comunicación entre el procesador 12 y los dispositivos 14, 16, 18, 20 y 22. Por ejemplo, el concentrador 24 del controlador puede incluir una unidad de gestión de memoria (MMU), un controlador de entrada/salida (E/S) y un controlador de interrupción, entre otros. En otro ejemplo, el concentrador 24 del controlador puede incluir un procesador 12 de conexión de puente norte a la memoria 18 y/o un procesador 12 de conexión de puente sur a los dispositivos 14, 16, 20, y 22. En algunas plataformas de hardware, la MMU está integrada, en parte o en su totalidad, con el procesador 12, es decir, la MMU comparte un sustrato semiconductor común con el procesador 12.
La Fig. 2 muestra una configuración ejemplar en donde un conjunto de componentes de seguridad colaboran para proteger un conjunto de máquinas virtuales contra amenazas a la seguridad informática según algunas realizaciones de la presente invención. El sistema anfitrión 10 ilustrado utiliza tecnología de virtualización de hardware para hacer funcionar un conjunto de máquinas virtuales invitadas (VM) 32a-b expuesto por un hipervisor 30. Aunque la Fig. 2 se redactó para mostrar solo dos VM invitadas, algunas realizaciones pueden albergar muchas más VM (p. ej., cientos) que funcionan simultáneamente. La utilización de un hipervisor para gestionar múltiples máquinas virtuales es común en aplicaciones tales como la computación en la nube y la consolidación de servidores, entre otras. Ejemplos de hipervisores populares incluyen VMware vSphere® de VMware Inc. y el hipervisor Xen de código abierto, entre otros.
Las máquinas virtuales se conocen en la técnica como emulaciones de máquinas físicas/sistemas informáticos reales, capaces de ejecutar un sistema operativo y otras aplicaciones. En algunas realizaciones, el hipervisor 30 incluye un software configurado para crear o habilitar una pluralidad de dispositivos virtualizados, tales como un procesador virtual y controladores virtuales, y para presentar tales dispositivos virtualizados al software en lugar de los dispositivos físicos reales del sistema anfitrión 10. Tales operaciones de hipervisor 30 se conocen comúnmente en la técnica como exposición de una máquina virtual. El hipervisor 30 normalmente permite multiplexar (compartir) los recursos de hardware del sistema anfitrión 10 mediante múltiples máquinas virtuales. El hipervisor 30 puede gestionar además el hardware del sistema anfitrión 10 para que cada VM invitada 32a-b funcione de forma independiente y no tiene conocimiento de otras VM que se ejecutan simultáneamente en el sistema anfitrión 10.
Cada dispositivo virtualizado (p. ej., procesador, entrada, salida, almacenamiento, etc.) emula al menos parte de la funcionalidad del dispositivo físico respectivo del sistema anfitrión 10. Por ejemplo, el software que se ejecuta en el procesador virtualizado de una VM invitada puede enviar y/o recibir tráfico de red a través de un adaptador de red virtualizado. En algunos ejemplos, el hipervisor 30 puede exponer solo un subconjunto de dispositivos virtualizados a cada VM invitada (por ejemplo, solo un procesador virtualizado, memoria y partes de un concentrador de controlador). El hipervisor 30 también puede proporcionar una VM seleccionada el uso directo y exclusivo de algunos dispositivos de hardware del sistema anfitrión 10. En tal ejemplo, la VM invitada 32a (Fig. 2) puede tener el uso exclusivo de los dispositivos 14 de entrada y los dispositivos 16 de salida, pero carecen de un adaptador de red virtualizado. Mientras tanto, la VM invitada 32b puede tener el uso directo y exclusivo del adaptador(es) 22 de red. Tales configuraciones pueden implementarse, por ejemplo, utilizando tecnología VT-d® de Intel®.
En algunas realizaciones, exponer cada VM invitada 32a-b comprende la configuración de una estructura de datos utilizada por el hipervisor 30 para gestionar el funcionamiento de la VM invitada respectiva. Tal estructura se denominará en la presente memoria objeto de estado de máquina virtual (VMSO). Los VMSO ejemplares incluyen la estructura de control de máquina virtual (VMCS) en las plataformas Intel® y el bloque de control de máquina virtual (VMCB) en las plataformas AMD®. En algunas realizaciones, el procesador 16 asocia una región en la memoria con cada VMSO, de modo que el software pueda hacer referencia a un VMSO específico utilizando una dirección de memoria o puntero (p. ej., un puntero VMCS en plataformas Intel®).
Cada VMSO puede comprender datos que representan un estado actual de un procesador virtualizado respectivo expuesto en el sistema anfitrión 10. En configuraciones multiproceso, procesador 12 de hardware puede hacer funcionar una pluralidad de núcleos, comprendiendo cada núcleo además múltiples procesadores lógicos, en donde cada procesador lógico puede procesar un hilo de ejecución independientemente de, y simultáneamente con, otros procesadores lógicos. Múltiples procesadores lógicos pueden compartir algunos recursos de hardware, por ejemplo, una MMU común. En una realización de múltiples procesos, se puede configurar un VMSO distinto para cada procesador lógico distinto. El VMSO respectivo puede comprender un área de estado de invitado y un área de estado de anfitrión, el área de estado de invitado que contiene el estado de la CPU de la VM respectiva y el área de estado de anfitrión que almacena el estado actual del hipervisor 30. En algunas realizaciones, el área de estado invitado del VMSO incluye contenidos de los registros de control (p. ej., CR0, CR3, etc.), puntero de instrucciones (p. ej., RIP), registros de propósito general (p. ej., EAX, ECX, etc.), y registros de estado (p. ej., EFLAGS) del procesador virtual de la VM respectiva, entre otros. El área de estado de anfitrión del VMSO puede incluir un puntero (p. ej., un puntero EPT en plataformas Intel®) a una tabla de páginas configurada para traducciones de direcciones para la VM respectiva.
En algunas realizaciones, el procesador 12 puede almacenar una parte de un VMSO dentro de registros/cachés internos dedicados, mientras que otras partes del VMSO respectivo pueden residir en la memoria 18. En un momento dado, se puede cargar como máximo un VMSO (denominado en la presente memoria el VMSO actual) en un procesador lógico, identificando la máquina virtual que actualmente tiene el control del procesador lógico respectivo. Cuando el procesador 12 cambia de ejecutar una primera VM a ejecutar una segunda VM o hipervisor 30, el procesador 12 puede guardar el estado actual de la primera VM en el área de estado de invitado del VMSO actual.
Cada una de las VM invitadas ilustradas (Fig. 2) puede ejecutar un sistema operativo invitado (OS) 34a-b, respectivamente. Los sistemas operativos 34a-b puede comprender cualquier sistema operativo ampliamente disponible, tal como Microsoft Windows®, Mac OS®, Linux®, iOS® o Android®, entre otros. Cada Os 34a-b proporciona una interfaz entre las aplicaciones que se ejecutan dentro de la VM respectiva y los dispositivos de hardware (virtualizados) de la VM respectiva. Un conjunto de aplicaciones ejemplares 36a-b representan genéricamente cualquier aplicación de software, tal como procesamiento de textos, procesamiento de imágenes, reproductor multimedia, base de datos, calendario, gestión de contactos personales, navegador, juegos, comunicación de voz, comunicación de datos y aplicaciones de seguridad informática, entre otras. En la siguiente descripción, se dice que el software que se ejecuta en un procesador virtual de una máquina virtual se ejecuta dentro de la máquina virtual respectiva. Por ejemplo, en el ejemplo de la Fig. 2, la aplicación 36a se dice que se ejecuta dentro de la VM invitada 32a, mientras la aplicación 36b se dice que se ejecuta dentro de la VM invitada 32b. Por el contrario, el hipervisor 30 se dice que se ejecuta fuera o debajo de las VM invitadas 32a-b.
En algunas realizaciones, una pluralidad de componentes de seguridad colaboran para proteger las VM invitadas 32a-b contra las amenazas a la seguridad informática, tales como el software malicioso. La Fig. 2 ilustra tales componentes de seguridad como un conjunto de filtros 42a-b de eventos que se ejecutan dentro de VM invitadas 32a-b, respectivamente, y un motor 40 de introspección que se ejecuta fuera de las VM invitadas 32a-b. El motor 40 de introspección puede incluir además un gestor 44 de notificaciones. En algunas realizaciones, cada filtro 42a-b de eventos detecta la ocurrencia de ciertos eventos durante la ejecución del software dentro de la VM invitada respectiva. Eventos ejemplares interceptados por los filtros 42a-b incluyen una excepción y/o interrupción del procesador, llamando a ciertas funciones del OS 34a-b, acceder a un registro de OS 34a-b, descargar un archivo desde una ubicación remota y escribir datos en un archivo, entre otros. En algunas realizaciones, los filtros 42a-b se ejecutan en un nivel de privilegio de procesador del sistema operativo respectivo (p. ej., modo kernel).
Los filtros 42a-b de eventos pueden filtrar los eventos detectados según un conjunto de normas, para identificar un subconjunto de eventos que son especialmente relevantes para la seguridad informática y para notificar al motor 40 de introspección acerca de la ocurrencia del subconjunto seleccionado de eventos. En algunas realizaciones, el motor 40 de introspección analiza las notificaciones recibidas para determinar si los eventos respectivos indican un ataque de malware. El motor 40 también puede llevar a cabo otras operaciones relacionadas con la seguridad, tales como determinar una dirección de una sección de memoria que contiene una parte de un objeto de software que se ejecuta dentro de una VM invitada, acceder a la sección de memoria respectiva y analizar el contenido almacenado dentro de la sección de memoria respectiva. Otros ejemplos de operaciones de seguridad realizadas por el motor 40 de introspección incluyen interceptar y/o restringir el acceso a ciertas secciones de la memoria, p. ej., impedir la sobrescritura de código o datos pertenecientes a un proceso protegido, e impedir la ejecución de código almacenado en ciertas páginas de memoria.
Un único motor 40 de introspección puede proteger múltiples VM invitadas que se ejecutan en el sistema anfitrión 10. El motor 40 se puede incorporar al hipervisor 30 (por ejemplo, como un conjunto de bibliotecas), o se puede entregar como un programa informático distinto e independiente del hipervisor 30, pero que se ejecuta en el nivel de privilegio del procesador del hipervisor 30. El motor 40 puede o no ser un proceso (que tiene un subproceso de ejecución programado separado). En algunas realizaciones, el motor 40 comprende una colección de objetos de código no programados que se ejecutan cuando son activados por ciertos eventos del procesador. El funcionamiento de los filtros 42a-b de eventos y del motor 40 de introspección se describe con más detalle a continuación.
Los procesadores modernos implementan una jerarquía de niveles de privilegio del procesador, también conocidos en la técnica como anillos de protección. Cada anillo o nivel de este tipo se caracteriza por un conjunto de acciones y/o instrucciones del procesador que se permite llevar a cabo al software que se ejecuta dentro del anillo respectivo. Los niveles/anillos de privilegio ejemplares incluyen el modo de usuario (anillo 3) y el modo kernel (anillo 0). Algunos sistemas anfitrión configurados para soportar la virtualización de hardware pueden incluir un anillo adicional con los privilegios de procesador más altos (p. ej., anillo -1, modo raíz o VMXroot en las plataformas Intel®). En algunas realizaciones, el hipervisor 30 toma el control del procesador 12 en el nivel más privilegiado (anillo -1), creando así una plataforma de virtualización de hardware expuesta como una máquina virtual a otro software que se ejecuta en el sistema anfitrión 10. Un sistema operativo, tal como un OS invitado 34a en la Fig. 2, se ejecuta dentro del entorno virtual de la VM respectiva, normalmente con menos privilegios de procesador que el hipervisor 30 (p. ej., en anillo 0 o modo kernel). Las aplicaciones de usuario comunes, tales como la aplicación 36a, normalmente se ejecuta con menos privilegios de procesador que el OS 34a (por ejemplo, en el anillo 3 o en modo usuario). Cuando un objeto de software intenta ejecutar una acción o instrucción que requiere más privilegios de procesador que los permitidos por su anillo de protección asignado, el intento normalmente genera un evento de procesador, tal como una excepción o un fallo, que transfiere el control del procesador. 12 a una entidad (p. ej., filtro de eventos del sistema operativo) que se ejecuta en un anillo con privilegios suficientes para llevar a cabo la acción respectiva.
En particular, la ejecución de algunas instrucciones del procesador requiere el nivel de privilegio del hipervisor 30 (p. ej., VMXroot). Ejemplos de tales instrucciones incluyen VMCALL en plataformas Intel®. En algunos sistemas de hardware, la invocación de tal instrucción desde dentro de una máquina virtual genera un tipo particular de fallo conocido como evento de salida de la máquina virtual (p. ej., VMExit en plataformas intel®). Los eventos de salida de VM suspenden la ejecución de la máquina virtual respectiva y cambian de procesador 12 para ejecutar una rutina de gestor fuera de la VM respectiva, normalmente en el nivel de privilegio del procesador del hipervisor 30.
En algunas plataformas de hardware, las salidas de la VM se pueden activar por otros tipos de eventos, tales como una violación de un permiso de acceso a la memoria. En uno de tales ejemplos, cuando un objeto de software que se ejecuta dentro de una VM intenta escribir datos en una página de memoria marcada como que no se puede escribir, o ejecutar código desde una página de memoria marcada como no ejecutable, el procesador 12 puede generar una falla de página y, en respuesta, suspender la ejecución de la VM respectiva y cambiar a la ejecución del hipervisor 30. Tales mecanismos de salida pueden permitir, por ejemplo, que un programa de seguridad informática se ejecute fuera de la VM respectiva (tal como un motor 40 de introspección) para proteger la máquina virtual contra amenazas de seguridad. En algunas realizaciones, el motor 40 de introspección intercepta los eventos de salida de la VM que ocurren durante la ejecución del software dentro de la VM y analiza tales eventos, potencialmente sin el conocimiento del software en la VM. En caso de que el evento sea indicativo de un ataque, el motor 40 puede realizar varias acciones para mitigar amenazas, tales como suspender la ejecución de la VM invitada respectiva, cortar las comunicaciones hacia y/o desde la VM invitada respectiva, inyectar un agente de limpieza en la VM invitada respectiva, alertar a un usuario del sistema anfitrión 10, etc.
Las plataformas informáticas modernas optimizadas para la virtualización de hardware también están configuradas para generar otro tipo de evento del procesador activado por instrucciones privilegiadas y/o violaciones de los permisos de acceso a la memoria. Tales eventos de procesador se conocen comúnmente como excepciones de virtualización (p. ej., #VE en plataformas Intel®), y hacer que el procesador cambie de ejecutar software dentro de la VM invitada a ejecutar una rutina de gestor también dentro de la VM invitada respectiva, evitando así el coste computacional típicamente asociado con un evento de salida de la VM. Algunos procesadores se pueden configurar para generar de forma selectiva un evento de salida de la VM o una excepción de virtualización en respuesta a diferentes situaciones.
Las máquinas virtuales normalmente funcionan con una memoria física virtualizada, también conocida en la técnica como memoria física invitada. La memoria física virtualizada comprende una representación abstracta de la memoria física real 18, por ejemplo, como un espacio contiguo de direcciones específicas para cada VM, con partes de dicho espacio mapeadas a direcciones dentro de la memoria física 18 y/o dispositivos 20 de almacenamiento físico. En las plataformas modernas de virtualización de hardware, tal mapeo normalmente se logra a través de estructuras y mecanismos de datos dedicados controlados por el procesador 12, conocida como traducción de direcciones de segundo nivel (SLAT). Las implementaciones populares de SLAT incluyen tablas de páginas extendidas (EPT) en plataformas Intel® e indexación de virtualización rápida (RVI)/tablas de páginas anidadas (NPT) en plataformas AMD®. En tales sistemas, la memoria física virtualizada se divide en unidades conocidas en la técnica como páginas, 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 SLAT, es decir, el mapeo entre la memoria física y física virtualizada se realiza con granularidad de página. Todas las páginas normalmente tienen un tamaño predeterminado, p. ej., 4 kilobytes, 2 megabytes, etc. El hipervisor 30 suele configurar la partición de la memoria física virtualizada en páginas. En algunas realizaciones, el hipervisor 30 también configura las estructuras SLAT y por lo tanto el mapeo entre la memoria física y la memoria física virtualizada. En algunas realizaciones, un puntero a una estructura de datos SLAT (p. ej., a una tabla de páginas) se almacena dentro del VMSO de la máquina virtual respectiva. El mapeo real (traducción) de una dirección de memoria física virtualizada a una dirección de memoria física puede comprender buscar la dirección de memoria física en un búfer de traducción anticipada (TLB) del sistema anfitrión 10. En el caso de una pérdida de TLB, la traducción de direcciones comprende realizar un recorrido de página, que incluye un conjunto de búsquedas de direcciones sucesivas en un conjunto de tablas de páginas y/o directorios de páginas, y realizar cálculos tales como añadir un desplazamiento de una página a una dirección relativa a la página respectiva.
La Fig. 3 ilustra un mapeo de direcciones de memoria en una realización como se ha mostrado en la Fig. 2. La VM invitada 32 representa genéricamente cualquier máquina virtual invitada que se ejecuta en el sistema anfitrión 10, por ejemplo, las VM 32a-b en la Fig. 2. Después de la exposición por el hipervisor 30, la VM invitada 32 ve un espacio 118 de memoria física virtualizada como su propio espacio de memoria física. Un objeto de software (p. ej., un proceso) que se ejecuta dentro de la VM invitada 32 se le asigna un espacio 218 de memoria virtual por un OS invitado 34 de la VM respectiva. Cuando el objeto de software intenta acceder a un contenido de una página 50a de memoria ejemplar del espacio 218a, una dirección de la página 50a es traducida por el procesador virtualizado de la VM invitada 32 en una dirección de una página 50b de espacio 118 de memoria física virtualizada, según las tablas de páginas configuradas y controladas por el OS invitado 34. La dirección de la página 50b es mapeada además por el procesador físico 16 a una dirección de una página 50c dentro de la memoria física 18 utilizando SLAT configurado por el hipervisor 30.
Espacio 118 de dirección virtual se conoce comúnmente en la técnica como memoria física de invitado, y una dirección dentro de tal espacio de memoria se denomina dirección física de invitado (GPA). Espacio 218 de dirección habitualmente se denomina memoria virtual de invitado y está indexada por direcciones virtuales de invitado (GVA). Las direcciones dentro de la memoria física 18 habitualmente se denominan direcciones físicas de anfitrión (HPA).
Una traducción/mapeo 52 de dirección en la Fig. 3 por lo tanto, se denomina traducción de GVA a GPA. Por el contrario, una traducción 54 de dirección se conoce comúnmente como una traducción de GPA a HPA.
Las traducciones 52 y 54 de dirección se basan en el mecanismo de paginación de memoria y la utilización de tablas de páginas. Las tablas de páginas son estructuras de datos que generalmente almacenan un mapeo entre páginas de memoria física y virtual en forma de una colección de entradas de tablas de páginas. El formato de las entradas de la tabla de páginas puede variar de una plataforma de hardware a otra y/o de una versión del OS a otra. Una entrada 51 de tabla de páginas ejemplar se ilustra en la Fig. 4. Cada entrada de la tabla de páginas puede corresponder a una página de memoria virtual, por ejemplo a la página 50a dentro del espacio 218 de memoria en la Fig. 3. En algunas realizaciones, la entrada 51 de la tabla de páginas comprende un conjunto de campos que almacenan, entre otros, una dirección A y un conjunto de indicadores F. La dirección A es normalmente una dirección física; en plataformas de virtualización de hardware, puede representar un GPA. En un sistema que implementa tablas de páginas jerárquicas, la dirección A puede indicar una dirección de otra tabla de páginas. El contenido de los campos de bandera varía entre las implementaciones. En algunas realizaciones, las banderas son bits de control que indican, por ejemplo, si la página respectiva está presente en la memoria (en lugar de intercambiarse en el disco), si el contenido de la página respectiva ha cambiado desde la última vez que se intercambió, si un intento para acceder a una dirección dentro de la página respectiva genera una fallo (tal como un VMexit o una excepción de virtualización), si un proceso que se ejecuta en modo de usuario puede acceder a la página respectiva, etc. Otras banderas/bits de control pueden indicar un conjunto de permisos de acceso a la memoria (p. ej., leer, escribir, ejecutar). En algunas realizaciones, la entrada 51 de la tabla de páginas puede almacenar además un identificador del espacio de memoria respectivo (p. ej., ID de proceso) y/o diferente información estadística utilizada por los componentes de gestión de memoria del sistema operativo.
En algunas realizaciones, el hipervisor 30 establece su propio espacio 318 de memoria virtual que comprende una representación de la memoria física 18, y emplea un mecanismo de traducción (por ejemplo, tablas de páginas) para mapear direcciones en el espacio 318 a direcciones en la memoria física 18. En la Fig. 3, un mapeo tan ejemplar traduce la dirección de una página 50f dentro del espacio virtual 318 a la dirección física de la página 50c, y la dirección de una página 50d a la dirección física de la página 50e. Tales mapeos permiten potencialmente que cualquier objeto de software se ejecute en el nivel de privilegio del procesador del hipervisor 30 para gestionar páginas de memoria pertenecientes a objetos de software que se ejecutan dentro de diferentes VM que se ejecutan en el sistema anfitrión 10. En particular, el motor 40 de introspección de la memoria puede enumerar, leer, escribir y controlar el acceso a/desde páginas de memoria física utilizadas por un proceso que se ejecuta dentro de la VM invitada 32.
La Fig. 5 muestra componentes ejemplares de un filtro 42 de eventos según algunas realizaciones de la presente invención. El filtro 42 puede representar genéricamente cualquiera de los filtros 42a-b de eventos en la Fig. 2. En algunas realizaciones, el filtro 42 de eventos está registrado con el procesador 12 como el componente de software configurado para manejar excepciones de virtualización para la VM invitada respectiva. Este registro significa que cuando un evento que ocurre durante la ejecución de un proceso invitado dentro de la VM invitada respectiva activa una excepción de virtualización, el procesador 12 suspende la ejecución del proceso invitado respectivo y cambia a la ejecución del filtro 42. El filtro 42 puede incluir un verificador 46 de elegibilidad y un generador 48 de notificaciones conectado al verificador 46 de elegibilidad.
En algunas realizaciones, el verificador 46 de elegibilidad está configurado para filtrar eventos que activaron excepciones de virtualización, para producir un subconjunto de eventos considerados indicativos de malware o de otras maneras relevantes para la seguridad informática. Eventos relevantes para la seguridad ejemplares pueden incluir, por ejemplo, un intento de sobrescribir un campo de una entrada de la tabla de páginas, un intento de ejecutar un componente crítico del OS, tal como una función de asignación de memoria, un intento de leer, escribir o ejecutar código para/desde una sección de memoria específica, etc. El generador 48 de notificaciones puede estar configurado para notificar al motor 40 de introspección acerca de la ocurrencia del subconjunto seleccionado de eventos producidos por el verificador 46 de elegibilidad. El mecanismo de notificación puede emplear cualquier método conocido en el campo de la virtualización de hardware, tal como activar un evento de salida de VM a través de una instrucción de procesador privilegiada tal como VMCALL. El generador 48 de notificaciones puede transmitir datos, tales como detalles o parámetros de los eventos notificados, al motor 40 de introspección por ejemplo, escribiendo los datos respectivos en una sección predeterminada de la memoria compartida entre el filtro 42 y motor 40.
En algunas realizaciones, el filtro 42 de eventos comprende además un emulador 47 configurado para emular la ocurrencia del evento que activó una excepción de virtualización. Es posible que se requiera emulación ya que las excepciones se activan normalmente antes de que el evento respectivo provoque cambios en la memoria y/o en el estado del procesador. En un ejemplo en donde las excepciones de virtualización se activan por violaciones de los permisos de acceso a la memoria, una instrucción del procesador tal como MOV, que haría que los datos se escribieran en una ubicación considerada que no se puede escribir, genera una excepción de virtualización antes de que cualquier dato se escriba en la ubicación respectiva. Simplemente relanzar el proceso/aplicación respectivo daría como resultado un intento de volver a ejecutar la instrucción infractora, lo que a su vez activaría una nueva excepción. Para escapar de este ciclo infinito, algunas realizaciones usan emulador 47 para emular la ocurrencia del evento respectivo antes de reiniciar el proceso/aplicación que activó la excepción en primer lugar. En el ejemplo anterior, el emulador 47 puede efectuar los cambios que habrían resultado de una ejecución real de la instrucción MOV, es decir, el emulador 47 en realidad puede escribir los datos en su ubicación de memoria prevista.
La Fig. 6 muestra una secuencia ejemplar de etapas realizadas para configurar la seguridad informática en el sistema anfitrión 10 según algunas realizaciones de la presente invención. En un escenario típico, un administrador del sistema puede instalar una aplicación de seguridad en cada anfitrión que requiera protección. La aplicación de seguridad puede comprender diferentes componentes, tales como el hipervisor 30, el motor 40 de introspección, el filtro 42 de eventos, etc. La secuencia de etapas ilustrada puede llevarse a cabo, por ejemplo, mediante una utilidad de instalación de la aplicación de seguridad respectiva. El instalador puede primero hacerse cargo del procesador 12 en el nivel de privilegio de procesador más fuerte (p. ej., modo raíz, anillo -1) e instalar el hipervisor 30. El instalador puede entonces iniciar el motor 40 de introspección.
En algunas realizaciones, el hipervisor 30 y/o el motor 40 de introspección se inician utilizando un mecanismo de arranque seguro u otra forma de autenticación conocida en la técnica, para garantizar la fiabilidad de los componentes de software respectivos. El arranque seguro puede comprender intercambios de autenticación (p. ej., verificación de hash) con un servidor de autenticación remoto. En una realización ejemplar, el arranque seguro puede emplear un componente de hardware de almacenamiento seguro del sistema anfitrión 10, tal como un Módulo de Plataforma Fiable (TPM) en plataformas Intel®, y además emplean un mecanismo de certificación de integridad tal como Tecnología de Ejecución Fiable (TXT) de Intel®.
En respuesta al lanzamiento de cada VM invitada, una etapa 407 instala el filtro 42 de eventos configurado para manejar las excepciones de virtualización que ocurren dentro de la VM respectiva. En algunas realizaciones, el filtro 42 de eventos puede colocarse subrepticiamente en la VM invitada respectiva, para evitar la detección del filtro 42 por software potencialmente malicioso. Para lograr tal inyección, el motor 40 de introspección puede ocultar el filtro 42 dentro de una sección de memoria no utilizada, o dentro de una página de memoria actualmente utilizada por otro objeto de software, tal como un controlador.
En algunas realizaciones, el motor de introspección protege el filtro 42 de eventos mediante el filtro 42 de aislamiento de otros componentes que se ejecutan dentro de la VM respectiva. En un ejemplo, el motor 40 utiliza medios SLAT para configurar un espacio de memoria de sombra distinto del espacio de memoria física del invitado utilizado por la VM invitada respectiva (p. ej., distinto del espacio 118 en una realización como se ilustra en la Fig. 3).
En la práctica, la configuración de tal espacio de memoria de sombra puede incluir el motor 40 que configura una tabla de páginas de segundo nivel (p. ej., un EPT en una plataforma Intel®) asignado al filtro 42 de eventos. Operar con una tabla de página distinta aísla el filtro 42 de cualquier otro proceso que se ejecute dentro de la VM 32, en el sentido de que tales procesos no pueden modificar los datos que pertenecen al filtro 42 de eventos. El filtro 42 de aislamiento puede comprender además la configuración del procesador 12 para cambiar, al ejecutar el filtro 42, de utilizar una tabla de páginas asociada con la VM 32 a utilizar la tabla de páginas de sombra para llevar a cabo traducciones de direcciones. El cambio de tablas de páginas puede ocurrir sin salir de la VM invitada 32, por lo que no conlleva el costo computacional de un evento de salida de VM. Un ejemplo que puede lograr un cambio de tabla de páginas incluye el filtro 42 de eventos que emite una cierta instrucción privilegiada (p. ej., VMFUNC en las plataformas Intel®), que puede ser interpretado por el procesador 12 como una señal para el cambio.
En una secuencia de etapas 408-410, el motor 40 de introspección puede proceder a identificar un conjunto de páginas de memoria que almacenan activos que son importantes para la seguridad de la VM invitada respectiva. Los ejemplos de tales activos incluyen el código que pertenece a funciones del OS que realizan operaciones tales como asignación de memoria, gestión de permisos de memoria y edición de registro, p. ej., funciones seleccionadas de las bibliotecas NTDLL.DLL y KERNEL32.DLL. en un linux® OS, las funciones relevantes para la seguridad pueden incluir funciones seleccionadas de LIBC.SO. Otros activos considerados importantes para la seguridad incluyen una tabla de páginas asociada con un proceso que se ejecuta dentro de la VM invitada.
La ubicación de memoria de algunos activos, tales como funciones específicas del OS, se puede obtener analizando ciertas estructuras de datos del OS 34. El motor 40 de introspección puede además realizar un seguimiento de un conjunto de procesos actualmente cargados y/o que se ejecutan dentro de la VM invitada respectiva. Algunas realizaciones pueden escuchar eventos indicativos de un lanzamiento de un nuevo proceso/subproceso dentro de la VM invitada, utilizando cualquier método conocido en la técnica. Algunas realizaciones ejemplares interceptan un mecanismo del OS que gestiona la lista de procesos activos. Por ejemplo, en Windows®, cada vez que se crea un proceso, se inserta un indicador del proceso respectivo en la lista de procesos activos; el indicador se elimina de la lista al finalizar el proceso respectivo. En algunas realizaciones, al iniciar un proceso, OS 34 también configura una estructura de datos específica del proceso conocida como bloque de entorno de proceso (PEB) que comprende los datos utilizados por el OS 34 para gestionar los recursos asociados al respectivo proceso. Al interceptar una instrucción del OS para insertar el proceso objetivo en la lista de procesos activos, el motor 40 puede obtener más información, tal como una dirección de memoria del PEB respectivo. En Windows@, la dirección virtual del PEB se almacena en una estructura de datos conocida como bloque de proceso ejecutivo (EPROCESS). Al analizar además tales estructuras de datos, el motor 40 de introspección puede obtener información tal como ubicaciones de memoria de un ejecutable principal y/o de bibliotecas cargadas por el proceso respectivo, así como una ubicación de memoria de una tabla de páginas (por ejemplo, el Registro Base del Directorio de Páginas - PDBR en plataformas x86) asociada con el proceso respectivo.
La ubicación de memoria de las entradas de la tabla de páginas correspondientes a diferentes procesos actualmente cargados y/o en ejecución se puede obtener, por ejemplo, leyendo el contenido de un registro de control del procesador 12 (p. ej., el registro CR3 en plataformas x86), y que realizan un recorrido de tabla de páginas. Una realización alternativa puede leer una dirección de una tabla de páginas asociada a cada proceso desde campos específicos de las estructuras EPROCESS respectivas.
Para facilitar la determinación de la ubicación de memoria de los activos críticos para la seguridad, el motor 40 de introspección puede colaborar con el filtro 42, o puede colocar un objeto auxiliar en la VM invitada respectiva. Tales estrategias están diseñadas para cerrar una brecha semántica. Normalmente, es mucho más difícil descubrir información acerca del funcionamiento interno de una máquina virtual desde una posición fuera de la VM respectiva que desde dentro de la VM respectiva. Un componente tal como el filtro 42 de eventos que se ejecuta dentro de la VM puede utilizar las funciones del OS para obtener información, tal como las direcciones de memoria de diferentes activos, y luego comunicar tal información al motor 40 de introspección utilizando el mecanismo de notificación descrito en la presente memoria.
En algunas realizaciones, en la etapa 410 (Fig. 6), el motor 40 de introspección y/o el filtro 42 pueden armar una lista de secciones de memoria protegidas que comprende una enumeración de secciones de memoria que contienen partes de activos protegidos. Una entrada de lista de ejemplo puede comprender una dirección de memoria de la sección (o un identificador de una página de memoria y un desplazamiento con respecto a un límite de página) y un indicador del tamaño de la sección respectiva. La dirección de memoria puede incluir un GPA, HPA, etc. El tamaño de la sección protegida puede ser más pequeño que el tamaño de la página. Una entrada de lista puede comprender además un indicador de un tipo de activo almacenado dentro de la sección respectiva (p. ej., controlador, tabla de páginas, datos privados, etc.). Incluir indicadores de tipo de activo en la entrada de la lista puede facilitar la ejecución del filtro 42 de eventos al permitir el filtro 42 para aplicar selectivamente criterios de elegibilidad de eventos según un tipo de activo protegido, por ejemplo, para proteger las tablas de páginas de una manera diferente a la protección de los archivos privados de un usuario. En algunas realizaciones, la lista se actualiza dinámicamente: cuando aparecen nuevos activos (p. ej., a través de lanzamientos de nuevos procesos), las secciones que almacenan partes de activos protegidos se identifican y se añaden a la lista. Cuando los activos ya no requieren protección (p. ej., cuando finaliza un proceso) o cuando los activos respectivos se mueven a otra ubicación de memoria, las entradas correspondientes a las secciones obsoletas pueden eliminarse de la lista.
En respuesta a la determinación de la ubicación de memoria de los objetos críticos para la seguridad, una etapa 412 puede establecer permisos de acceso a las secciones de memoria protegidas. Dado que en la mayoría de los sistemas informáticos actuales, los permisos solo se pueden establecer con granularidad de página, etapa 412 puede comprender establecer permisos de acceso a las páginas de memoria que albergan las secciones de memoria respectivas. Esto se puede hacer, por ejemplo, utilizando el mecanismo SLAT configurado por el hipervisor 30. Los permisos se pueden configurar para permitir que el filtro 42 de eventos detecte un intento de acceder a las secciones de memoria protegida de una manera considerada inapropiada o indicativa de malware. Para impedir la lectura no autorizada de datos de una sección protegida (p. ej., para evitar el robo de datos o un ataque de ransomware), una realización ejemplar puede marcar una página de memoria que alberga los datos respectivos como no legibles. Un intento de leer datos de la página respectiva activará posteriormente una excepción/fallo del procesador que puede servir como indicador del intento. Para detectar un intento de modificación de una entrada de la tabla de páginas, una página de memoria que alberga la entrada respectiva de la tabla de páginas puede marcarse como que no se puede escribir. Cualquier intento de escribir en la página de memoria respectiva permitirá la detección del intento. De manera similar, para detectar un intento de ejecutar una determinada función del OS, algunas realizaciones marcan una página que contiene el código de la función respectiva como no ejecutable.
En algunas realizaciones, en una etapa 414 (Fig. 6), motor 40 de introspección puede configurar el procesador 12 para activar excepciones de virtualización en respuesta a violaciones de tales permisos de acceso a la memoria. Un paso más 416 puede registrar el filtro 42 de eventos como el gestor de excepciones de virtualización y el gestor 44 de notificaciones como el gestor de eventos de salida de la VM. En respuesta a tales registros, el filtro 42 de eventos manejará una violación de un permiso de acceso a la memoria, a diferencia del motor 40 de introspección. Mientras tanto, los eventos de salida de la VM se notificarán al motor 40 de introspección a través del gestor 44 de notificaciones.
La Fig. 7 muestra una secuencia ejemplar de etapas realizadas por el filtro 42 de eventos en algunas realizaciones de la presente invención. Habiendo sido registrado como gestor de excepciones de virtualización, el filtro 42 de eventos detecta la ocurrencia de eventos que activan excepciones de virtualización durante la ejecución del software invitado. Tales eventos se denominarán en la presente memoria como eventos de activación. En respuesta a la detección de un evento de activación, en una secuencia de etapas 436-438 el filtro 42 puede determinar un tipo de evento del evento de activación respectivo, así como un conjunto de parámetros de evento. En algunas realizaciones, un indicador de la causa de la excepción de virtualización actual se almacena en un campo específico del VMSO de la VM invitada respectiva. Por lo tanto, se pueden extraer pistas acerca de la naturaleza del evento de ciertos campos del VMSO de la VM invitada respectiva. En un ejemplo en el que la excepción se activó por un intento de escribir en una página marcada como que no se puede escribir, los parámetros del evento pueden incluir una dirección de memoria del intento de escritura y el valor que el procesador intentaba escribir en la ubicación de memoria respectiva.
En algunas realizaciones, el filtro 42 de eventos notifica selectivamente al motor 40 de introspección acerca de la ocurrencia de un subconjunto de eventos de activación considerados relevantes para la seguridad. Los eventos se pueden seleccionar según un conjunto de criterios de elegibilidad, y solo los eventos considerados elegibles se pueden comunicar al motor 40 de introspección. En respuesta a la detección de la ocurrencia de un evento de activación que no se considera apto para comunicarse con el motor 40 de introspección, algunas realizaciones emplean el emulador 47 para emular el evento detectado (etapa 444 en la Fig. 7). Posteriormente el filtro 42 puede enviar una señal al procesador 12 para reanudar la ejecución del software invitado dentro de la VM respectiva, sin activar una salida de la VM. Cuando un evento satisface los criterios de elegibilidad, en una etapa 442 algunas realizaciones generan un evento de salida de la VM, notificando así al motor 40 de introspección la ocurrencia del evento de activación respectivo. La generación del evento de salida de la VM puede comprender, por ejemplo, el filtro 42 que emite una instrucción de procesador privilegiada, tal como VMCALL en las plataformas Intel®. Para comunicar los parámetros del evento al motor 40, algunas realizaciones del filtro 42 de eventos escriben los parámetros respectivos en una sección de memoria compartida entre el filtro 42 y motor 40 de introspección, antes de generar el evento de salida de la VM.
Las Figs. 8-9 ilustran secuencias ejemplares de etapas llevadas a cabo por el verificador 46 de elegibilidad (Fig. 5) para determinar si un evento de activación detectado es elegible para su notificación al motor 40 de introspección, según algunas realizaciones de la presente invención. Tales secuencias se pueden ejecutar como parte de la etapa 440 en la Fig. 7. Ambas Figs. 8-9 suponen que el evento de activación interceptado comprende un intento de acceder a la memoria de una manera que viola un permiso de acceso, por ejemplo, un intento de escribir en una página marcada como que no se puede escribir.
En una etapa 452 (Fig. 8), el verificador 46 puede identificar la página de memoria que generó la excepción, es decir, la página de memoria objetivo del intento de acceso. En respuesta, el verificador 46 puede consultar la lista de secciones de memoria actualmente protegidas para determinar si la página de memoria objetivo contiene una sección de memoria protegida, es decir, al menos una parte de un activo protegido. Cuando la página de memoria objetivo no contiene ningún activo protegido, en una etapa 460 el filtro puede determinar que el evento de activación actual no justifica la notificación al motor 40 de introspección. Cuando la página de memoria objetivo contiene una parte de un activo protegido, una etapa más 456 puede determinar, por ejemplo según la dirección del intento de acceso, si el evento de activación comprende un intento de acceder realmente a una sección de memoria protegida. Cuando no, el evento de activación se puede considerar no elegible. Por el contrario, cuando el evento de activación equivale a un intento de acceder a una sección de memoria protegida, el verificador 46 puede determinar que el evento de activación actual es elegible para su notificación.
La Fig. 9 muestra otra secuencia ejemplar de etapas llevadas a cabo por el verificador 46 de elegibilidad para determinar si un evento es elegible para su notificación, según algunas realizaciones de la presente invención. El ejemplo de la Fig. 9 está orientado a proteger las tablas de páginas de modificaciones maliciosas. En algunas realizaciones, los eventos de activación elegibles ejemplares comprenden un intento de cambiar un valor de un bit de control/bandera de una entrada de la tabla de páginas (p. ej., bits que representan propiedades tales como presente/intercambio, lectura/escritura, ejecución-desactivación, usuario/supervisor). Otros eventos de activación elegibles ejemplares comprenden un intento de sobrescribir el campo de dirección física de la entrada respectiva de la tabla de páginas (campo A en la Fig. 4). Tales acciones a menudo son indicativas de software malicioso que intenta secuestrar la ejecución del proceso respectivo, para inyectar un código en el espacio de memoria del proceso respectivo, etc.
La Fig. 10 muestra una secuencia ejemplar de etapas realizadas por el motor 40 de introspección según algunas realizaciones de la presente invención. El motor 40 puede esperar una notificación del filtro 42, la notificación que indica la ocurrencia de un tipo particular de evento de activación dentro de la VM invitada respectiva, el evento de activación respectivo considerado elegible para su notificación por el filtro 42 de eventos. En respuesta a una notificación, en una etapa 486 el motor 40 puede analizar el evento respectivo para determinar si es indicativo de una amenaza a la seguridad informática. Tal análisis puede emplear cualquier método en la técnica, por ejemplo, diferentes heurísticas y árboles de decisión, métodos de correlación de eventos, algoritmos de aprendizaje automático, etc. En la etapa 486 el motor 40 de introspección puede utilizar parámetros de eventos comunicados por el filtro 42 de eventos y/o puede llevar a cabo actividades forenses propias para descubrir información adicional acerca del evento de activación actual o, en general, acerca del software que se ejecuta actualmente dentro de la VM invitada respectiva. En un análisis ejemplar, en donde el evento notificado comprende un intento de sobrescribir un bit de control de una entrada de la tabla de páginas, en la etapa 486 el motor 40 puede determinar si el OS llevó a cabo el intento respectivo como una manipulación legítima de la gestión de la memoria o si, en su lugar, lo llevó a cabo otra entidad de software, en cuyo caso el intento se puede considerar indicativo de malware.
Cuando el análisis de la etapa 486 determina que el evento de activación respectivo no es indicativo de una amenaza a la seguridad, en algunas realizaciones, el motor 40 de introspección puede emular el evento de activación respectivo e instruir al procesador 12 para reanudar la ejecución de la VM invitada respectiva. Cuando un evento es indicativo de una amenaza, el motor 40 puede tomar medidas de protección para mitigar la amenaza (por ejemplo, llevar a cabo una operación de limpieza para eliminar o incapacitar de otra manera a un agente de malware que se ejecuta dentro de la VM invitada respectiva, notificar a un usuario del sistema anfitrión 10, etc.)
Los sistemas y métodos ejemplares descritos anteriormente permiten que un sistema anfitrión, tal como un ordenador o un teléfono inteligente, lleve a cabo de manera eficiente tareas de seguridad informática cuando opera en una configuración de virtualización de hardware. El sistema anfitrión está configurado para ejecutar un sistema operativo y un conjunto de aplicaciones de software dentro de una máquina virtual invitada. En algunas realizaciones, una aplicación de seguridad comprende al menos dos componentes: un filtro de eventos que se ejecuta dentro de la máquina virtual respectiva y un motor de introspección que se ejecuta fuera de la máquina virtual respectiva, por ejemplo, al nivel de un hipervisor o en una máquina virtual separada. El procesador puede estar configurado para generar una excepción de virtualización en respuesta a la detección de un intento de acceder a la memoria de una manera que viole un permiso de acceso. Algunas realizaciones registran el componente de filtro de eventos como un gestor para las excepciones de virtualización.
La seguridad informática se aplica estableciendo permisos de acceso a las secciones de memoria que almacenan datos pertenecientes a objetos protegidos. Un intento de acceder a cualquiera de las secciones de memoria protegida de una manera que viole el permiso de acceso respectivo activa una excepción de virtualización y, por lo tanto, el filtro de eventos lo detecta. En algunas realizaciones, el filtro de eventos filtra los intentos de acceso a la memoria detectados según un conjunto de criterios de elegibilidad, para seleccionar un subconjunto de intentos de acceso considerados sospechosos o indicativos de malware. Los eventos elegibles ejemplares pueden incluir, por ejemplo, un intento de sobrescribir una entrada de la tabla de páginas utilizada para realizar la traducción de direcciones de memoria para un proceso que se ejecuta dentro de la máquina virtual. Los eventos que se consideran elegibles se notifican al motor de introspección que se ejecuta fuera de la máquina virtual protegida, por ejemplo, a través de hiperllamadas. El motor de introspección puede analizar eventos notificados para determinar si indican un ataque malicioso.
En general, los componentes de software que se ejecutan fuera de una máquina virtual son sustancialmente menos vulnerables a la ejecución de software malicioso dentro de la VM que los componentes que se ejecutan dentro de la VM respectiva. Por lo tanto, desde el punto de vista de la seguridad, puede resultar ventajoso colocar componentes de seguridad importantes fuera de una VM protegida. Sin embargo, la comunicación de datos y/o la señalización de la ocurrencia de un evento relevante para la seguridad a un componente que se ejecuta fuera de la VM respectiva normalmente requiere una salida de la VM, lo que es relativamente costoso en términos de recursos computacionales.
El software de seguridad informática convencional normalmente se coloca completamente dentro o completamente fuera de una máquina virtual protegida. A diferencia de tales sistemas, algunas realizaciones de la presente invención comprenden una configuración híbrida, en donde un componente (filtro de eventos) se ejecuta dentro, mientras que otro componente (motor de introspección) se ejecuta fuera de la VM protegida. La detección de eventos la realiza el componente interno, mientras que la mayor parte del análisis del evento interceptado lo realiza el componente externo. Tales configuraciones pueden lograr un equilibrio entre seguridad y velocidad, mejorando así la experiencia del usuario sin comprometer la seguridad. Para aumentar aún más la seguridad, algunas realizaciones minimizan el tamaño y la complejidad del componente interno. En una realización preferida, el filtro de eventos solo actúa como un filtro para seleccionar un subconjunto de eventos para su notificación al motor de introspección. Un componente tan ligero se puede inyectar con relativa facilidad en la VM protegida sin conocimiento del sistema operativo o del software malicioso que se ejecuta dentro de la VM. El componente externo, es decir, el motor de introspección, puede llevar a cabo un análisis de eventos más sofisticado.
Algunas realizaciones de la presente invención se basan en la observación de que no todos los eventos detectados durante la ejecución del software invitado justifican el gasto de una salida de la VM. Por ejemplo, dado que los permisos de acceso a la memoria solo se pueden configurar con granularidad de página, proteger un elemento que ocupa solo una fracción de una página de memoria puede causar inadvertidamente una gran cantidad de violaciones de permisos por intentos legítimos de acceder a otros elementos alojados dentro de la misma página de memoria. En otro ejemplo, no todas las modificaciones a una tabla de páginas son sospechosas; el sistema operativo realiza cambios con frecuencia para controlar bits y direcciones como parte de actividades legítimas de gestión de memoria. Notificar eventos legítimos al software de seguridad consume innecesariamente recursos computacionales.
Por lo tanto, algunas realizaciones emplean el mecanismo de excepciones de virtualización como un filtro para evitar salidas innecesarias de VM. El filtro opera con criterios de elegibilidad específicos para determinar si un evento debería notificarse fuera de la VM o no. Por ejemplo, el filtro de eventos que se ejecuta dentro de la VM protegida puede analizar cada violación de acceso a la memoria detectada y determinar si realmente se debe a un intento de acceder a un elemento protegido, en lugar de un intento de acceder a otros datos almacenados en la misma página. Al intentar proteger las tablas de páginas, el filtro de eventos puede verificar si un intento de modificación tiene como objetivo elementos específicos, p. ej., un cierto bit de control. El filtro puede entonces comunicar solo eventos elegibles al motor de introspección de memoria.
Las aplicaciones de algunas realizaciones de la presente invención pueden extenderse mucho más allá del campo de la seguridad informática. Al evitar una proporción sustancial de eventos de salida de la VM, el filtro de eventos puede, en general, acelerar el funcionamiento de las plataformas de virtualización de hardware. Los criterios para seleccionar qué eventos en la VM se procesan internamente (o se ignoran) y qué eventos se notifican externamente pueden ajustarse para lograr la optimización deseada.
Será evidente para un experto en la técnica que las realizaciones anteriores se pueden modificar de muchas maneras sin apartarse del alcance de la invención. Por consiguiente, el alcance de la invención debería ser determinado por las siguientes reivindicaciones y sus equivalentes legales.

Claims (15)

REIVINDICACIONES
1. Un sistema anfitrión que comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual (VM), un filtro de eventos y un motor de introspección, el filtro de eventos que se ejecuta dentro de la VM, el motor de introspección que se ejecuta fuera de la VM, el procesador de hardware configurado además para:
generar una excepción en respuesta a la detección de un intento por parte de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria; y
en respuesta a la excepción, cambiar de ejecutar la entidad de software a ejecutar el filtro de eventos;
en donde el filtro de eventos está configurado para:
en respuesta a la excepción, determinar si la ubicación de la memoria actualmente almacena una parte de una entrada de la tabla de páginas utilizada por el procesador de hardware para realizar traducciones de direcciones de memoria para la VM, la parte que comprende un bit de control o una dirección de memoria,
en respuesta, cuando la ubicación de la memoria almacena actualmente la parte de la entrada de la tabla de páginas, activa un evento de salida de la VM para que el procesador de hardware suspenda la ejecución de la VM y cambia a ejecutar el motor de introspección, y
cuando la ubicación de memoria no almacena la parte de la entrada de la tabla de páginas, hacer que el procesador de hardware reanude la ejecución de la entidad de software sin activar el evento de salida de la VM; y en donde el motor de introspección está configurado para determinar si el intento es malicioso en respuesta al evento de salida de la VM.
2. El sistema anfitrión de la reivindicación 1, en donde determinar si el intento es malicioso comprende: emplear el motor de introspección para determinar si el intento fue realizado por un componente de un sistema operativo que se ejecuta dentro de la máquina virtual; y
en respuesta, cuando el intento fue realizado por el componente del sistema operativo, determinar que el intento no es malicioso.
3. El sistema anfitrión de la reivindicación 1, en donde el motor de introspección está configurado además, en preparación para la ejecución del filtro de eventos, para inyectar el filtro de eventos en otra entidad de software que se ejecuta dentro de la VM, en donde inyectar el filtro de eventos comprende escribir al menos una parte del filtro de eventos a una sección de la memoria actualmente asignada para la otra entidad de software.
4. El sistema anfitrión de la reivindicación 3, en donde la otra entidad de software es un controlador de un sistema operativo de la VM.
5. El sistema anfitrión de la reivindicación 1, en donde el filtro de eventos está configurado además para: armar una lista de secciones de memoria protegida, incluyendo la lista, para cada sección de memoria protegida, una dirección de cada sección de memoria protegida y un indicador de un tipo de activo almacenado dentro de cada sección de memoria protegida; y
determinar si la ubicación de la memoria almacena actualmente la parte de la entrada de la tabla de páginas según la lista.
6. Un método para proteger un sistema anfitrión de amenazas a la seguridad informática, en donde el sistema anfitrión comprende un procesador de hardware y una memoria, el procesador de hardware configurado para ejecutar una máquina virtual (VM), un filtro de eventos y un motor de introspección, ejecutándose el filtro de eventos dentro de la VM, ejecutándose el motor de introspección fuera de la VM, comprendiendo el método: configurar el procesador de hardware para generar una excepción en respuesta a la detección de un intento por parte de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria;
configurar el procesador de hardware para cambiar, en respuesta a la primera excepción, de ejecutar la entidad de software a ejecutar el filtro de eventos, en donde la ejecución del filtro de eventos comprende:
en respuesta a la excepción, determinar si la ubicación de memoria almacena actualmente una parte de una entrada de la tabla de páginas utilizada por el procesador de hardware para realizar traducciones de direcciones de memoria para la VM, comprendiendo la parte un bit de control o una dirección de memoria,
en respuesta, cuando la ubicación de memoria almacena actualmente la parte de la entrada de la tabla de páginas, activando un evento de salida de la VM para que el procesador de hardware suspenda la ejecución de la VM y cambie a ejecutar el motor de introspección, y
cuando la ubicación de memoria no almacena actualmente la parte de la entrada de la tabla de páginas, lo que hace que el procesador de hardware reanude la ejecución de la entidad de software sin activar el evento de salida de la VM; y
emplear el motor de introspección para determinar si el intento es malicioso en respuesta al evento de salida de la VM.
7. El método de la reivindicación 6, en donde determinar si el intento es malicioso comprende:
emplear el motor de introspección para determinar si el intento fue realizado por un componente de un sistema operativo que se ejecuta dentro de la máquina virtual; y
en respuesta, cuando el intento fue realizado por el componente del sistema operativo, determinar que el intento no es malicioso.
8. El método de la reivindicación 6, que comprende además, en preparación para ejecutar el filtro de eventos, emplear el motor de introspección para inyectar el filtro de eventos en otra entidad de software que se ejecuta dentro de la máquina virtual, en donde inyectar el filtro de eventos comprende escribir al menos una parte del filtro de eventos a una sección de la memoria asignada actualmente para la otra entidad de software.
9. El método de la reivindicación 8, en donde la otra entidad de software es un controlador de un sistema operativo de la VM.
10. El método de la reivindicación 6, en donde el filtro de eventos está configurado además para:
armar una lista de secciones de memoria protegida, incluyendo la lista, para cada sección de memoria protegida, una dirección de cada sección de memoria protegida y un indicador de un tipo de activo almacenado dentro de cada sección de memoria protegida; y
determinar si la ubicación de memoria almacena la parte de la entrada de la tabla de páginas según la lista.
11. Un medio legible por ordenador no transitorio que almacena instrucciones que, cuando son ejecutadas por un procesador de hardware de un sistema anfitrión que expone una máquina virtual, hacen que el sistema anfitrión forme un filtro de eventos y un motor de introspección, ejecutándose el filtro de eventos dentro de la VM, ejecutándose el motor de introspección fuera de la VM, en donde:
el motor de introspección está configurado para:
configurar el procesador de hardware para generar una excepción en respuesta a la detección de un intento por parte de una entidad de software que se ejecuta dentro de la VM para acceder a una ubicación de memoria de una manera que viola un permiso de acceso a la memoria,
configurar el procesador de hardware para cambiar, en respuesta a la excepción, de ejecutar la entidad de software a ejecutar el filtro de eventos, y
determinar si el intento es malicioso en respuesta a un evento de salida de la VM activado por el filtro de eventos; y el filtro de eventos está configurado para:
en respuesta a la excepción, determine si la ubicación de memoria almacena actualmente una parte de una entrada de la tabla de páginas utilizada por el procesador de hardware para realizar traducciones de direcciones de memoria para la VM, comprendiendo la parte un bit de control o una dirección de memoria,
en respuesta, cuando la ubicación de memoria almacena actualmente la parte de la entrada de la tabla de páginas, activar el evento de salida de la VM para que el procesador de hardware suspenda la ejecución de la VM y cambia a ejecutar el motor de introspección, y
cuando la ubicación de memoria no almacena la parte de la entrada de la tabla de páginas, hacer que el procesador de hardware reanude la ejecución de la entidad de software sin activar el evento de salida de VM;
12. El medio legible por ordenador de la reivindicación 11, en donde determinar si el intento es malicioso comprende: emplear el motor de introspección para determinar si el intento fue realizado por un componente de un sistema operativo que se ejecuta dentro de la máquina virtual; y
en respuesta, cuando el intento fue realizado por el componente del sistema operativo, determinar que el intento no es malicioso.
13. El medio legible por ordenador de la reivindicación 11, en donde las instrucciones hacen además que el sistema anfitrión, en preparación para ejecutar el filtro de eventos, inyecte el filtro de eventos en otra entidad de software que se ejecuta dentro de la VM, en donde inyectar el filtro de eventos comprende escribir al menos un parte del filtro de eventos a una sección de la memoria asignada actualmente para la otra entidad de software.
14. El medio legible por ordenador de la reivindicación 13, en donde la otra entidad de software es un controlador de un sistema operativo de la VM.
15. El medio legible por ordenador de la reivindicación 11, en donde el filtro de eventos está configurado además para:
armar una lista de secciones de memoria protegida, incluyendo la lista, para cada sección de memoria protegida, una dirección de cada sección de memoria protegida y un indicador de un tipo de activo almacenado dentro de cada sección de memoria protegida; y
determinar si la ubicación de memoria almacena la parte de la entrada de la tabla de páginas según la lista.
ES17825203T 2016-12-19 2017-12-19 Filtrado de eventos para aplicaciones de seguridad de máquina virtual Active ES2925891T3 (es)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662436027P 2016-12-19 2016-12-19
US15/845,060 US10635479B2 (en) 2016-12-19 2017-12-18 Event filtering for virtual machine security applications
PCT/EP2017/083579 WO2018114970A1 (en) 2016-12-19 2017-12-19 Event filtering for virtual machine security applications

Publications (1)

Publication Number Publication Date
ES2925891T3 true ES2925891T3 (es) 2022-10-20

Family

ID=62556303

Family Applications (1)

Application Number Title Priority Date Filing Date
ES17825203T Active ES2925891T3 (es) 2016-12-19 2017-12-19 Filtrado de eventos para aplicaciones de seguridad de máquina virtual

Country Status (12)

Country Link
US (1) US10635479B2 (es)
EP (1) EP3516571B1 (es)
JP (1) JP7036821B2 (es)
KR (1) KR102189296B1 (es)
CN (1) CN109923546B (es)
AU (1) AU2017384437B2 (es)
CA (1) CA3037801A1 (es)
ES (1) ES2925891T3 (es)
IL (1) IL267289B (es)
RU (1) RU2723668C1 (es)
SG (1) SG10201913258XA (es)
WO (1) WO2018114970A1 (es)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11089064B1 (en) 2016-09-12 2021-08-10 Skyhigh Networks, Llc Cloud security policy enforcement for custom web applications
US10936353B2 (en) * 2017-05-16 2021-03-02 Dell Products L.P. Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment
US10983926B2 (en) 2018-08-29 2021-04-20 Red Hat, Inc. Efficient userspace driver isolation for virtual machines
US10754796B2 (en) 2018-08-29 2020-08-25 Red Hat, Inc. Efficient user space driver isolation by CPU page table switching
FR3100901B1 (fr) * 2019-09-12 2021-08-27 Stmicroelectronics Grand Ouest Sas Système de protection de la mémoire
DE102019214541A1 (de) * 2019-09-24 2021-03-25 Siemens Aktiengesellschaft Rechenvorrichtung und Verfahren zum Erkennen einer Bedrohung in einer virtuellen Einheit
CN112199678B (zh) * 2020-09-25 2024-04-09 杭州安恒信息技术股份有限公司 一种在线取证的方法、装置、计算机设备和可读存储介质
US11442770B2 (en) * 2020-10-13 2022-09-13 BedRock Systems, Inc. Formally verified trusted computing base with active security and policy enforcement
CN112199158B (zh) * 2020-10-16 2021-11-23 常熟理工学院 虚拟机保护的解释例程识别方法、装置、设备及存储介质
US11934857B2 (en) * 2021-03-16 2024-03-19 Vmware, Inc. Supporting execution of a computer program by using a memory page of another computer program
US20230061511A1 (en) * 2021-08-30 2023-03-02 International Business Machines Corporation Inaccessible prefix pages during virtual machine execution
KR20230065526A (ko) * 2021-11-05 2023-05-12 삼성전자주식회사 메모리 관리 시스템 및 메모리 관리 방법

Family Cites Families (46)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5075845A (en) * 1989-12-22 1991-12-24 Intel Corporation Type management and control in an object oriented memory protection mechanism
US7124327B2 (en) * 2002-06-29 2006-10-17 Intel Corporation Control over faults occurring during the operation of guest software in the virtual-machine architecture
US7552426B2 (en) 2003-10-14 2009-06-23 Microsoft Corporation Systems and methods for using synthetic instructions in a virtual machine
US20050138256A1 (en) * 2003-12-23 2005-06-23 Bolay Frederick H. Method and apparatus for processing hot key input using operating system visible interrupt handling
US9390031B2 (en) * 2005-12-30 2016-07-12 Intel Corporation Page coloring to associate memory pages with programs
US7797747B1 (en) * 2006-02-21 2010-09-14 Symantec Corporation Detection of malicious code in non-paged pool unused pages
US9015704B2 (en) * 2008-03-24 2015-04-21 International Business Machines Corporation Context agent injection using virtual machine introspection
US8225317B1 (en) 2009-04-17 2012-07-17 Symantec Corporation Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines
US9129106B2 (en) * 2009-11-04 2015-09-08 Georgia Tech Research Corporation Systems and methods for secure in-VM monitoring
US20110197004A1 (en) * 2010-02-05 2011-08-11 Serebrin Benjamin C Processor Configured to Virtualize Guest Local Interrupt Controller
US8966623B2 (en) 2010-03-08 2015-02-24 Vmware, Inc. Managing execution of a running-page in a virtual machine
US8949797B2 (en) * 2010-04-16 2015-02-03 International Business Machines Corporation Optimizing performance of integrity monitoring
US8863283B2 (en) * 2011-03-31 2014-10-14 Mcafee, Inc. System and method for securing access to system calls
US20120254993A1 (en) 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
CN102523215B (zh) 2011-12-15 2014-10-01 北京海云捷迅科技有限公司 基于kvm虚拟化平台的虚拟机在线杀毒系统
US9405570B2 (en) * 2011-12-30 2016-08-02 Intel Corporation Low latency virtual machine page table management
WO2013134206A1 (en) * 2012-03-05 2013-09-12 The Board Of Regents, The University Of Texas System Automatically bridging the semantic gap in machine introspection
US9311248B2 (en) * 2012-05-07 2016-04-12 Raytheon Cyber Products, Llc Methods and apparatuses for monitoring activities of virtual machines
US9424199B2 (en) * 2012-08-29 2016-08-23 Advanced Micro Devices, Inc. Virtual input/output memory management unit within a guest virtual machine
US9275223B2 (en) 2012-10-19 2016-03-01 Mcafee, Inc. Real-time module protection
RU2541895C2 (ru) * 2012-12-25 2015-02-20 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения защищенности данных организации путем создания изолированной среды
US9037873B2 (en) * 2013-01-30 2015-05-19 Vmware, Inc. Method and system for preventing tampering with software agent in a virtual machine
US8875295B2 (en) * 2013-02-22 2014-10-28 Bitdefender IPR Management Ltd. Memory introspection engine for integrity protection of virtual machines
US9117080B2 (en) * 2013-07-05 2015-08-25 Bitdefender IPR Management Ltd. Process evaluation for malware detection in virtual machines
US9015374B2 (en) * 2013-07-09 2015-04-21 Advanced Micro Devices, Inc. Virtual interrupt filter
US9507727B2 (en) * 2013-07-17 2016-11-29 Bitdefender IPR Management Ltd. Page fault injection in virtual machines
US9323931B2 (en) 2013-10-04 2016-04-26 Bitdefender IPR Management Ltd. Complex scoring for malware detection
US9563455B2 (en) 2013-10-28 2017-02-07 Intel Corporation Virtualization exceptions
US9619346B2 (en) * 2013-10-31 2017-04-11 Assured Information Security, Inc. Virtual machine introspection facilities
US9400885B2 (en) * 2014-01-10 2016-07-26 Bitdefender IPR Management Ltd. Computer security systems and methods using virtualization exceptions
US9977895B2 (en) * 2014-03-27 2018-05-22 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9703726B2 (en) * 2014-06-24 2017-07-11 Bitdefender IPR Management Ltd. Systems and methods for dynamically protecting a stack from below the operating system
US9454676B2 (en) 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features
US20150379265A1 (en) * 2014-06-30 2015-12-31 Bitdefender IPR Management Ltd. Systems And Methods For Preventing Code Injection In Virtualized Environments
US9335943B2 (en) * 2014-06-30 2016-05-10 Intel Corporation Method and apparatus for fine grain memory protection
US9356945B2 (en) 2014-07-17 2016-05-31 Check Point Advanced Threat Prevention Ltd Automatic content inspection system for exploit detection
US9672354B2 (en) 2014-08-18 2017-06-06 Bitdefender IPR Management Ltd. Systems and methods for exposing a result of a current processor instruction upon exiting a virtual machine
US9703720B2 (en) 2014-12-23 2017-07-11 Intel Corporation Method and apparatus to allow secure guest access to extended page tables
US9965313B2 (en) 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US10515023B2 (en) * 2016-02-29 2019-12-24 Intel Corporation System for address mapping and translation protection
US10248785B2 (en) * 2016-02-29 2019-04-02 Red Hat Israel, Ltd. Application memory protection using a host page table switching virtual machine function
US10120738B2 (en) * 2016-06-24 2018-11-06 Vmware, Inc. Hypervisor techniques for performing non-faulting reads in virtual machines
US9965375B2 (en) * 2016-06-28 2018-05-08 Intel Corporation Virtualizing precise event based sampling
US10664181B2 (en) * 2017-11-14 2020-05-26 International Business Machines Corporation Protecting in-memory configuration state registers

Also Published As

Publication number Publication date
JP2020502638A (ja) 2020-01-23
AU2017384437B2 (en) 2022-01-13
CN109923546A (zh) 2019-06-21
SG10201913258XA (en) 2020-02-27
IL267289B (en) 2021-07-29
EP3516571B1 (en) 2022-06-01
JP7036821B2 (ja) 2022-03-15
US10635479B2 (en) 2020-04-28
CA3037801A1 (en) 2018-06-28
KR102189296B1 (ko) 2020-12-14
US20180173555A1 (en) 2018-06-21
RU2723668C1 (ru) 2020-06-17
EP3516571A1 (en) 2019-07-31
AU2017384437A1 (en) 2019-04-11
IL267289A (en) 2019-08-29
KR20190096959A (ko) 2019-08-20
CN109923546B (zh) 2023-04-07
WO2018114970A1 (en) 2018-06-28

Similar Documents

Publication Publication Date Title
ES2925891T3 (es) Filtrado de eventos para aplicaciones de seguridad de máquina virtual
US10445498B2 (en) Systems and methods of application control in virtualized environments
ES2792912T3 (es) Sistemas y métodos de seguridad informática que utilizan excepciones de introspección asíncronas
ES2785350T3 (es) Evaluación de procesos para la detección de programas malignos en máquinas virtuales
US9465700B2 (en) System and method for kernel rootkit protection in a hypervisor environment
US9946562B2 (en) System and method for kernel rootkit protection in a hypervisor environment
RU2691187C1 (ru) Система и способы аудита виртуальной машины
ES2857102T3 (es) Detección de comportamiento de malware utilizando una máquina virtual de interpretación
US20210124824A1 (en) Securing secret data embedded in code against compromised interrupt and exception handlers
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
Srivastava et al. Efficient Monitoring of Untrusted Kernel-Mode Execution.
US10108800B1 (en) ARM processor-based hardware enforcement of providing separate operating system environments for mobile devices with capability to employ different switching methods
Wu Virtualization-Based Approaches for Mitigation of Malware Threats