ВНЕСЕНИЕ ОШИБКИ СТРАНИЦЫ В ВИРТУАЛЬНЫХ МАШИНАХ
PAGE ERROR INSERTION IN VIRTUAL MACHINES

Родственные заявки
Данная заявка испрашивает приоритет согласно дате подачи предварительной заявки на патент США №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.
Специалисту в данной области техники понятно, что вышеприведенные варианты осуществления могут быть изменены во многих отношениях без выхода из объема данного изобретения. Соответственно объем изобретения должен определяться прилагаемой формулой изобретения и ее юридическими эквивалентами.