RU2659472C2 - Внесение ошибки страницы в виртуальных машинах - Google Patents

Внесение ошибки страницы в виртуальных машинах Download PDF

Info

Publication number
RU2659472C2
RU2659472C2 RU2016104469A RU2016104469A RU2659472C2 RU 2659472 C2 RU2659472 C2 RU 2659472C2 RU 2016104469 A RU2016104469 A RU 2016104469A RU 2016104469 A RU2016104469 A RU 2016104469A RU 2659472 C2 RU2659472 C2 RU 2659472C2
Authority
RU
Russia
Prior art keywords
page
virtualized
memory
processor
virtual machine
Prior art date
Application number
RU2016104469A
Other languages
English (en)
Other versions
RU2016104469A (ru
Inventor
Андрей-Влад ЛУЦАС
Original Assignee
БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД
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 БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД filed Critical БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД
Publication of RU2016104469A publication Critical patent/RU2016104469A/ru
Application granted granted Critical
Publication of RU2659472C2 publication Critical patent/RU2659472C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1045Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache
    • G06F12/1063Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] associated with a data cache the data cache being concurrently virtually addressed
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • 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/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/54Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by adding security routines or objects to programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • 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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Storage Device Security (AREA)
  • Debugging And Monitoring (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)

Abstract

Изобретение относится к защите компьютерных систем от вредоносных программ. Техническим результатом является повышение защиты виртуальной машины от вредоносных программ. Система содержит аппаратный процессор для управления: гипервизором, для предоставления виртуальной машины, содержащей виртуализированный процессор и виртуализированную память для применения виртуализированного процессора для выполнения целевого процесса; и движком самоанализа памяти, выполняющимся вне виртуальной машины и конфигурированным для: определения, в соответствии с таблицей страниц виртуальной машины, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса; и в ответ, когда целевая страница выгружена из виртуализированной памяти, непосредственного внесения в виртуальную машину указанной ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти, при этом непосредственное внесение ошибки страницы предусматривает запись движком самоанализа памяти определенного значения в поле для ввода события. 3 н. и 20 з.п. ф-лы, 10 ил.

Description

Родственные заявки
Данная заявка испрашивает приоритет согласно дате подачи предварительной заявки на патент США №61/847,538 под названием "Page Fault Injection In Virtual Machines" ("Внесение ошибки страницы в виртуальных машинах"), поданной 17 июля 2013 г., все содержание которой включено в данную заявку путем ссылки.
УРОВЕНЬ ТЕХНИКИ
Данное изобретение относится к устройствам и способам защиты компьютерных систем от вредоносных программ.
Во всем мире вредоносное программное обеспечение, известное также как вредоносные программы, наносит ущерб большому количеству компьютерных систем. В ряде своих форм, таких, например, как компьютерные вирусы, черви, руткиты и шпионское программное обеспечение, вредоносные программы представляют собой серьезную опасность для миллионов пользователей компьютеров, делая их уязвимыми, в частности, в отношении потери данных и секретной информации, хищения личных данных и снижения производительности.
Технология аппаратной виртуализации делает возможным создание имитируемых компьютерных сред, которые известны под названием "виртуальная машина" и во многих отношениях ведут себя как физические компьютерные системы. В типичных приложениях, в частности, при применении консолидации серверов и инфраструктуры как услуги (IAAS), на одной физической машине одновременно могут работать несколько виртуальных машин, делящих между собой аппаратные ресурсы, что позволяет снизить капиталовложения и стоимость эксплуатации. Каждая виртуальная машина может использовать собственную операционную систему и/или программные приложения отдельно от других виртуальных машин. Из-за постоянного распространения вредоносных программ защиты от вредоносных программ потенциально требует каждая виртуальная машина, работающая в такой среде.
Технические решения по виртуализации, обычно применяемые в данной области техники, включают в себя гипервизор, также известный под названием "монитор виртуальнойой машины", который состоит из программного уровня, действующего между компьютерной техникой и операционной системой (OS) виртуальной машины, и имеет большие привилегии на использование ресурсов процессора, чем соответствующая OS. Операции по защите от вредоносных программ могут проводиться на уровне привилегий гипервизора. Хотя такие конфигурации могут повысить безопасность, они приносят с собой дополнительный уровень сложности и могут стать причиной значительных компьютерных затрат.
В области защиты от вредоносных программ аппаратных платформ виртуализации существует значительный интерес в отношении разработки эффективных, надежных и масштабируемых технических решений.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
В соответствии с одним аспектом хостовая система содержит аппаратный процессор, конфигурированный для управления гипервизором и движком самоанализа памяти. Гипервизор конфигурирован для предоставления виртуальной машины, содержащей виртуализированный процессор и виртуализированную память и конфигурированной так, что она может применять виртуализированный процессор для выполнения целевого процесса. Движок самоанализа памяти выполняется вне виртуальной машины и конфигурирован для определения в соответствии с таблицей страниц виртуальной машины, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса, и в ответ, когда целевая страница выгружена из виртуализированной памяти, для непосредственного внесения в виртуальную машину ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти.
В соответствии с еще одним аспектом способ содержит применение по меньшей мере одного аппаратного процессора хостовой системы для выполнения программы гипервизора, конфигурированного для предоставления виртуальной машины, содержащей виртуализированный процессор и виртуализированную память и дополнительно конфигурированной для применения виртуализированного процессора для выполнения целевого процесса. Кроме того, способ содержит применение по меньшей мере одного аппаратного процессора для определения того, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса, и, в ответ на выгрузку этой страницы из виртуализированной памяти, применения по меньшей мере одного аппаратного процессора для непосредственного внесения в виртуальную машину ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти.
В соответствии с еще одним аспектом постоянный машиночитаемый носитель хранит команды, которые, при выполнении по меньшей мере одним аппаратным процессором хостовой системы, побуждают хостовую систему образовывать движок самоанализа памяти, причем хостовая система дополнительно конфигурирована для выполнения программы гипервизора, предоставляющего виртуальную машину, содержащую виртуализированный процессор и виртуализированную память и конфигурированную для применения виртуализированного процессора для выполнения целевого процесса. Движок самоанализа памяти выполняется вне виртуальной машины и конфигурирован для определения в соответствии с таблицей страниц виртуальной машины, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса, и в ответ, когда целевая страница выгружена из виртуализированной памяти, для непосредственного внесения в виртуальную машину ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Вышеупомянутые аспекты и преимущества данного изобретения будут более понятны из нижеследующего подробного описания со ссылками на чертежи, на которых изображено следующее.
Фиг. 1 изображает примерную группу виртуальных машин, предоставленных гипервизором, выполняемым в хостовой системе, и движок самоанализа памяти, защищающий эту группу виртуальных машин от вредоносных программ в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 2 изображает примерную конфигурацию аппаратных средств хостовой системы в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 3 изображает примерную конфигурацию виртуализированных аппаратных средств, предоставленных гостевой виртуальной машине в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 4 иллюстрирует примерную иерархию программных объектов, выполняющихся в хостовой системе на различных уровнях привилегий процессора в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 5 изображает примерную схему соответствия адресов памяти и примерную загрузку страницы памяти в виртуализированную память, и выгрузку страницы памяти из виртуализированной памяти в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 6 изображает примерную последовательность этапов, выполняемых движком самоанализа памяти для защиты виртуальной машины от вредоносных программ в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 7 изображает примерную последовательность этапов, выполняемых устройством самоанализа памяти для непосредственного внесения ошибки страницы в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 8 изображает примерную последовательность этапов, иллюстрирующую применение способов согласно фиг. 6 и 7, в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 9 изображает примерную последовательность этапов, иллюстрирующую еще одно применение способов согласно фиг. 6 и 7, в соответствии с некоторыми вариантами осуществления данного изобретения.
Фиг. 10 иллюстрирует примерное определение группы виртуальных адресов страниц памяти, содержащих данные целевого процесса, в соответствии с некоторыми вариантами осуществления данного изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
В нижеследующем описании подразумевается, что все упомянутые соединения между схемами и устройствами могут представлять собой непосредственные функциональные соединения или опосредованные рабочие соединения посредством промежуточных схем и устройств. Группа элементов содержит один или несколько элементов. Любое перечисление элемента следует понимать, как относящееся по меньшей мере к одному элементу. Множество элементов содержит по меньшей мере два элемента. Если не указано другое требование, любые описанные этапы способа не обязательно должны выполняться в определенном показанном порядке. Первый элемент (например, данные), полученный из второго элемента, охватывает первый элемент, равный второму элементу, а также первый элемент, генерируемый посредством обработки второго элемента, и опционально другие данные. Принятие определения или решения в соответствии с параметром охватывает принятие определения или решения в соответствии с этим параметром и опционально в соответствии с другими данными. Если не дано другого определения, индикатор некоторого количества/данных может представлять собой само количество/данные, или индикатор, отличающийся от самого количества/данных. Если не дано другого определения, процесс представляет собой пример машинной программы, например приложение или часть операционной системы, и отличается тем, что он имеет по меньшей мере один поток выполняемых задач и область виртуальной памяти, присвоенной ему операционной системой и содержащей исполнимый код. Если не дано другого определения, страница представляет собой наименьшую единицу виртуальной памяти, отдельно отображенную на физическую память хостовой системы. Если не дано другого определения, непосредственное внесение ошибки страницы в виртуальную машину содержит вызывание события ошибки страницы внутри виртуализированного процессора соответствующей виртуальной машины без содействия операционной системы или другой программы, выполняющейся в соответствующей виртуальной машине. Такое непосредственное внесение не исключает того, что операционная система или другая программа начинает действовать в ответ на внесенную ошибку страницы, например, чтобы обработать ошибку страницы. Машиночитаемые носители охватывают постоянные носители, например магнитные, оптические и полупроводниковые носители информации (например, жесткие диски, оптические диски, флеш-память, динамическую оперативную память), а также линии связи, например токопроводящие кабели и волоконно-оптические линии связи. В соответствии с некоторыми вариантами осуществления изобретения среди прочего в данном изобретении предлагаются компьютерные системы, содержащие аппаратные средства (например, один или несколько процессоров), программированные для выполнения описанных в данном документе способов, а также содержащиеся на машиночитаемых носителях команды на машинном языке для выполнения описанных здесь способов.
Нижеследующее описание посредством примеров, необязательно носящих ограничительный характер, иллюстрирует варианты осуществления изобретения.
На фиг. 1 показана примерная конфигурация хостовой системы 10, применяющей аппаратную виртуализацию для защиты от вредоносных программ в соответствии с некоторыми вариантами осуществления данного изобретения. Хостовая система 10 может представлять собой корпоративное компьютерное устройство, например, корпоративный сервер, или устройство конечного пользователя, например, персональный компьютер или смартфон. Другие примерные хостовые системы включают в себя бытовые электронные устройства, например, телевизоры и игровые консоли, или любое другое устройство, имеющее память и процессор и нуждающееся в защите от вредоносных программ. В примере, показанном на фиг. 1, хостовая система 10 создает группу гостевых виртуальных машин 32а и 32b, предоставленных гипервизором 30. Виртуальная машина (VM) содержит абстракцию, например, программную эмуляцию, фактической физической машины/компьютерной системы. В VM может выполняться операционная система и другие приложения. Гипервизор 30 содержит программное обеспечение, выполненное с возможностью создания ряда виртуализированных устройств, например, виртуального процессора и виртуального контроллера памяти, и предоставления программному обеспечению этих виртуализированных устройств вместо реальных физических устройств хостовой системы 10. В некоторых вариантах осуществления гипервизор 30 делает возможным мультиплексирование (совместное использование) несколькими виртуальными машинами аппаратных ресурсов хостовой системы 10. Кроме того, гипервизор 30 может управлять этим мультиплексированием так, что каждая VM работает независимо и не знает о том, что одновременно в хостовой системе 10 выполняются другие VM. Примеры популярных гипервизоров включают в себя VMware vSphere™ фирмы VMware Inc. и бесплатный гипервизор Xen.
Каждая из VM 32а, 32b соответственно может выполнять гостевую операционную систему (OS) 34а и 34b. Группа примерных приложений 42а-42d (на чертежах обозначены как "прил-ния"), в общем случае, представляет любое программное приложение, например, обработку текстов, обработку изображений, медиаплеер, базу данных, календарь, управление личными контактами, браузер, игровую программу, передачу речевых сообщений, передачу данных или приложения для защиты от вредоносных программ. Операционные системы 34а, 34b могут содержать любую широкодоступную операционную систему, например, Microsoft Windows®, MacOS®, Linux®, iOS®, или Android™. Каждая OS обеспечивает интерфейс между приложениями, выполняющимися в виртуальной машине, и виртуализированными аппаратными устройствами соответствующей VM. Если в нижеследующем описании программное обеспечение выполняется в виртуальном процессоре виртуальной машины, то говорится, что оно выполняется в соответствующей виртуальной машине. Например, в примере, показанном при помощи фиг. 1, приложения 42а, 42b выполняются в гостевой виртуальной машине 32а, в то время как приложения 42с, 42d выполняются в гостевой виртуальной машине 32b. Напротив, гипервизор 30 выполняется вне или ниже гостевых VM 32а, 32b.
В некоторых вариантах осуществления гипервизор 30 содержит движок 40 самоанализа памяти, конфигурированный для выполнения этапов по защите от вредоносных программ, как описано ниже. Движок 40 может быть встроен в гипервизор 30 или он может быть предоставлен в виде программного компонента отдельно и независимо от гипервизора 30, но он выполняется, в сущности, на том же уровне привилегий процессора, что и гипервизор 30. Один движок 40 может быть конфигурирован для защиты от вредоносных программ нескольких VM, выполняющихся в хостовой системе 10.
На фиг. 2 показана примерная конфигурация аппаратных средств хостовой системы 10. Система 10 содержит группу физических устройств, в том числе процессор 12, запоминающее устройство 14, группу устройств 16 ввода, группу устройств 18 вывода, группу устройств 20 хранения данных и группу сетевых адаптеров 22, при этом все они соединены контроллером-концентратором 24. В некоторых вариантах осуществления изобретения процессор 12 содержит физическое устройство (например, многоядерную микросхему, образованную на полупроводниковой подложке), конфигурированное для выполнения компьютерных и/или логических этапов при помощи ряда сигналов и/или данных. В некоторых вариантах осуществления такие логические операции подают в процессор 12 в виде последовательности процессорных команд (например, в виде машинного кода или программы другого типа). Запоминающее устройство 14 может содержать постоянный машиночитаемый носитель (например, ОЗУ), хранящий данные/сигналы, полученные или сгенерированные процессором 12 в процессе выполнения команд.
Устройства 16 ввода помимо прочего могут включать в себя компьютерные клавиатуры, мышь и микрофоны, в том числе соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или команды в хостовую систему 10. Устройства 18 вывода могут включать в себя устройства отображения, например, мониторы и громкоговорители, а также аппаратные интерфейсы и/или адаптеры, например, графические платы, благодаря которым хостовая система 10 может передавать данные пользователю. В некоторых вариантах осуществления изобретения устройства 16 ввода и устройства 18 вывода, например, в случае устройств с сенсорным экраном, могут совместно использовать общую часть программного обеспечения. Устройства 20 хранения данных включают в себя машиночитаемые носители, делающие возможным энергонезависимое хранение, чтение и запись программируемых команд и/или данных. Примерные устройства 20 хранения данных включают в себя магнитные и оптические диски, устройства на основе флеш-памяти, а также съемные носители, например, CD-диски и/или DVD-диски и приводы. Посредством группы сетевых адаптеров 22 хостовая система 10 может подключаться к компьютерной сети и/или другим устройствам/компьютерным системам. Контроллер-концентратор 24 представляет собой несколько систем, периферийных и/или внутрикристальных шин, и/или все другие схемы, делающие возможным обмен данными между процессором 12 и устройствами 14, 16, 18, 20 и 22. Например, контроллер-концентратор 24 может содержать контроллер памяти, контроллер ввода/вывода и контроллер прерываний. В другом примере контроллер-концентратор 24 может содержать северный мост, соединяющий процессор 12 с запоминающим устройством 14, и/или южный мост, соединяющий процессор 12 с устройствами 16, 18, 20 и 22.
Чтобы сделать возможными конфигурации, изображенные на фиг. 1, гипервизор 30 может создать несколько виртуализированных устройств, каждое из которых эмулирует физическое аппаратное устройство системы 10. Кроме того, гипервизор 30 может поставить в соответствие с каждой VM 32а, 32b группу виртуализированных устройств и управлять диспетчирезацией, передачей сигналов и связью так, что VM 32а, 32b могут использовать процессор 12 и другие аппаратные устройства одновременно. В данной области выполнение таких этапов также известно как предоставление виртуальных машин 32а, 32b.
На фиг. 3 показана примерная конфигурация виртуальной машины 32, предоставленной гипервизором 30. VM 32 может представлять собой, например, любую VM 32а, 32b, показанную на фиг. 1. VM 32 включает в себя виртуализированный процессор 112, виртуализированное запоминающее устройство 114, виртуализированные устройства 116 ввода, виртуализированные устройства 118 вывода, виртуализированное устройство 120 хранения данных, виртуализированные сетевые адаптеры 122 и виртуализированный контроллер-концентратор 124. Виртуализированный процессор 112 включает в себя эмуляцию по меньшей мере некоторых функций процессора 12 и конфигурирован для приема для выполнения процессорных команд, образующих часть программного обеспечения, например, операционную систему и другие приложения. Считается, что программное обеспечение, выполняемое при помощи процессора 112, выполняется в виртуальной машине 32. В некоторых вариантах осуществления изобретения виртуализированное запоминающее устройство 114 включает в себя адресные пространства для хранения и получения данных, используемых виртуализированным процессором 112. Другие виртуализированные устройства (например, виртуализированное устройство ввода, устройство вывода, устройство хранения данных и т.д.) эмулируют по меньшей мере некоторые функции соответствующих физических устройств хостовой системы 10. Виртуализированный процессор 112 может быть конфигурирован для взаимодействия с такими устройствами так, как это происходило бы с соответствующими физическими устройствами. Например, программа, выполняющаяся в VM 32, посредством виртуализированного сетевого адаптера (адаптеров) 122 может передавать и/или принимать сетевой трафик. В некоторых вариантах осуществления гипервизор 30 может предоставить для VM 32 только подмножество виртуализированных устройств (например, только виртуализированный процессор 112, виртуализированное запоминающее устройство 114 и части концентратора 124). Кроме того, гипервизор 30 может предоставить выбранной VM право на исключительное использование некоторых аппаратных устройств хостовой системы 10. В одном из таких примеров VM 32а (фиг. 1) может иметь право на исключительное использование устройств 16 ввода и устройств 18 вывода, но не иметь права на использование виртуализированного сетевого адаптера. В то же время VM 32b может иметь право на исключительное использование сетевого адаптера (сетевых адаптеров) 22.
Фиг. 4 иллюстрирует иерархию программных объектов, выполняющихся в хостовой системе 10 в соответствии с некоторыми вариантами осуществления данного изобретения. Фиг. 4 показана с точки зрения уровней привилегий процессора, которые в данной области известны также, как слои или кольца защиты. В некоторых вариантах осуществления гипервизор 30 берет на себя управление процессором 12 на самом привилегированном уровне (например, режим VMXroot на платформах Intel®, поддерживающих виртуализацию, также известный, как кольцо -1 или привилегированный режим), таким образом, создавая аппаратную платформу виртуализации, предоставляемую в виде виртуальной машины 32 для другого программного обеспечения, выполняющегося в хостовой системе 10. Операционная система 34, например операционные системы 34а, 34b на фиг. 2, выполняется в виртуальной среде VM 32, причем OS 34 имеет меньшие привилегии процессора, чем гипервизор 30 (например, кольцо 0 на платформах Intel или режим ядра). Группа приложений 42e, 42f выполняется с более низкой привилегией процессора, чем OS 34 (например, кольцо 3 или режим пользователя). Части приложений 42e, 42f могут выполняться на уровне привилегии ядра (например, драйвер 36, установленный при помощи приложения 42f; примерный драйвер 36 выполняет операции по защите от вредоносных программ, например, определение поведения программного объекта, указывающее на вредоносную программу, и/или определение в программном объекте сигнатур, указывающих на вредоносную программу). Аналогично части OS 34 могут выполняться в режиме пользователя (кольцо 3).
В некоторых вариантах осуществления движок 40 самоанализа выполняется, по существу, на том же уровне привилегий процессора, что и гипервизор 30, и конфигурирован для выполнения самоанализа виртуальных машин, выполняющихся в хостовой системе 10, например, VM 32. Самоанализ VM или программного объекта, выполняющегося в соответствующей VM, может содержать анализ поведения соответствующего программного объекта, например, идентификацию группы этапов, выполняемых этим объектом (например, выдача системного вызова, доступ к регистру OS, загрузка файла с удаленного пункта, запись данных в файл и т.п.). Кроме того, самоанализ может содержать определение адресов областей памяти, содержащих части программного объекта, доступ к соответствующим областям памяти и анализ содержания, хранимого в соответствующих областях памяти. Другие примеры самоанализа включают в себя пресечение и/или ограничение доступа определенных процессов к таким областям памяти, например, предотвращение перезаписи процессом кода иди данных, используемых другим процессом. В некоторых вариантах осуществления объекты, выбранные для самоанализа при помощи движка 40, включают в себя процессы, потоки команд, регистры и структуры данных, например, таблицы страниц и драйверные объекты соответствующей VM.
Чтобы выполнить самоанализ VM 32 в конфигурации, показанной на фиг. 1 (т.е. извне соответствующей VM), некоторые варианты осуществления движка 40 используют схемы распределения памяти и механизмы процессора 12. Как правило, виртуальные машины работают с виртуализированной физической памятью, например, с памятью 114 (см. фиг. 3), которую в данной области также называют гостевой физической памятью. Виртуализированная физическая память содержит абстрактное представление фактической физической памяти 14, например, в виде непрерывного пространства виртуализированных адресов, специфического для каждой VM, причем часть этого пространства поставлена в соответствие с адресами физической памяти 14 и/или физических устройств 20 хранения данных. В системах, выполненных с возможностью поддержки виртуализации, такое соответствие обычно достигается при помощи специальных структур данных, управляемых процессором 12, которые известны, как отображение адресов второго уровня (SLAT - second level address translation). Распространенные применения SLAT включают в себя расширенные таблицы страниц (ЕРТ - extended page tables, на платформах Intel®) и вложенные таблицы страниц (NPT - nested page tables, на платформах AMD®). В таких системах виртуальная физическая память может быть разделена на единицы, известные в данной области, как страницы, причем страница представляет собой наименьшую единицу виртуализированной физической памяти, отдельно поставленной в соответствие с физической памятью при помощи такого механизма, как ЕРТ и/или NPT, т.е. установление соответствия между физической и виртуализированной физической памятью выполняется со страничной гранулярностью. Как правило, все страницы имеют определенный размер, например, 4 килобайта, 2 мегабайта и т.д. Обычно разделение виртуализированной физической памяти на страницы конфигурирует гипервизор 30. В некоторых вариантах осуществления гипервизор 30 также конфигурирует EPT/NPT и, следовательно, соответствие между физической памятью и виртуализированной физической памятью. Фактическое отображение (трансляция) адреса виртуализированной памяти в адрес физической памяти может содержать просмотр адреса физической памяти в буфере быстрого отображения адресов (TLB - translation lookaside buffer) хостовой системы 10. В некоторых вариантах осуществления отображение адресов содержит выполнение просмотра таблицы страниц, включающего в себя ряд последовательных просмотров адресов в группе таблиц страниц и/или каталогов страниц и производство вычислений, например, прибавление смещения страницы к адресу, относящемуся к соответствующей странице.
Посредством некоторых конфигураций гипервизор 30 может выборочно управлять доступом к данным, хранящимся в каждой странице физической памяти 14, например, в результате установки прав доступа к записи, чтению и/или выполнению соответствующей страницы. Эти права могут быть установлены, например, посредством изменения элемента соответствующей страницы в ЕРТ или NPT. Таким образом, гипервизор 30 может выбирать, какой программный объект может иметь доступ к данным, хранимым в адресах каждой страницы, и показывать, какие операции разрешено выполнять с соответствующими данными, например, чтение, запись, выполнение. Попытка программного объекта, выполняющегося в VM, осуществить операцию, например, запись данных в страницу, соответствующего доступа к которой этот объект не имеет, или выполнить код со страницы, обозначенной, как неисполнимая, может инициировать событие выхода из виртуальной машины (например, на платформах Intel - событие VMExit, т.е. переход от гостевой машины к хостовой машине). В некоторых вариантах осуществления в результате событий выхода из виртуальной машины управление процессором передается от VM, в которой выполняется соответствующий программный объект, к гипервизору 30. Благодаря таким передачам программа, выполняющаяся на уровне привилегий гипервизора 30, соответствующем уровню привилегий процессора, может пресекать несанкционированную запись или попытку выполнения. В некоторых вариантах осуществления движок 40 самоанализа выполняет такие пресечения, как часть этапов по защите от вредоносных программ.
В некоторых вариантах осуществления OS 34 конфигурирует пространство виртуальной памяти для процесса, например, для приложений 42e, 42f на фиг. 4, поддерживая отображение (трансляцию адресов) между соответствующим пространством виртуальной памяти и виртуализированной физической памятью VM 32, например, применяя механизм таблицы страниц. В некоторых вариантах осуществления пространство виртуальной памяти процесса также делят на страницы, представляющие собой наименьшую единицу виртуальной памяти, отдельно поставленной в соответствие с виртуализированной физической памятью операционной системой 34, т.е. виртуальную память отображают на виртуализированную физическую память со страничной гранулярностью.
Фиг. 5 иллюстрирует пример соответствия адресов памяти согласно варианту осуществления, показанному на фиг. 4. Программному объекту, например, приложению, процессу или части операционной системы, выполняющейся в гостевой виртуальной машине 32, гостевая OS 34 выделяет пространство 214а виртуальной памяти. Если программный объект, например, пытается получить доступ к содержимому страницы 60а памяти пространства 214а, то виртуализированный процессор гостевой VM 32 в соответствии с таблицами страниц, конфигурированными и управляемыми гостевой OS 34, отображает адрес страницы 60а в адрес страницы 60b пространства 114 виртуализированной физической памяти VM 32. После этого гипервизор 30, конфигурирующий виртуализированную физическую память 114 и управляющий ею, отображает адрес страницы 60b в адрес страницы 60с в физической памяти 14 хостовой системы 10, например, применяя SLAT, как рассмотрено выше.
В некоторых вариантах осуществления гипервизор 30 устанавливает свое собственное пространство 214b виртуальной памяти, содержащее представление физической памяти 14, и применяет механизм отображения (например, таблицы страниц), чтобы адреса пространства 214b сопоставить с адресами физической памяти 14. На фиг. 5 в результате такого примерного отображения адрес страницы 60с отображается в адрес страницы 60h. Благодаря такому сопоставлению гипервизор 30 может управлять страницами памяти (например, считывать, записывать и контролировать доступ к ним), относящимися к программным объектам, выполняющимся в различных VM, работающих в хостовой системе 10.
Кроме того, на фиг. 5 показана операция подкачки страниц, осуществляемая гостевой OS 34. Подкачка страниц является общим признаком современных операционных систем, применяемым для эффективного управления имеющимися в распоряжении ресурсами памяти. В некоторых вариантах осуществления выгрузка страницы из памяти включает в себя перемещение операционной системой содержимого соответствующей страницы из памяти в устройство хранения данных (например, диск), так что соответствующую страницу могут использовать для хранения других данных. Позднее OS может осуществить загрузку страницы, перемещая соответствующее содержимое обратно, из устройства хранения данных в память, смотря по обстоятельствам, по адресу, отличающемуся от адреса оригинальной страницы, хранящей это содержимое. Чтобы осуществить эту загрузку, OS может модифицировать элемент таблицы страниц, относящийся к соответствующей странице, чтобы отразить изменение адреса. В показанном на фиг. 5 примере страницу 60с выгружают в страницу 60d устройства хранения данных. Так как OS 34 выполняется в виртуальной машине, OS 34 рассматривает виртуализированную физическую память 114, как свою физическую память, а виртуализированное устройство 120 хранения данных, как свое физическое устройство хранения данных. Итак, выгрузка страницы 60с из памяти эффективным образом включает в себя перемещение содержимого страницы 60с в виртуализированное устройство 120 хранения данных. Устройство 120 может содержать абстракцию, созданную гипервизором 30 из физического устройства 20 хранения данных, так что содержимое страницы 60d может быть фактически перенаправлено в страницу 60k в устройстве 20. В некоторых вариантах осуществления гипервизор 30 может предоставить гостевой VM 32 прямой доступ к устройству 20 хранения данных, например, применяя технологию виртуализации ввода/вывода VT-d, предложенную фирмой Intel. В таких конфигурациях виртуализированное устройство 120 хранения данных может совпадать с фактическим физическим устройством хранения данных хостовой системы 10. Чтобы осуществить загрузку, OS 34 может переместить содержимое страницы 60d в страницу 60е виртуализированной физической памяти 114. Кроме того, гостевая OS 34 может модифицировать элемент таблицы страниц, соответствующий странице 60а, чтобы показать отображение адреса из страницы 60а в страницу 60е (пунктирная стрелка на фиг. 5). Страница 60е может быть отображена в страницу 60m физической памяти 14.
На фиг. 6 показана примерная последовательность этапов, выполняемых движком 40 самоанализа памяти для защиты виртуальной машины от вредоносных программ в соответствии с некоторыми вариантами осуществления данного изобретения. Такая защита от вредоносных программ, например, содержит идентификацию страницы (ниже именуемую, как рассматриваемая целевая страница) пространства памяти выбранного процесса (ниже именуемого, как целевой процесс), выполняющегося в соответствующей VM, и защиту содержимого соответствующей страницы от несанкционированной модификации, например, вредоносным программным объектом. В еще одном примере движок 40 самоанализа может определять, содержит ли целевая страница вредоносный код. Целевой процесс может относиться, например, к такому приложению, как приложения 42e, 42f или к гостевой OS 34 (см. фиг. 4). Если целевой процесс выполняется на пользовательском уровне процессора (например, режим пользователя в Windows®), содержимое страницы может в памяти постоянно не находиться, а время от времени загружаться и выгружаться из памяти операционной системой. При выполнении вне VM 32 движок 40 самоанализа памяти может не иметь прямого доступа к содержимому таких загружаемых и выгружаемых страниц памяти.
В ходе последовательного выполнения этапов 302-304 движок 40 ждет до тех пор, пока текущий контекст выполнения не будет представлять собой контекст выполнения целевого процесса, т.е. пока выполняемые в данный момент команды не будут относиться к целевому процессу. Определение текущего контекста выполнения может содержать, например, чтение содержимого регистра CR3 виртуального процессора соответствующей VM (в регистре CR3 платформ х86 хранится адрес в схеме разбиения на страницы, однозначно идентифицирующий каждый выполняющийся процесс). Если контекст выполнения представляет собой контекст выполнения целевого процесса, в ходе последовательного выполнения этапов 306-308 движок 40 может определить, выгружено ли в данный момент из памяти содержимое целевой страницы. Если содержимое целевой страницы находится в памяти, то в процессе этапа 316 движок 40 может приступить к самоанализу целевой страницы, например, анализировать и/или защищать содержимое целевой страницы. Если содержимое целевой страницы в данный момент выгружено, то в процессе этапа 310 движок 40 непосредственно вносит в соответствующую VM ошибку страницы, чтобы вызвать загрузку целевой страницы, как подробнее описано ниже. Затем в ходе последовательного выполнения этапов 312-314 движок 40 ждет до тех пор, пока целевая страница не будет загружена, т.е. пока содержимое соответствующей страницы не будет отображено в виртуализированную физическую память соответствующей VM, чтобы осуществить самоанализ.
Чтобы определить, находится ли целевая страница в памяти (этапы 306-308), а также определить, была ли загружена в память целевая страница (этапы 312-314), движок 40 самоанализа памяти может обратиться к содержимому таблицы страниц, установленной OS 34. В некоторых вариантах осуществления поле (например, специальный бит) элемента таблицы страниц, относящегося к целевой странице, показывает, находится ли в настоящее время соответствующая страница в памяти.
На фиг. 7 показана примерная последовательность этапов, выполняемых движком 40 для непосредственного внесения ошибки страницы, вызывая, таким образом, загрузку в память целевой страницы (этап 310 на фиг. 6). В ходе этапов 322-324 движок 40 оценивает текущее состояние виртуального процессора 112, чтобы определить, может ли быть надежно введена в VM 32 исключение ошибки страницы. Этап 322 может содержать оценку приоритета запросов прерывания, обрабатываемых в данный момент. В системе Microsoft Windows® такая оценка может содержать определение текущего уровня прерываний (IRQL), например, в результате просматривания содержимого сегментного регистра VM 32. Такие сегментные регистры включают в себя регистры FS и/или GS архитектуры процессора х86, хранящие указатель для структуры данных, включая IRQL. В примере осуществления изобретения, если IRQL<2, то внесение ошибки страницы считают надежным. Если в ожидании находятся прерывания более высокого приоритета (например, IRQL≥2), то этапы 322-324 ждут обслуживаемые запросы более высокого приоритета.
В некоторых вариантах осуществления этап 322 может содержать определение уровня (кольца) привилегий, на котором в данный момент выполняется виртуальный процессор 112. В хостовых системах, работающих на Microsoft Windows®, когда процессор выполняется в режиме пользователя (кольцо 3), IRQL равен нулю, так что внесение ошибки страницы, соответствующей странице в режиме пользователя, можно считать надежным. Если процессор 112 выполняется в режиме ядра (кольцо 0), то для того, чтобы сделать заключение о надежности внесения ошибки, могут потребоваться дополнительные определения.
В результате последовательности этапов 326-328 в VM 32 вносится исключение ошибки страницы, конфигурированная так, что она может вызвать загрузку целевой страницы. В примере осуществления изобретения в процессе этапа 326 движок 40 записывает виртуальный адрес целевой страницы в регистр CR2 виртуального процессора соответствующей VM, показывая OS 34, какую виртуальную страницу необходимо загрузить в память. Затем в процессе этапа 328 движок 40 вызывает в виртуальном процессоре 112 исключение, например, в результате записи набора управляющих битов структура управления виртуальной машины (VMCS - virtual machine control structure) VM 32 соответствующие управляющие биты могут быть конфигурированы так, чтобы инициировать в соответствующей VM ошибку страницы. В процессорах Intel®, выполненных с возможностью поддержки виртуализации, такие управляющие биты являются частью поля VMCS для ввода события VM Entry (переход от хостовой машины к гостевой машине).
Структуры управления VM представляет собой особый вид структур данных, поддерживаемых гипервизором 30 для описания гостевых виртуальных машин, выполняющихся в хостовой системе 10. Формат VMCS может быть предназначен для определенного приложения и/или платформы. В случае VM, содержащих несколько виртуализированных процессоров 112, гипервизор 30 может поддерживать отдельную VMCS для каждого виртуального процессора. В некоторых вариантах осуществления изобретения каждая VMCS может содержать область режима хостовой машины и область режима гостевой машины, причем в области режима гостевой машины хранятся такие данные, как режим CPU и/или содержимое управляющих регистров соответствующего виртуального процессора, а в области режима хостовой машины хранятся аналогичные данные гипервизора 30. В некоторых вариантах осуществления процессор 12 связывает с каждой VMCS область памяти, которую называют областью VMCS. Программа может ссылаться на определенную VMCS, применяя адрес этой области (например, указатель VMCS). В любое определенное время в процессор 12, представляющий VM, в данный момент управляющую процессором, может быть загружено не более одной VMCS.
При помощи фиг. 8 и 9 показаны примерные применения некоторых вариантов осуществления изобретения в среде Windows®. Фиг. 8 иллюстрирует последовательность этапов, выполняемых движком 40, чтобы определить адрес виртуальной памяти хостового исполняемой программы целевого процесса. На этапе 332 движок 40 может обнаружить запуск целевого процесса. На этапе 332 может применяться любой способ, известный в данной области, например, пресечение механизма OS, управляющего перечнем активных процессов. Например, в Windows® каждый раз, когда создается процесс, в перечень активных процессов вставляется индикатор соответствующего процесса, а при завершении соответствующего процесса этот индикатор удаляется из перечня. В некоторых вариантах осуществления при запуске процесса OS 34 также устанавливает специфичную для процесса структуру данных, известных под названием "блок окружения процесса" (РЕВ - process environment block). Этот блок содержит данные, применяемые OS 34 для управления ресурсами, связанными с соответствующим процессом. При пресечении (например, путем включения программной ловушки) команды OS по вставке целевого процесса в перечень активных процессов движок 40 может получить информацию, в частности адрес памяти соответствующего РЕВ, который движок 40 может получить в процессе этапа 334. В системе Windows виртуальный адрес РЕВ хранится в структуре данных OS, которая известна под названием "блок процесса" (EPROCESS - executive process block). При помощи фиг. 10 представлена наглядная диаграмма таких специфичных для процесса структур данных.
Представляя собой структуру данных пользовательского уровня, страница виртуальной памяти, содержащая данные РЕВ, в данный момент может присутствовать или не присутствовать в памяти. На этапе 336 движок 40 определяет, выгружена ли из памяти соответствующая страница виртуальной памяти. Если эта страница не выгружена, то в процессе этапа 340 движок 40 приступает к определению виртуального адреса хостового исполняемой программы целевого процесса, например, посредством анализа данных РЕВ. Если на данный момент данные РЕВ из памяти выгружены, то этап 338 вызывает загрузку соответствующей страницы, содержащей данные РЕВ, например, применяя механизм, описанный в связи с фиг. 7.
Фиг. 9 иллюстрирует примерную последовательность этапов, выполняемых движком 40 для выполнения самоанализа памяти исполняемого модуля (например, библиотеки), загруженного целевым процессом. Часто вредоносные программы используют DLL, как векторы для переноса вредоносного кода, поэтому анализ содержимого таких библиотек может быть важным для операций по защите от вредоносных программ. В процессе этапа 342 после доступа к виртуальной странице, содержащей данные РЕВ (см., например, выше этапы 336-338) в ходе этапов 344-346-348 движок 40 идентифицирует целевой модуль, например, динамически подключаемую библиотеку (DLL - dynamic-link library), используемую целевым процессом, и определяет, загружен ли соответствующий модуль. Если целевой модуль загружен, в процессе этапа 350 движок 40 может определить виртуальный адрес соответствующего модуля, например, в соответствии со специальным полем данных РЕВ (см., например, фиг. 10). В ходе этапа 352 движок 40 определяет, выгружена ли на данный момент из памяти виртуальная страница, содержащая данные модуля и находящаяся по адресу, определенному в результате этапа 350. Если эта страница не выгружена, то в процессе этапа 356 движок 40 приступает к выполнению самоанализа памяти соответствующего модуля. Если на данный момент виртуальная страница соответствующего модуля выгружена, то в процессе этапа 354 движок 40 вызывает загрузку соответствующей виртуальной страницы, например, применяя механизм, описанный в связи с фиг. 7.
Фиг. 10 иллюстрирует примерное определение виртуальных адресов в операционной среде Windows®. В некоторых вариантах осуществления OS 34 поддерживает пространство 214d виртуальной памяти ядра OS, причем страница, расположенная по виртуальному адресу 60р, содержит часть структуры EPROCESS, используемой OS 34 для управления выполнением целевого процесса. Адрес 60р может быть определен, например, при пресечении запуска целевого процесса (см., например, этап 332 на фиг. 8). Поле структуры данных EPROCESS содержит индикатор (например, указатель) блока окружения (РЕВ) целевого процесса. Этот указатель показывает виртуальный адрес 60q в виртуальной памяти 214е процесса, присвоенный целевому процессу операционной системой 34. Кроме того, структура РЕВ содержит указатель на структуру (данные LDR - данные средства загрузки), содержащую информацию об исполняемых модулях (например, библиотеки), загружаемых целевым процессом. Данные LDR расположены по адресу 60r в области 214е. Итак, обходя иерархию структур данных управления процессом, установленных OS 34, движок 40 самоконтроля может определить несколько виртуальных адресов объектов, намеченных для самоконтроля. Если содержимое страниц памяти, расположенных по этим адресам, выгружено из оперативной памяти, то движок 40 может вынудить OS 34 загрузить соответствующие страницы с применением описанных здесь способов.
Системы и способы, описанные выше в качестве примера, позволяют, применяя технологию виртуализации, защитить хостовую систему от вредоносного программного обеспечения. В некоторых вариантах осуществления движок самоанализа памяти работает под виртуальными машинами, выполняющимися в хостовой системе. Движок самоанализа памяти может защитить виртуальную машину благодаря анализу содержимого страницы памяти, используемой процессом, исполняющимся в соответствующей виртуальной машине. Таким образом, движок самоанализа может вне соответствующей VM определить, содержит ли код соответствующего процесса вредоносное программное обеспечение.
В некоторых вариантах осуществления движок самоанализа также может предотвратить несанкционированную модификацию (например, вредоносными программами) некоторых критических объектов, например, определенных драйверов и таблиц страниц. Чтобы защитить такой объект, некоторые варианты осуществления могут предотвращать изменения, пресекая попытки записи в страницу памяти, выделенной для соответствующего объекта. Такие пресечения могут быть выполнены с уровня гипервизора.
В обычных системах защиты от вредоносных программ приложения для обеспечения безопасности выполняются на уровне привилегий процессора, сходном с уровнем операционной системы или обычных приложений. Такие системы могут быть уязвимыми по отношению к современным вредоносным программам, также работающим на уровне привилегий операционной системы. В отличие от этого, в некоторых вариантах осуществления данного изобретения гипервизор выполняется на самом привилегированном уровне (например, привилегированный режим или кольцо -1), перемещая операционную систему в виртуальную машину. Движок самоанализа памяти может выполняться на том же уровне привилегий процессора, что и гипервизор. Итак, операции по защите от вредоносных программ могут выполняться с более высокого уровня привилегий процессора, чем операции операционной системы. В некоторых вариантах осуществления один движок самоанализа памяти может защитить несколько виртуальных машин, одновременно выполняющихся в соответствующей компьютерной системе.
Хотя движок самоанализа памяти выполняется вне виртуальной машины, намеченной для защиты, он может определять виртуальные адреса, используемые программными объектами, выполняющимися в защищаемой VM. Однако если эти виртуальные адреса указывают на содержимое страниц, на данный момент выгруженных из памяти операционной системы, то движок самоанализа памяти не имеет доступа к соответствующему содержимому. В некоторых вариантах осуществления данного изобретения, если какая-либо страница на данный момент выгружена, движок самоанализа памяти может вынудить OS загрузить соответствующую страницу, делая содержимое соответствующей страницы доступным для анализа и/или защиты. Чтобы форсировать эту загрузку, движок самоанализа памяти может вызвать событие виртуализированного процессора соответствующей виртуальной машины, например, исключение ошибки страницы. Это событие в работе процессора может стать причиной того, что операционная система возвращает выгруженную страницу в память. Инициирование события в работе процессора может содержать, например, запись в набор управляющих битов виртуальной машины управляющей структуры, используемой соответствующей виртуальной машиной. Итак, движок самоанализа памяти может внести ошибку страницы в соответствующую виртуальную машину без содействия операционной системы или другой программы, выполняющейся в соответствующей VM.
Специалисту в данной области техники понятно, что вышеприведенные варианты осуществления могут быть изменены во многих отношениях без выхода из объема данного изобретения. Соответственно объем изобретения должен определяться прилагаемой формулой изобретения и ее юридическими эквивалентами.

Claims (44)

1. Хостовая система, содержащая аппаратный процессор, конфигурированный для управления:
гипервизором, конфигурированным для предоставления виртуальной машины, содержащей виртуализированный процессор и виртуализированную память и конфигурированной для применения виртуализированного процессора для выполнения целевого процесса, причем предоставление виртуальной машины содержит конфигурирование структуры данных для сохранения текущего состояния виртуализированного процессора, причем указанная структура данных содержит поле для ввода события, которое, когда оно установлено на определенное значение, инициирует генерацию виртуализированным процессором ошибки страницы; и
движком самоанализа памяти, выполняющимся вне виртуальной машины и конфигурированным для:
определения, в соответствии с таблицей страниц виртуальной машины, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса; и
в ответ, когда целевая страница выгружена из виртуализированной памяти, непосредственного внесения в виртуальную машину указанной ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти, при этом непосредственное внесение ошибки страницы предусматривает запись движком самоанализа памяти определенного значения в поле для ввода события.
2. Хостовая система по п. 1, в которой непосредственное внесение ошибки страницы предусматривает, что движок самоанализа памяти записывает виртуальный адрес целевой страницы в регистр виртуализированного процессора.
3. Хостовая система по п. 1, в которой движок самоанализа памяти дополнительно конфигурирован для:
определения, при подготовке к непосредственному внесению ошибки страницы, удовлетворено ли условие внесения в соответствии с указанным текущим состоянием виртуализированного процессора; и
в ответ, когда это условие внесения удовлетворено, непосредственного внесения ошибки страницы.
4. Хостовая система по п. 3, в которой определение того, удовлетворено ли условие события внесения, содержит определение текущего уровня запроса прерывания (IRQL) виртуализированного процессора.
5. Хостовая система по п. 3, в которой определение того, удовлетворено ли условие события внесения, содержит определение уровня привилегий, на котором виртуализированный процессор выполняется в данный момент.
6. Хостовая система по п. 3, в которой определение того, удовлетворено ли условие события внесения, содержит определение текущего контекста выполнения виртуализированного процессора.
7. Хостовая система по п. 1, в которой движок самоанализа памяти дополнительно конфигурирован, в ответ на непосредственное внесение ошибки страницы, для:
детектирования модификации элемента таблицы страниц целевой страницы; и
в ответ, определения, была ли отображена целевая страница в страницу виртуализированной памяти в соответствии с этой модификацией.
8. Хостовая система по п. 1, в которой движок самоанализа памяти дополнительно конфигурирован для определения, является ли целевой процесс вредоносным в соответствии с содержимым целевой страницы.
9. Хостовая система по п. 1, в которой движок самоанализа памяти дополнительно конфигурирован для пресечения попытки модифицировать содержимое целевой страницы.
10. Хостовая система по п. 1, в которой движок самоанализа памяти дополнительно конфигурирован, при подготовке к определению того, выгружена ли целевая страница из виртуализированной памяти, для:
определения события виртуализированного процессора, причем событие указывает на запуск в виртуальной машине целевого процесса; и
в ответ, определения виртуального адреса целевой страницы в соответствии с этим событием.
11. Хостовая система по п. 3, в которой движок самоанализа памяти дополнительно сконфигурирован с возможностью, в ответ на определение того, удовлетворено ли условие события внесения, задерживать внесение ошибки страницы, если условие внесения не удовлетворено, до тех пор, пока не будет удволетворено условие внесения.
12. Способ внесения ошибки страницы в виртуальных машинах, содержащий:
применение по меньшей мере одного аппаратного процессора хостовой системы для выполнения программы гипервизора, конфигурированного для предоставления виртуальной машины, содержащей виртуализированный процессор и виртуализированную память и конфигурированной для применения виртуализированного процессора для выполнения целевого процесса, причем представление виртуальной машины содержит конфигурирование структуры данных для сохранения текущего состояния виртуализированного процессора, причем структура данных содержит поле для ввода события, которое, когда оно установлено на определенное значение, инициирует генерацию виртуализированный процессором ошибки страницы;
применение указанного по меньшей мере одного аппаратного процессора для определения того, выгружена ли из виртуализированной памяти целевая страница пространства виртуальной памяти целевого процесса; и
в ответ, когда целевая страница выгружена из виртуализированной памяти, применение указанного по меньшей мере одного аппаратного процессора для непосредственного внесения в виртуальную машину указанной ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти, при этом непосредственное внесение ошибки страницы предусматривает запись движком самоанализа памяти определенного значения в поле для ввода события.
13. Способ по п. 12, в котором непосредственное внесение ошибки страницы предусматривает запись виртуального адреса целевой страницы в регистр виртуализированного процессора.
14. Способ по п. 12, дополнительно содержащий, при приготовлении к непосредственному внесению ошибки страницы:
применение указанного по меньшей мере одного аппаратного процессора для определения, удовлетворено ли условие внесения в соответствии с указанным текущим состоянием виртуализированного процессора; и
в ответ, применение указанного по меньшей мере одного аппаратного процессора для непосредственного внесения ошибки страницы, когда это условие внесения удовлетворено.
15. Способ по п. 14, в котором определение того, удовлетворено ли условие события внесения, содержит определение текущего уровня запроса прерывания (IRQL) виртуализированного процессора.
16. Способ по п. 14, в котором определение того, удовлетворено ли условие события внесения, содержит определение уровня привилегий, на котором виртуализированный процессор выполняется в данный момент.
17. Способ по п. 14, в котором определение того, удовлетворено ли условие события внесения, содержит определение текущего контекста выполнения виртуализированного процессора.
18. Способ по п. 12, дополнительно содержащий, в ответ на непосредственное внесение ошибки страницы:
применение указанного по меньшей мере одного аппаратного процессора для детектирования модификации элемента таблицы страниц целевой страницы; и
в ответ, применение указанного по меньшей мере одного аппаратного процессора для определения, была ли отображена целевая страница в страницу виртуализированной памяти в соответствии с этой модификацией.
19. Способ по п. 12, дополнительно содержащий применение указанного по меньшей мере одного аппаратного процессора для определения, является ли целевой процесс вредоносным в соответствии с содержимым целевой страницы.
20. Способ по п. 12, дополнительно содержащий применение указанного по меньшей мере одного аппаратного процессора для пресечения попытки модифицировать содержимое целевой страницы.
21. Способ по п. 14, дополнительно содержащий в ответ на определение того, удовлетворено ли условие события внесения, задержку внесения ошибки страницы, если условие внесения не удовлетворено, до тех пор, пока не будет удовлетворено условие внесения.
22. Способ по п. 12, дополнительно содержащий, при подготовке к определению того, выгружена ли целевая страница из виртуализированной памяти:
применение указанного по меньшей мере одного аппаратного процессора для детектирования события виртуализированного процессора, причем событие указывает на запуск в виртуальной машине целевого процесса; и
в ответ, применение указанного по меньшей мере одного аппаратного процессора для определения виртуального адреса целевой страницы в соответствии с этим событием.
23. Постоянный машиночитаемый носитель, хранящий команды, которые, при выполнении по меньшей мере одним аппаратным процессором хостовой системы, побуждают хостовую систему образовывать движок самоанализа памяти, причем хостовая система выполнет гипервизор, предоставляющий виртуальную машину, содержащую виртуализированный процессор и виртуализированную память и конфигурированную для применения указанного виртуализированного процессора для выполнения целевого процесса, причем представление виртуальной машины содержит конфигурирование структуры данных для сохранения текущего состояния виртуализированного процессора, причем структура данных содержит поле для ввода события, которое, когда оно установлено на определенное значение, инициирует генерацию виртуализированным процессором ошибки страницы, при этом движок самоанализа памяти выполняется вне виртуальной машины и конфигурирован для:
определения, в соответствии с таблицей страниц виртуальной машины, выгружена ли целевая страница пространства виртуальной памяти целевого процесса из виртуализированной памяти; и
в ответ, когда целевая страница выгружена из виртуализированной памяти, непосредственного внесения в виртуальную машину ошибки страницы, причем ошибка страницы приводит к тому, что операционная система виртуальной машины отображает целевую страницу в страницу виртуализированной памяти, при этом непосредственное внесение ошибки страницы предусматривает запись движком самоанализа памяти определенного значения в поле для ввода события.
RU2016104469A 2013-07-17 2014-07-02 Внесение ошибки страницы в виртуальных машинах RU2659472C2 (ru)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201361847538P 2013-07-17 2013-07-17
US61/847,538 2013-07-17
US14/289,163 2014-05-28
US14/289,163 US9507727B2 (en) 2013-07-17 2014-05-28 Page fault injection in virtual machines
PCT/RO2014/000018 WO2015152747A2 (en) 2013-07-17 2014-07-02 Page fault injection in virtual machines

Publications (2)

Publication Number Publication Date
RU2016104469A RU2016104469A (ru) 2017-08-22
RU2659472C2 true RU2659472C2 (ru) 2018-07-02

Family

ID=52344738

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2016104469A RU2659472C2 (ru) 2013-07-17 2014-07-02 Внесение ошибки страницы в виртуальных машинах

Country Status (13)

Country Link
US (1) US9507727B2 (ru)
EP (1) EP3022648B8 (ru)
JP (1) JP6411494B2 (ru)
KR (1) KR101955189B1 (ru)
CN (1) CN105393229B (ru)
AU (1) AU2014389571B2 (ru)
CA (1) CA2915646C (ru)
ES (1) ES2639500T3 (ru)
HK (1) HK1216679A1 (ru)
IL (1) IL243122B (ru)
RU (1) RU2659472C2 (ru)
SG (1) SG11201510735RA (ru)
WO (1) WO2015152747A2 (ru)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9612865B2 (en) 2015-06-15 2017-04-04 International Business Machines Corporation Managed services coordinator
US9898322B2 (en) * 2015-10-29 2018-02-20 International Business Machines Corporation Steganographic message passing between a virtual machine and a hypervisor
WO2017131780A1 (en) * 2016-01-29 2017-08-03 Hewlett Packard Enterprise Development Lp Identifying object modifications
US10116630B2 (en) * 2016-04-04 2018-10-30 Bitdefender IPR Management Ltd. Systems and methods for decrypting network traffic in a virtualized environment
US10528476B2 (en) * 2016-05-24 2020-01-07 International Business Machines Corporation Embedded page size hint for page fault resolution
US10264002B2 (en) * 2016-07-14 2019-04-16 Mitsui Bussan Secure Directions, Inc. Program, information processing device, and information processing method
US10346050B2 (en) 2016-10-26 2019-07-09 International Business Machines Corporation Virtualization of memory compute functionality
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
US20180267818A1 (en) * 2017-03-17 2018-09-20 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on notification data
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US11150929B2 (en) 2018-05-29 2021-10-19 Red Hat, Inc. Enhanced memory management for virtual machines
CN110209354B (zh) * 2019-05-24 2022-04-19 北京百度网讯科技有限公司 用于处理数据的方法、装置、设备和介质
WO2022087481A1 (en) * 2020-10-22 2022-04-28 Vangaveti Kiran In memory decoy
US11586513B2 (en) 2020-11-17 2023-02-21 Google Llc Live migrating virtual machines to a target host upon fatal memory errors
US11550673B2 (en) 2020-11-17 2023-01-10 Google Llc Virtual machines recoverable from uncorrectable memory errors
CN112256404B (zh) * 2020-11-17 2024-04-05 杭州安恒信息技术股份有限公司 一种虚拟机自省方法、装置、设备及介质
US11816498B2 (en) * 2021-01-21 2023-11-14 Nutanix, Inc. Early event-based notification for VM swapping
US11977431B2 (en) 2022-03-15 2024-05-07 Google Llc Memory error prevention by proactive memory poison recovery

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110082962A1 (en) * 2009-10-01 2011-04-07 Vmware, Inc. Monitoring a data structure in a virtual machine
RU2439677C2 (ru) * 2006-05-22 2012-01-10 Майкрософт Корпорейшн Обновление виртуальной машины при помощи вставки или подобного
US8135899B1 (en) * 2006-06-29 2012-03-13 Parallels IP Holdings GmbH Expansion of virtualized physical memory of virtual machine

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10240702A (ja) * 1997-02-26 1998-09-11 Sony Corp 並列処理プロセッサおよびその処理方法
US7305592B2 (en) * 2004-06-30 2007-12-04 Intel Corporation Support for nested fault in a virtual machine environment
US7757035B2 (en) * 2007-06-26 2010-07-13 Intel Corporation Method for optimizing virtualization technology and memory protections using processor-extensions for page table and page directory striping
US8261265B2 (en) 2007-10-30 2012-09-04 Vmware, Inc. Transparent VMM-assisted user-mode execution control transfer
US8244954B2 (en) 2008-10-10 2012-08-14 International Business Machines Corporation On-demand paging-in of pages with read-only file system
US8117373B2 (en) 2009-04-30 2012-02-14 Kimon Berlin VM host responding to initiation of a page swap by transferring pages from host-but-non-guest-addressable RAM to host-and-guest-addressable RAM
WO2011002436A1 (en) 2009-06-29 2011-01-06 Hewlett-Packard Development Company, L.P. Hypervisor-based management of local and remote virtual memory pages
CN102129531B (zh) * 2011-03-22 2013-07-24 北京工业大学 一种基于Xen的主动防御方法
US8694738B2 (en) 2011-10-11 2014-04-08 Mcafee, Inc. System and method for critical address space protection in a hypervisor environment
CN102736969B (zh) * 2012-05-22 2014-12-17 中国科学院计算技术研究所 一种针对硬件虚拟化的内存监控方法和系统
US8914458B2 (en) 2012-09-27 2014-12-16 Mellanox Technologies Ltd. Look-ahead handling of page faults in I/O operations

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2439677C2 (ru) * 2006-05-22 2012-01-10 Майкрософт Корпорейшн Обновление виртуальной машины при помощи вставки или подобного
US8135899B1 (en) * 2006-06-29 2012-03-13 Parallels IP Holdings GmbH Expansion of virtualized physical memory of virtual machine
US20110082962A1 (en) * 2009-10-01 2011-04-07 Vmware, Inc. Monitoring a data structure in a virtual machine

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ASHLESHA JOSHI et al. "Detecting past and present intrusions through vulnerability-specific predicates", OPERATING SYSTEMS REVIEW, vol. 39, no 5, 23.10.2005. *

Also Published As

Publication number Publication date
EP3022648B1 (en) 2017-06-14
US9507727B2 (en) 2016-11-29
KR20160033689A (ko) 2016-03-28
US20150026807A1 (en) 2015-01-22
HK1216679A1 (zh) 2016-11-25
EP3022648A2 (en) 2016-05-25
KR101955189B1 (ko) 2019-03-08
JP6411494B2 (ja) 2018-10-24
JP2016525255A (ja) 2016-08-22
WO2015152747A3 (en) 2015-12-03
CN105393229B (zh) 2019-01-18
ES2639500T3 (es) 2017-10-26
RU2016104469A (ru) 2017-08-22
CA2915646C (en) 2020-08-25
WO2015152747A2 (en) 2015-10-08
CA2915646A1 (en) 2015-10-08
SG11201510735RA (en) 2016-02-26
IL243122B (en) 2019-11-28
AU2014389571A1 (en) 2016-01-21
CN105393229A (zh) 2016-03-09
AU2014389571B2 (en) 2019-05-09
EP3022648B8 (en) 2017-08-02

Similar Documents

Publication Publication Date Title
RU2659472C2 (ru) Внесение ошибки страницы в виртуальных машинах
US8875295B2 (en) Memory introspection engine for integrity protection of virtual machines
US9117081B2 (en) Strongly isolated malware scanning using secure virtual containers
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
KR100984203B1 (ko) 가상 머신 모니터의 구성요소의 특권을 해제하는 시스템 및방법
JP6378758B2 (ja) 仮想マシンにおけるマルウェア検出のためのプロセス評価
US20160210069A1 (en) Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine
CN109074321B (zh) 用于保护虚拟计算实例的存储器的方法和系统
US20160048458A1 (en) Computer Security Systems and Methods Using Hardware-Accelerated Access To Guest Memory From Below The Operating System
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
CN113268726B (zh) 程序代码执行行为的监控方法、计算机设备

Legal Events

Date Code Title Description
PD4A Correction of name of patent owner