RU2723668C1 - Фильтрация событий для приложений безопасности виртуальных машин - Google Patents
Фильтрация событий для приложений безопасности виртуальных машин Download PDFInfo
- Publication number
- RU2723668C1 RU2723668C1 RU2019114975A RU2019114975A RU2723668C1 RU 2723668 C1 RU2723668 C1 RU 2723668C1 RU 2019114975 A RU2019114975 A RU 2019114975A RU 2019114975 A RU2019114975 A RU 2019114975A RU 2723668 C1 RU2723668 C1 RU 2723668C1
- Authority
- RU
- Russia
- Prior art keywords
- attempt
- acceptable
- response
- memory
- determining whether
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/554—Detecting local intrusion or implementing counter-measures involving event detection and direct action
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Virology (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Storage Device Security (AREA)
- Burglar Alarm Systems (AREA)
- Alarm Systems (AREA)
Abstract
Изобретение относится к области компьютерной безопасности. Техническим результатом является обеспечение защиты виртуальной машины от вредоносного программного обеспечения. В способе используют гибридную систему уведомления и анализа событий, в которой первый компонент, выполняющийся в защищенной виртуальной машине (ВМ), регистрируется в качестве обработчика исключений процессора, вызванных нарушениями прав доступа к памяти, а второй компонент, выполняющийся вне соответствующей ВМ регистрируется в качестве обработчика для событий выхода из ВМ. Первый компонент фильтрует события нарушения разрешений в соответствии с набором правил и только уведомляет второй компонент о событиях, которые считаются релевантными для безопасности. Второй компонент анализирует уведомленные события для определения того, является ли программное обеспечение вредоносным. 3 н. и 18 з.п. ф-лы, 10 ил.
Description
Родственные заявки
[1] Настоящая заявка испрашивает приоритет по дате подачи американской предварительной заявки номер 62,436,027, поданной 19.12.2016 под названием «Event Filter for Accelerating Computer Security Operations in Virtual Machines» (Фильтр событий для ускорения операций по обеспечению компьютерной безопасности в виртуальных машинах), все содержание которой включено в настоящую заявку посредством ссылки.
Область техники, к которой относится изобретение
[2] Настоящее изобретение относится к системам и способам компьютерной безопасности, в частности, к системам и способам защиты виртуальных машин от вредоносного программного обеспечения.
[3] Во всем мире вредоносное программное обеспечение, известное также как вредоносные программы, наносит ущерб большому количеству вычислительных систем. В ряде своих форм, таких, например, как компьютерные вирусы, руткиты, шпионское программное обеспечение и программы-вымогатели, вредоносные программы представляют собой серьезную опасность для миллионов пользователей компьютеров, делая их уязвимыми, в частности, в отношении потери данных и конфиденциальной информации, хищения личных данных и снижения производительности. Для защиты вычислительной системы от вредоносных программ может быть использовано программное обеспечение компьютерной безопасности.
[4] Технология аппаратной виртуализации обеспечивает возможность создания искусственных компьютерных сред, которые известны под названием «виртуальные машины» (ВМ) и во многих отношениях ведут себя, как физические вычислительные системы. В типичных приложениях, в частности, при применении консолидации серверов и инфраструктуры как услуги (также известной под популярным названием «облачные услуги»), на одной вычислительной системе одновременно могут работать несколько виртуальных машин, делящих между собой аппаратные ресурсы, что позволяет снизить капиталовложения и стоимость эксплуатации. Каждая виртуальная машина может использовать собственную операционную систему и/или программные приложения, отдельно от других виртуальных машин. Каждая такая виртуальная машина потенциально нуждается в защите от угроз компьютерной безопасности.
[5] Размещение программного обеспечения компьютерной безопасности вне защищенной виртуальной машины обычно обеспечивает высокую степень защиты. Однако, программное обеспечение, выполняемое в таких конфигурациях компьютерной безопасности, является значительно более сложным и дорогим по сравнению с невиртуализированными средами. В обычных аппаратных системах виртуализации для защиты от вредоносных программ события, относящиеся к безопасности и происходящие в защищенной виртуальной машине, как правило, приводят к приостановке работы соответствующей виртуальной машины аппаратным процессором и переключению на выполнение программного обеспечения безопасности вне защищенной виртуальной машины. Затем в ответ на анализ событий процессор может переключиться обратно на выполнение защищенной виртуальной машины. Частые циклы приостановки/возобновления работы виртуальной машины влекут за собой значительные вычислительные затраты и могут повлиять на производительность и взаимодействие с пользователем.
[6] Существует значительный интерес к повышению эффективности операций по обеспечению компьютерной безопасности на аппаратных платформах виртуализации.
Раскрытие сущности изобретения
[7] В соответствии с одним аспектом настоящего изобретения, заявленная хост-система содержит аппаратный процессор и память. Аппаратный процессор сконфигурирован для выполнения виртуальной машины (ВМ), фильтра событий и подсистемы самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ. Кроме того, аппаратный процессор сконфигурирован генерировать первое исключение в ответ на обнаружение попытки программного объекта, выполняющегося внутри ВМ, получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти, и в ответ на первое исключение - переключаться с выполнения программного объекта на выполнение фильтра событий. Аппаратный процессор дополнительно сконфигурирован, в ответ на второе исключение, переключаться с выполнения фильтра событий на выполнение подсистемы самодиагностики. Фильтр событий сконфигурирован, в ответ на первое исключение, определять в соответствии с критерием приемлемости события, является ли попытка приемлемой для уведомления подсистемы самодиагностики. Фильтр событий дополнительно сконфигурирован, в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, побуждать процессор генерировать второе исключение, а в случае если попытка не является приемлемой, предотвращать генерацию процессором второго исключения и вместо этого побуждать процессор возобновить выполнение программного объекта. Подсистема самодиагностики сконфигурирована определять, является ли попытка вредоносной.
[8] В соответствии с другим аспектом настоящего изобретения, заявленный способ обеспечивает защиту хост-системы от угроз компьютерной безопасности. Хост-система содержит аппаратный процессор и память, причем аппаратный процессор сконфигурирован выполнять виртуальную машину (ВМ), фильтр событий и подсистему самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ. Способ включает конфигурирование аппаратного процессора так, чтобы генерировать первое исключение в ответ на обнаружение попытки программного объекта, выполняющегося внутри ВМ, получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти. Кроме того, способ включает конфигурирование аппаратного процессора так, чтобы переключаться, в ответ на первое исключение, с выполнения программного объекта на выполнение фильтра событий, а в ответ на второе исключение, переключаться с выполнения фильтра событий на выполнение подсистемы самодиагностики. Кроме того, способ включает в себя, в ответ на первое исключение, использование фильтра событий, чтобы в соответствии с критерием приемлемости события определить, является ли попытка приемлемой для уведомления подсистемы самодиагностики. Кроме того, способ включает в себя, в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, побуждение процессора генерировать второе исключение, а в случае если попытка не является приемлемой, предотвращение генерации процессором второго исключения и вместо этого принуждение процессора возобновить выполнение программного объекта. Кроме того, способ включает в себя, в ответ на второе исключение, использование подсистемы самодиагностики для определения того, является ли попытка вредоносной.
[9] В соответствии с еще одним аспектом, заявленный долговременный машиночитаемый носитель хранит команды, которые при выполнении их аппаратным процессором хост-системы, предоставляющей виртуальную машину, побуждают хост-систему формировать фильтр событий и подсистема самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ. Подсистема самодиагностики сконфигурирована конфигурировать аппаратный процессор так, чтобы генерировать первое исключение в ответ на обнаружение попытки программного объекта, выполняющегося внутри ВМ, получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти. Кроме того, подсистема самодиагностики сконфигурирована конфигурировать аппаратный процессор так, чтобы так, чтобы переключаться, в ответ на первое исключение, с выполнения программного объекта на выполнение фильтра событий, а в ответ на второе исключение, переключается с выполнения фильтра событий на выполнение подсистемы самодиагностики. Кроме того, подсистема самодиагностики сконфигурирована, в ответ на второе исключение, определять, является ли попытка вредоносной. Фильтр событий сконфигурирован, в ответ на первое исключение, определять в соответствии с критерием приемлемости события, является ли попытка приемлемой для уведомления подсистемы самодиагностики. Кроме того, фильтр событий сконфигурирован, в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, побуждать процессор, генерировать второе исключение, а если попытка не является приемлемой, предотвращать генерацию процессором второго исключения и вместо этого побуждать процессор возобновить выполнение программного объекта.
Краткое описание чертежей
[10] Вышеупомянутые аспекты и преимущества настоящего изобретения более ясны из следующего подробного описания со ссылками на чертежи, на которых изображено следующее:
[11] На фиг. 1 показан пример конфигурации аппаратных средств хост-системы в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[12] На фиг. 2 показана группа гостевых виртуальных машин (ВМ), предоставляемых гипервизором, выполняющимся в хост-системе, и ряд компонентов безопасности, защищающих соответствующие ВМ в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[13] На фиг. 3 показан пример трансляции адреса ячейки памяти в конфигурацию виртуальных машин, как показано на фиг. 2.
[14] На фиг. 4 показан пример записи в таблице страниц в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[15] На фиг. 5 показаны примеры компонентов фильтра событий, выполняющегося в защищенной гостевой виртуальной машине в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[16] На фиг. 6 показана примерная последовательность этапов, выполняемых для установки и инициализации программного обеспечения безопасности в хост-системе в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[17] На фиг. 7 показана примерная последовательность этапов, выполняемых фильтром событий в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[18] На фиг. 8 показана примерная последовательность этапов, выполняемых средством контроля приемлемости являющегося компонентом фильтра событий для определения того, является ли перехваченное событие приемлемым для уведомления подсистемы самодиагностики, в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[19] На фиг. 9 показана еще одна примерная последовательность этапов, выполняемых средством контроля приемлемости для определения того, является ли перехваченное событие приемлемым для уведомления, в соответствии с некоторыми вариантами осуществления настоящего изобретения.
[20] На фиг. 10 показана примерная последовательность этапов, выполняемых подсистемой самодиагностики в соответствии с некоторыми вариантами осуществления настоящего изобретения.
Подробное описание предпочтительных вариантов осуществления изобретения
[21] В нижеследующем описании подразумевается, что все перечисленные соединения между схемами и устройствами могут представлять собой непосредственные оперативные соединения или косвенные оперативные соединения посредством промежуточных схем и устройств. Группа элементов включает в себя один или несколько элементов. Любое перечисление элемента следует понимать, как относящееся по меньшей мере к одному элементу. Множество элементов включает в себя по меньшей мере два элемента. Если не указано другого требования, любые описанные этапы способа не обязательно должны выполняться в определенном показанном порядке. Первый элемент (например, данные), полученный из второго элемента, охватывает первый элемент, равный второму элементу, а также первый элемент, генерируемый посредством обработки второго элемента, и опционально другие данные. Принятие определения или решения в соответствии с параметром охватывает принятие определения или решения в соответствии с этим параметром и опционально в соответствии с другими данными. Если не дано другого определения, индикатор некоторого количества/данных может представлять собой само количество/данные, или индикатор, отличающийся от самого количества/данных. Компьютерная безопасность содержит защиту пользователей и оборудования от непредусмотренного или неразрешенного доступа к данным и/или оборудованию, от непредусмотренной или неразрешенной модификации данных и/или оборудования и от разрушения данных и/или оборудования. Компьютерная программа представляет собой последовательность выполняющих задачу машинных команд. Компьютерные программы, описанные в некоторых вариантах осуществления настоящего изобретения, могут быть автономными программными объектами или подобъектами (например, подпрограммами, библиотеками) других компьютерных программ. Если не дано другого определения, процесс представляет собой экземпляр машинной программы, например, приложение или часть операционной системы, и отличается тем, что он имеет по меньшей мере один поток выполняемых задач и пространство виртуальной памяти, причем содержимое соответствующего пространства виртуальной памяти включает в себя исполнимый код. Если не дано другого определения, страница представляет собой наименьшую единицу виртуальной памяти, которую можно отдельно сопоставить с физической памятью хост-системы. Считается, что программа выполняется внутри виртуальной машине, если она выполняется на виртуальном процессоре соответствующей виртуальной машины. Машиночитаемые носители охватывают долговременные носители, например, магнитные, оптические и полупроводниковые носители информации (например, жесткие диски, оптические диски, флеш-память, динамическую оперативную память), а также линии связи, например, токопроводящие кабели и волоконно-оптические линии связи. В соответствии с некоторыми вариантами осуществления изобретения среди прочего в данном изобретении предлагаются вычислительные системы, содержащие аппаратные средства (например, один или несколько процессоров), запрограммированные для осуществления описанных здесь способов, а также содержащиеся на машиночитаемых носителях команды на машинном языке для осуществления описанных здесь способов.
[22] Следующее описание на примерах, не обязательно носящих ограничительный характер, иллюстрирует варианты осуществления изобретения.
[23] На фиг. 1 показана примерная конфигурация аппаратных средств хост-системы 10, защищенной от угроз компьютерной безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения. Хост-система 10 может представлять собой корпоративное вычислительное устройство, например, корпоративный сервер, или устройство конечного пользователя, например, персональный компьютер, планшетный компьютер или смартфон. Другие примерные хост-системы включают игровые консоли, бытовые электронные устройства, например, умные телевизоры, носимые вычислительные устройства или любое другое устройство, имеющее память и процессор. Хост-система 10 может использоваться для выполнения ряда программных приложений, в том числе таких как браузер, приложение для обработки текстов и приложение электронной связи (например, электронная почта, обмен мгновенными сообщениями). В некоторых вариантах осуществления, как показано ниже, хост-система 10 сконфигурирована поддерживать аппаратную виртуализацию и предоставлять группу виртуальных машин.
[24] Для простоты на фиг. 1 показана компьютерная система; аппаратная конфигурация других хост-систем, таких как смартфоны и планшетные компьютеры, может отличаться. Система 10 содержит группу физических устройств, в том числе процессор 12, память 18, группу устройств 14 ввода, группу устройств 16 вывода, группу устройств 20 хранения данных и группу сетевых адаптеров 22, соединенных друг с другом посредством контроллера-концентратора 24. Процессор 12 содержит физическое устройство (например, микропроцессор, многоядерную микросхему, образованную на полупроводниковой подложке) и сконфигурированную выполнять вычислительные и/или логические операции посредством ряда сигналов и/или данных. В некоторых вариантах осуществления такие логические операции подаются в процессор 12 в виде последовательности машинных команд (например, в виде машинного кода или программы другого типа). Память 18 может содержать долговременный машиночитаемый носитель (например, ОЗУ), хранящий данные/сигналы, полученные или сгенерированные процессором 12 при выполнении команд.
[25] Устройства 14 ввода помимо прочего могут включать в себя компьютерные клавиатуры, мышь и микрофоны, в том числе соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или команды в хост-систему 10. Устройства 16 вывода могут включать в себя устройства отображения, например, мониторы и громкоговорители, а также аппаратные интерфейсы и/или адаптеры, например, графические платы, благодаря которым хост-система 10 может передавать данные пользователю. В некоторых вариантах осуществления устройства 14 ввода и устройства 16 вывода могут совместно использовать общую часть оборудования, как в случае устройств с сенсорным экраном. Устройства 20 хранения данных включают в себя машиночитаемые носители, делающие возможным энергонезависимое хранение, чтение и запись машинных команд и/или данных. Примерные устройства 20 хранения данных включают в себя магнитные и оптические диски, устройства на основе флеш-памяти, а также съемные носители, например, CD-диски и/или DVD-диски и приводы. Благодаря группе сетевых адаптеров 22 хост-система 10 может подключаться к вычислительной сети и/или другим устройствам/вычислительным системам. В целом контроллер-концентратор 24 представляет собой несколько системных, периферийных и/или внутрикристальных шин, и/или все другие схемы, делающие возможным обмен данными между процессором 12 и устройствами 14, 16, 18, 20 и 22. Например, контроллер-концентратор 24, помимо прочего, может содержать блок управления памятью (MMU - memory management unit), контроллер ввода/вывода и контроллер прерываний. В другом примере контроллер-концентратор 24 может содержать северный мост, соединяющий процессор 12 с памятью 18, и/или южный мост, соединяющий процессор 12 с устройствами 14, 16, 20 и 22. В некоторых аппаратных платформах MMU частично или полностью интегрирован с процессором 12, т.е. MMU имеет общую полупроводниковую подложку с процессором 12.
[26] На фиг. 2 показана примерная конфигурация, при которой группа компонентов безопасности взаимодействует для защиты группы виртуальных машин от угроз компьютерной безопасности в соответствии с некоторыми вариантами осуществления настоящего изобретения. Показанная хост-система 10 использует технологию аппаратной виртуализации для управления группой гостевых виртуальных машин (ВМ) 32a-b, предоставленных гипервизором 30. Хотя фиг. 2 была составлена так, чтобы отображались только две ВМ, некоторые варианты осуществления могут служить в качестве хоста для гораздо большего числа (например, для сотен) одновременно работающих ВМ. Использование гипервизора для управления несколькими виртуальными машинами часто встречается в таких приложениях, как облачные вычисления и консолидация серверов. Примеры популярных гипервизоров включают VMware vSphere® фирмы VMware Inc. и бесплатный гипервизор Xen.
[27] Виртуальные машины известны в данной области, как эмуляции реальных физических машин/вычислительных систем, на которых может работать операционная система и другие приложения. В некоторых вариантах осуществления гипервизор 30 содержит программное обеспечение, сконфигурированное создавать или запускать ряд виртуализированных устройств, например, виртуальный процессор и виртуальные контроллеры, и предоставлять программному обеспечению эти виртуализированные устройства вместо реальных физических устройств хост-системы 10. В данной области техники такие операции гипервизора 30 также известны, как предоставление виртуальной машины. Как правило, гипервизор 30 делает возможным мультиплексирование (совместное использование) несколькими виртуальными машинами аппаратных ресурсов хост-системы 10. Кроме того, гипервизор 30 может управлять аппаратными средствами хост-системы 10 так, что каждая гостевая ВМ 32a-b работает независимо и не знает о том, что одновременно в хост-системе 10 выполняются другие ВМ.
[28] Каждое виртуализированное устройство (например, процессор, устройство ввода, устройство вывода, устройство хранения данных и т.д.) эмулирует по меньшей мере некоторые функции соответствующего физического устройства хост-системы 10. Например, программа, выполняющаяся в виртуализированном процессоре гостевой ВМ, посредством виртуализированного сетевого адаптера может передавать и/или принимать сетевой трафик. В некоторых вариантах осуществления гипервизор 30 может предоставить для каждой гостевой ВМ только подмножество виртуализированных устройств (например, только виртуализированный процессор, виртуализированную память и части контроллера-концентратора). Кроме того, гипервизор 30 может предоставить выбранной ВМ право на непосредственное и исключительное использование некоторых аппаратных устройств хост-системы 10. В одном из таких примеров гостевая ВМ 32a (фиг. 2) может иметь право на исключительное использование устройств 14 ввода и устройств 16 вывода, но не иметь права на использование виртуализированного сетевого адаптера. В то же время гостевая ВМ 32b может иметь право на непосредственное и исключительное использование сетевого адаптера (сетевых адаптеров) 22. Такие конфигурации могут быть реализованы, например, с использованием технологии VT-d® от Intel®.
[29] В некоторых вариантах осуществления предоставление каждой гостевой ВМ 32a-b включает в себя настройку структуры данных, используемой гипервизором 30 для управления работой соответствующей гостевой ВМ. Ниже такая структура будет именоваться объектом состояния виртуальной машины (virtual machine state object, VMSO). Примерные VMSO включают в себя структуру управления виртуальной машины (virtual machine control structure, VMCS) на платформах Intel® и блок управления виртуальной машины (virtual machine control block, VMCB) на платформах AMD®. В некоторых вариантах осуществления процессор 16 связывает область в памяти с каждым VMSO, так что программное обеспечение может ссылаться на конкретный VMSO с использованием адреса или указателя памяти (например, указателя VMCS на платформах Intel®).
[30] Каждый VMSO может содержать данные, представляющие текущее состояние соответствующего виртуализированного процессора, предоставленного в хост-системе 10. В многопоточных конфигурациях аппаратный процессор 12 может управлять множеством ядер, причем каждое ядро дополнительно содержит множество логических процессоров, причем каждый логический процессор может обрабатывать выполняемый поток независимо и одновременно с другими логическими процессорами. Несколько логических процессоров могут совместно использовать некоторые аппаратные ресурсы, например, общий блок управления памятью. В многопоточном варианте осуществления для каждого отдельного логического процессора может быть настроен отдельный VMSO. Соответствующий VMSO может содержать область состояния гостевой системы и область состояния хост-системы, причем область состояния гостевой системы хранит состояние центрального процессора соответствующей виртуальной машины, а область состояния хост-системы хранит текущее состояние гипервизора 30. В некоторых вариантах осуществления область состояния гостевой системы VMSO среди прочего включает в себя содержимое контрольных регистров (например, CR0, CR3 и т. д.), указатель команд (например, регистр-указатель команд RIP), регистры общего назначения (например, EAX, ECX и т. д.) и регистры состояния (например, EFLAGS) виртуального процессора соответствующей ВМ. Область состояния хост-системы VMSO может содержать указатель (например, указатель EPT (extended page table - расширенная таблица страниц) на платформах Intel®) для таблицы страниц, сконфигурированной для трансляции адресов для соответствующей ВМ.
[31] В некоторых вариантах осуществления процессор 12 может хранить часть VMSO внутри специальных внутренних регистров/кэшей, тогда как другие части соответствующего VMSO могут находиться в памяти 18. В любой момент времени на логический процессор может быть загружено не более одного VMSO (именуемого здесь текущим VMSO), идентифицирующего виртуальную машину, в данное время управляющую соответствующим логическим процессором. Когда процессор 12 переключается с первой ВМ на выполнение второй ВМ или гипервизора 30, процессор 12 может сохранить текущее состояние первой ВМ в области состояния гостевой системы текущего VMSO.
[32] Каждая из показанных ВМ (фиг. 2) соответственно может выполнять гостевую операционную систему (ОС) 34a-b. Операционные системы 34a-b могут заключать в себе любую широкодоступную операционную систему, например, Microsoft Windows®, MacOS®, Linux®, iOS®, или Android®. Каждая ОС 34a-b обеспечивает интерфейс между приложениями, выполняющимися в соответствующей виртуальной машине, и (виртуализированными) аппаратными устройствами соответствующей ВМ. Группа примерных приложений 36a-b, в общем, представляет любое программное приложение, например, обработку текстов, обработку изображений, медиаплеер, базу данных, календарь, управление личными контактами, браузер, игровую программу, передачу речевых сообщений, передачу данных или приложения компьютерной безопасности. Если в следующем описании программное обеспечение выполняется в виртуальном процессоре виртуальной машины, то говорится, что оно выполняется в соответствующей виртуальной машине. Например, в примере, показанном на фиг. 2, приложение 36a выполняется в гостевой ВМ 32a, в то время как приложение 36b выполняется в гостевой ВМ 32b. Напротив, как говорят, гипервизор 30 выполняется вне или ниже гостевых ВМ 32a-b.
[33] В некоторых вариантах осуществления множество компонентов безопасности взаимодействует для защиты гостевых виртуальных машин 32a-b от угроз компьютерной безопасности, таких как вредоносное программное обеспечение. На фиг. 2 показаны такие компоненты безопасности, например, группа фильтров 42a-b событий, выполняющихся соответственно в гостевых ВМ 32a-b, и подсистема 40 самодиагностики, выполняющийся вне гостевых ВМ 32a-b. Кроме того, подсистема 40 самодиагностики может заключать в себе обработчик 44 уведомлений. В некоторых вариантах осуществления каждый фильтр 42a-b событий обнаруживает наступление определенных событий во время выполнения программного обеспечения в соответствующей гостевой ВМ. Примерные события, перехватываемые фильтрами 42a-b, помимо прочего, включают в себя исключение и/или прерывание процессора, вызов определенных функций ОС 34a-b, доступ к реестру ОС 34a-b, загрузку файла из удаленного места и запись данных в файл. В некоторых вариантах осуществления фильтры 42a-b выполняются на уровне привилегий процессора соответствующей операционной системы (например, в режиме ядра).
[34] Фильтры 42a-b событий могут фильтровать обнаруженные события в соответствии с набором правил, чтобы определить подмножество событий, особенно важных для компьютерной безопасности, и уведомить подсистему 40 самодиагностики о наступлении выбранного подмножества событий. В некоторых вариантах осуществления подсистема 40 самодиагностики анализирует принятые уведомления для определения того, указывают ли соответствующие события на вредоносную атаку. Кроме того, подсистема 40 может выполнять другие относящиеся к безопасности операции, например, определение адреса области памяти, содержащего части программного объекта, выполняющегося в гостевой ВМ, доступ к соответствующей области памяти и анализ содержимого, хранимого в соответствующих областях памяти. Другие примеры операций, связанных с безопасностью и выполняющихся подсистемой 40 самодиагностики, включают перехват и/или ограничение доступа к определенным областям памяти, например, предотвращение перезаписи кода или данных, относящихся к защищенному процессу, а также предотвращение выполнения кода, хранящегося на определенных страницах памяти.
[35] Одна подсистема 40 самодиагностики может защищать нескольких гостевых ВМ, выполняющихся в хост-системе 10. Подсистема 40 может быть включена в гипервизор 30 (например, в виде набора библиотек) или предоставлен как машинная программа, отличная и независимая от гипервизора 30, но выполняющаяся на уровне привилегий процессора гипервизора 30. Подсистема 40 может быть или не быть процессом (имеющим отдельный поток выполнения по расписанию). В некоторых вариантах осуществления подсистема 40 содержит набор незапланированных объектов кода, выполняющихся при запуске определенными событиями процессора. Ниже подробно описана работа фильтров 42a-b событий и подсистемы 40 самодиагностики.
[36] Современные процессоры реализуют иерархию уровней привилегий процессора, которые в данной области также известны, как кольца защиты. Каждое такое кольцо или уровень отличается набором действий и/или машинных команд, которые разрешается выполнять программному обеспечению, выполняемому в соответствующем кольце. Примерные уровни привилегий или кольца включают режим пользователя (кольцо 3) и режим ядра (кольцо 0). Некоторые хост-системы, сконфигурированные поддерживать аппаратную виртуализацию, могут заключать в себе дополнительное кольцо с наивысшими привилегиями процессора (например, кольцо -1, привилегированный режим или VMXroot на платформах Intel®). В некоторых вариантах осуществления гипервизор 30 берет на себя управление процессором 12 на самом привилегированном уровне (кольцо -1), таким образом, создавая аппаратную платформу виртуализации, предоставляемую в виде виртуальной машины для другого программного обеспечения, выполняющегося в хост-системе 10. Операционная система, например, ОС 34a на фиг. 2, выполняется в виртуальной среде соответствующей ВМ, как правило, с меньшими привилегиями процессора, чем гипервизор 30 (например, в кольце 0 или в режиме ядра). Обычные пользовательские приложения, такие как приложение 36a, как правило, выполняются с более низкой привилегией процессора, чем ОС 34a (например, в кольце 3 или в режиме пользователя). Когда программный объект пытается выполнить действие или команду, требующую больших привилегий процессора, чем разрешено назначенным для него защитным кольцом, эта попытка обычно генерирует событие процессора, такое как исключение или сбой, передающее управление процессором 12 объекту (например, фильтр событий операционной системы), выполняющемуся в кольце с достаточными привилегиями для выполнения соответствующего действия.
[37] В частности, выполнение некоторых машинных команд требует уровня привилегий гипервизора 30 (например, VMXroot). Примеры таких команд включают VMCALL на платформах Intel®. В некоторых аппаратных системах вызов такой команды из виртуальной машины приводит к возникновению отказа определенного типа, известного как событие выхода из виртуальной машины (например, VMExit на платформах Intel®). События выхода из виртуальной машины приостанавливают выполнение соответствующей виртуальной машины и переключают процессор 12 на выполнение процедуры обработчика вне соответствующей ВМ, как правило, на уровне привилегий процессора гипервизора 30.
[38] На некоторых аппаратных платформах выходы из ВМ могут быть вызваны другими типами событий, например, нарушением разрешения на доступ к памяти. В одном таком примере, когда программный объект, выполняющийся внутри ВМ, пытается записать данные на странице памяти, помеченной как недоступная для записи, или выполнить код со страницы памяти, помеченной как неисполнимая, процессор 12 может генерировать ошибку страницы, и в ответ приостановить выполнение соответствующей ВМ и переключиться на выполнение гипервизора 30. Такие механизмы выхода, например, могут позволить, выполнить программу компьютерной безопасности вне соответствующей ВМ (например, подсистема 40 самодиагностики), чтобы защитить виртуальную машину от угроз безопасности. В некоторых вариантах осуществления подсистема 40 самодиагностики перехватывает события выхода из ВМ, происходящие во время выполнения программного обеспечения внутри ВМ и, кроме того, анализирует такие события, возможно, не зная программного обеспечения, выполняющегося внутри ВМ. В случае, если событие указывает на атаку, подсистема 40 может предпринять несколько действий по снижению угрозы, таких как приостановка выполнения соответствующей гостевой ВМ, прекращение передачи данных в и/или из соответствующей гостевой ВМ, введение агента очистки в соответствующую гостевую ВМ, оповещение пользователя хост-системы 10 и т.д.
[39] Современные вычислительные платформы, оптимизированные для аппаратной виртуализации, также сконфигурированы генерировать события другого типа, связанные с работой процессора и запускаемые привилегированными командами и/или нарушениями разрешения на доступ к памяти. Такие события в работе процессора обычно называются исключениями виртуализации (например, #VE на платформах Intel®) и побуждают процессор переключаться с выполнения программного обеспечения в гостевой виртуальной машине на выполнение подпрограммы обработчика - также в соответствующей гостевой виртуальной машине, таким образом, избегая вычислительных затрат, обычно связанных с событием выхода из ВМ. Некоторые процессоры могут быть сконфигурированы для выборочной генерации события выхода из виртуальной машины или исключения виртуализации в ответ на различные ситуации.
[40] Как правило, виртуальные машины работают с виртуализированной физической памятью, которую в данной области техники также называют гостевой физической памятью. Виртуализированная физическая память содержит абстрактное представление фактической физической памяти 18, например, в виде непрерывного пространства адресов, специфического для каждой ВМ, причем части этого пространства поставлены в соответствие с адресами физической памяти 18 и/или физических устройств 20 хранения данных. В современных платформах, основанных на аппаратной виртуализации, такое соответствие обычно достигается посредством специальных структур данных и механизмов, управляемых процессором 12, которые известны, как трансляция адресов второго уровня (second level address translation, SLAT). Распространенные применения SLAT включают в себя расширенные таблицы страниц (extended page tables, EPT) на платформах Intel® и вложенные таблицы страниц (nested page tables, NPT) на платформах AMD®. В таких системах виртуальная физическая память разделена на единицы, известные в данной области, как страницы, причем страница представляет собой наименьшую единицу виртуализированной физической памяти, отдельно поставленную в соответствие с физической памятью посредством SLAT, т.е. установление соответствия между физической и виртуализированной физической памятью осуществляется со страничной гранулярностью. Как правило, все страницы имеют определенный размер, например, 4 килобайта, 2 мегабайта и т.д. Обычно разделение виртуализированной физической памяти на страницы конфигурирует гипервизор 30. В некоторых вариантах осуществления гипервизор 30 также конфигурирует структуры SLAT и, следовательно, соответствие между физической памятью и виртуализированной физической памятью. В некоторых вариантах осуществления указатель на структуру данных SLAT (например, на таблицу страниц) хранится в VMSO соответствующей виртуальной машины. Фактическое преобразование (трансляция) адреса виртуализированной памяти в адрес физической памяти может содержать просмотр адреса физической памяти в буфере быстрой трансляция адресов (TLB - translation lookaside buffer) хост-системы 10. В случае отсутствия TLB трансляция адресов включает в себя осуществление просмотра таблицы страниц, включающего ряд последовательных просмотров адресов в группе таблиц страниц и/или каталогов страниц и производство вычислений, например, прибавление смещения страницы к адресу, относящемуся к соответствующей странице.
[41] Фиг. 3 иллюстрирует соответствие адресов памяти в варианте осуществления, показанном на фиг. 2. В общем случае гостевая виртуальная машина 32 представляет собой любую гостевую виртуальную машину, исполняющуюся в хост-системе 10, например, виртуальные машины 32a-b на фиг. 2. После предоставления гипервизором 30 гостевая ВМ 32 видит пространство 118 виртуализированной физической памяти как свое собственное пространство физической памяти. Программному объекту (например, процессу), выполняемому в гостевой ВМ 32, гостевой ОС 34 соответствующей ВМ назначается пространство 218 виртуальной памяти. Если программный объект, например, пытается получить доступ к содержимому примерной страницы 50a памяти в пространстве 218a, то виртуализированный процессор гостевой ВМ 32 в соответствии с таблицами страниц, сконфигурированными и управляемыми гостевой ОС 34, транслирует адрес страницы 50a в адрес страницы 50b в пространстве 118 виртуализированной физической памяти. Затем с применением SLAT, сконфигурированного гипервизором 30, физическим процессором 16 адрес страницы 50b ставится в соответствие с адресом страницы 50c в физической памяти 18.
[42] В области техники, к которой относится данное изобретение, виртуальное адресное пространство 118 обычно известно под названием "гостевая физическая память", а адрес в таком пространстве памяти называется гостевым физическим адресом (guest physical address, GPA). Адресное пространство 218 обычно называется гостевой виртуальной памятью и индексируется гостевыми виртуальными адресами (guest-virtual addresses, GVA). Адреса в физической памяти 18 обычно называются физическими адресами хоста (host-physical addresses, HPA). Поэтому трансляция/преобразование 52 адресов, показанное на фиг. 3, называется трансляцией из GVA в GPA. Напротив, трансляция 54 адресов обычно называется трансляцией из GPA в HPA.
[43] Трансляции 52, 54 адресов основаны на механизме разбиения памяти на страницы и использовании таблиц страниц. Таблицы страниц - это структуры данных, которые обычно хранят соответствие между страницами виртуальной и физической памяти в форме набора записей таблицы страниц. Формат записей таблицы страниц может отличаться в зависимости от аппаратной платформы и/или версии ОС. Пример записи 51 в таблице страниц приведен на фиг. 4. Каждая такая запись в таблице страниц может соответствовать странице виртуальной памяти, например, странице 50a в области 218 памяти на фиг. 3. В некоторых вариантах осуществления запись 51 в таблице страниц содержит ряд полей, в которых, помимо прочего, хранится адрес A и ряд флагов F. Адрес А обычно является физическим адресом; в аппаратных платформах виртуализации он может представлять собой GPA. В системе, реализующей иерархические таблицы страниц, адрес A может указывать адрес другой таблицы страниц. Содержимое полей флага варьируется в зависимости от реализации. В некоторых вариантах осуществления флаги представляют собой управляющие биты, показывающие, например, присутствует ли соответствующая страница в памяти (в отличие от выгруженной на диск), изменилось ли содержимое соответствующей страницы с момента ее последней замены, генерирует ли сбой попытка доступа к адресу на соответствующей странице (например, исключение VMexit или исключение виртуализации), доступна ли соответствующая страница для процесса, выполняющегося в пользовательском режиме, и т.д. Другие флаги/управляющие биты могут указывать на набор разрешений на доступ к памяти (например, чтение, запись, выполнение). Кроме того, в некоторых вариантах осуществления запись 51 в таблице страниц может хранить идентификатор соответствующего пространства памяти (например, идентификатор процесса) и/или различную статистическую информацию, используемую компонентами управления памятью операционной системы.
[44] В некоторых вариантах осуществления гипервизор 30 устанавливает свое собственное пространство 318 виртуальной памяти, содержащее представление физической памяти 18, и применяет механизм трансляции (например, таблицы страниц), чтобы адреса в пространстве 318 транслировать в адреса физической памяти 18. На фиг. 3 в результате такого примерного отображения адрес страницы 50а в виртуальном пространстве 318 транслируются в физический адрес страницы 50c, а адрес страницы 50d транслируется в физический адрес страницы 50e. Благодаря такой трансляции потенциально любой программный объект, выполняющийся на уровне привилегий процессора гипервизора 30, может управлять страницами памяти, относящимися к программным объектам, выполняющимся в различных ВМ, работающих в хост-системе 10. В частности, подсистема 40 самодиагностики памяти может перечислять, читать, записывать и управлять доступом к страницам/из страниц физической памяти, используемым процессом, выполняющимся в гостевой ВМ 32.
[45] На фиг. 5 показаны примерные компоненты фильтра 42 событий, выполненного в соответствии с некоторыми вариантами осуществления настоящего изобретения. В общем, фильтр 42 может представлять любой из фильтров 42a-b событий на фиг. 2. В некоторых вариантах осуществления фильтр 42 событий регистрируется процессором 12 как программный компонент, сконфигурированный для обработки исключений виртуализации для соответствующей гостевой ВМ. Эта регистрация означает, что, когда событие, происходящее во время выполнения гостевого процесса в соответствующей гостевой ВМ, вызывает исключение виртуализации, процессор 12 приостанавливает выполнение соответствующего гостевого процесса и переключается на выполнение фильтра 42. Фильтр 42 может включать в себя средство 46 контроля приемлемости и генератор 48 уведомлений, подключенный к средству 46 контроля приемлемости.
[46] В некоторых вариантах осуществления средство 46 контроля приемлемости сконфигурировано для фильтрации событий, вызвавших исключения виртуализации, для создания подмножества событий, считающихся событиями, указывающими на вредоносность, или релевантными для компьютерной безопасности по другим причинам. Примерные события, релевантные с точки зрения безопасности, например, могут включать попытку переписать поле записи в таблице страниц, попытку выполнить критический компонент ОС, например, функцию распределения памяти, попытку чтения, записи или выполнения кода в/из определенной области памяти и т.д. Генератор 48 уведомлений может быть сконфигурирован уведомлять подсистему 40 самодиагностики о наступлении выбранного подмножества событий, созданного средством 46 контроля приемлемости. Механизм уведомлений может использовать любой способ, известный в области аппаратной визуализации, такой как запуск события выхода из ВМ посредством привилегированной машинной команды, например, VMCALL. Генератор 48 уведомлений может передавать данные, например, подробности или параметры уведомленных событий, в подсистему 40 самодиагностики, например, посредством записи соответствующих данных в определенный раздел памяти, совместно используемый фильтром 42 и подсистемой 40.
[47] В некоторых вариантах осуществления фильтр 42 событий, кроме того, содержит эмулятор 47, сконфигурированный для имитации наступления события, вызвавшего исключение виртуализации. Эмуляция может потребоваться, поскольку исключения обычно срабатывают до того, как соответствующее событие вызовет изменения в памяти и/или состоянии процессора. В одном из примеров, когда исключения из виртуализации вызваны нарушениями разрешений на доступ к памяти, машинная команда, такая как MOV (memory-to-memory move instruction - команда пересылки данных из памяти в память), могущая привести к записи данных в ячейку, считающуюся недоступной для записи, создает исключение из виртуализации до того, как какие-либо данные будут записаны в соответствующую ячейку. Простой перезапуск соответствующего процесса/приложения приведет к попытке повторного выполнения проблемной команды, что, в свою очередь, вызовет новое исключение. Чтобы избежать этого бесконечного цикла, некоторые варианты осуществления используют эмулятор 47, чтобы имитировать возникновение соответствующего события перед перезапуском процесса/приложения, изначально вызвавшего исключение. В вышеприведенном примере эмулятор 47 может влиять на изменения, которые произошли бы в результате фактического выполнения команды MOV, то есть эмулятор 47 может фактически записывать данные в предназначенную для него ячейку памяти.
[48] На фиг. 6 показана примерная последовательность этапов, выполняемых для настройки компьютерной безопасности в хост-системе 10 в соответствии с некоторыми вариантами осуществления настоящего изобретения. В типичном сценарии системный администратор может установить приложение безопасности на каждом хосте, нуждающемся в защите. Приложение безопасности может содержать несколько компонентов, например, гипервизор 30, подсистему 40 самодиагностики, фильтр 42 событий и т.д. Показанная последовательность этапов может быть выполнена, например, инсталлятором соответствующего приложения безопасности. Сначала инсталлятор может взять под контроль процессор 12 на самом высоком уровне привилегий процессора (например, привилегированный режим, кольцо -1) и установить гипервизор 30. Затем инсталлятор может запустить подсистему 40 самодиагностики.
[49] В некоторых вариантах осуществления гипервизор 30 и/или подсистема 40 самодиагностики запускаются с использованием механизма безопасной загрузки или другой формы аутентификации, известной в данной области техники, чтобы обеспечить надежность соответствующих программных компонентов. Безопасная загрузка может включать в себя обмен аутентификацией (например, проверку хеша) с удаленным сервером аутентификации. В одном примерном варианте осуществления безопасная загрузка может использовать защищенный аппаратный компонент хост-системы 10, например, доверенный платформенный модуль (TPM, Trusted Platform Module) на платформах Intel®, и, кроме того, использовать механизм подтверждения целостности, такой как разработанная Intel® технология доверенного выполнения (TXT, Trusted Execution Technology).
[50] В ответ на запуск каждой гостевой ВМ на этапе 407 устанавливается фильтр 42 событий, сконфигурированный для обработки исключений виртуализации, возникающих в соответствующей ВМ. В некоторых вариантах осуществления фильтр 42 событий может быть скрытно сброшен в соответствующую гостевую ВМ, чтобы избежать обнаружения фильтра 42 потенциально вредоносным программным обеспечением. Для выполнения такого внедрения подсистема 40 самодиагностики может скрыть фильтр 42 в неиспользуемом разделе памяти или на странице памяти, используемой в настоящее время другим программным объектом, например, драйвером.
[51] В некоторых вариантах осуществления подсистема самодиагностики защищает фильтр 42 событий, изолируя фильтр 42 от других компонентов, выполняющихся в соответствующей ВМ. В одном примере подсистема 40 использует средство SLAT (second level address translation - трансляция адресов второго уровня), чтобы установить пространство теневой памяти, отличное от пространства памяти, используемого соответствующей гостевой ВМ (например, отличное от пространства 118 в варианте осуществления, показанном на фиг. 3). На практике установка такого пространства теневой памяти может включать в себя подсистема 40 самодиагностики, конфигурирующая таблицу страниц второго уровня (например, EPT на платформе Intel® (extended page table - расширенная таблица страниц), присвоенную фильтру 42 событий. Работа с отдельной таблицей страниц изолирует фильтр 42 от любых других процессов, выполняющихся внутри ВМ 32, в том смысле, что такие процессы не могут изменять данные, принадлежащие фильтру 42 событий. Кроме того, изоляция фильтра 42 может включать в себя конфигурирование процессора 12 для переключения, при выполнении фильтра 42, с использования таблицы страниц, связанной с ВМ 32, на использование таблицы теневых страниц, чтобы выполнить трансляцию адресов. Переключение таблиц страниц может происходить без выхода из гостевой ВМ 32, поэтому оно не несет с собой вычислительных затрат из-за события выхода из ВМ. Один пример, позволяющий достичь переключения таблицы страниц, включает в себя фильтр 42 событий, выдающий определенную привилегированную команду (например, VMFUNC на платформах Intel®), которая может быть интерпретирована процессором 12 как команда вызова подпрограммы переключателя.
[52] В последовательности этапов 408-410 подсистема 40 самодиагностики может приступить к идентификации набора страниц памяти, хранящих ресурсы, важные для безопасности соответствующей гостевой ВМ. Примеры таких ресурсов включают код, относящийся к функциям ОС, выполняющим такие операции, как выделение памяти, управление правами доступа к памяти и редактирование реестра, например, выбранные функции библиотек NTDLL.DLL и KERNEL32.DLL. В ОС Linux® функции, имеющие отношение к безопасности, могут включать в себя выбранные функции LIBC.SO. Другие ресурсы, считающиеся важными для безопасности, включают таблицу страниц, связанных с процессом, выполняющимся в гостевой ВМ.
[53] Адрес ячейки памяти некоторых ресурсов, таких как специфические функции ОС, может быть получен посредством анализа определенных структур данных ОС 34. Кроме того, подсистема 40 самодиагностики может отслеживать ряд процессов, в данный момент загруженных и/или выполняющихся в соответствующей гостевой ВМ. Некоторые варианты осуществления могут ожидать события, указывающие на запуск нового процесса/потока в гостевой ВМ, используя любой способ, известный в данной области техники. Некоторые примерные варианты осуществления перехватывают механизм ОС, управляющий перечнем активных процессов. Например, в Windows® каждый раз, когда создается процесс, в перечень активных процессов вставляется индикатор соответствующего процесса, а при завершении соответствующего процесса этот индикатор удаляется из перечня. В некоторых вариантах осуществления при запуске процесса ОС 34 также устанавливает специфичную для процесса структуру данных, известных под названием "блок операционного окружения процесса" (PEB - process environment block). Этот блок содержит данные, применяемые ОС 34 для управления ресурсами, связанными с соответствующим процессом. При перехвате команды ОС по вставке целевого процесса в перечень активных процессов подсистема 40 может получить дополнительную информацию, в частности адрес памяти соответствующего PEB. В системе Windows® виртуальный адрес PEB хранится в структуре данных, известной под названием "блок процесса" (EPROCESS - executive process block). При дальнейшем анализе таких структур данных подсистема 40 самодиагностики может получать такую информацию, как адрес ячеек памяти основного исполняемого файла и/или библиотек, загруженных соответствующим процессом, а также расположение в памяти таблицы страниц (например, базовый регистр каталогов страниц (Page Directory Base Register, PDBR) на платформах x86), связанной с соответствующим процессом.
[54] Адрес ячейки памяти записей таблицы страниц, соответствующих различным процессам, загруженным и/или выполняющимся в данный момент времени, может быть получен, например, посредством чтения содержимого управляющего регистра процессора 12 (например, регистра CR3 в платформах x86), и просмотра таблицы страниц. Альтернативный вариант осуществления может считывать адрес таблицы страниц, связанной с каждым процессом, из специфических полей соответствующих структур EPROCESS.
[55] Чтобы облегчить определение адреса ячейки памяти ресурсов, критически важных для безопасности, подсистема 40 самодиагностики может взаимодействовать с фильтром 42 или сбросить вспомогательный объект в соответствующую гостевую ВМ. Такие стратегии призваны преодолеть семантический разрыв. Как правило, раскрыть информацию о внутренней работе виртуальной машины гораздо сложнее из положения вне соответствующей ВМ, чем изнутри соответствующей ВМ. Компонент, например, фильтр 42 событий, выполняющийся внутри ВМ, может использовать средства ОС для получения информации, такой как адреса памяти различных ресурсов, а затем передавать такую информацию в подсистему 40 самодиагностики, используя механизм уведомлений, описанный в настоящем документе.
[56] В некоторых вариантах осуществления на этапе 410 (фиг. 6) подсистема 40 самодиагностики и/или фильтр 42 событий могут компоновать реестр защищенных областей памяти, включающий перечисление областей памяти, содержащих части защищенных ресурсов. Примерная запись реестра может содержать адрес памяти раздела (или идентификатор страницы памяти и смещение относительно границы страницы) и указатель размера соответствующего раздела. Адрес памяти может включать в себя GPA, HPA и т.д. Размер защищаемого раздела может быть меньше размера страницы. Кроме того, запись реестра может включать в себя индикатор типа ресурса, хранящегося в соответствующем разделе (например, драйвер, таблица страниц, личные данные и т.д.). Включение индикаторов типа ресурса в запись реестра может облегчить выполнение фильтра 42 событий, позволяя фильтру 42 избирательно применять критерии приемлемости событий в соответствии с типом защищаемого ресурса, например, для защиты таблиц страниц способом, отличающимся от защиты личных файлов пользователя. В некоторых вариантах реестр обновляется динамически: когда появляются новые ресурсы (например, посредством запуска нового процесса), разделы, хранящие части защищаемых ресурсов, идентифицируются и добавляются в реестр. Когда ресурсы больше не нуждаются в защите (например, когда процесс завершен), или когда соответствующие ресурсы перемещаются по другому адресу ячейки памяти, записи, соответствующие устаревшим разделам, могут быть удалены из реестра.
[57] В ответ на определение адреса ячейки памяти критичных для безопасности объектов этап 412 может устанавливать разрешения на доступ к защищенным областям памяти. Поскольку в большинстве современных вычислительных систем разрешения могут быть установлены только со страничной гранулярностью, этап 412 может включать в себя установку разрешений на доступ к страницам памяти, на которых размещены соответствующие области памяти. Это может быть сделано, например, с использованием механизма SLAT, настроенного гипервизором 30. Разрешения могут быть установлены, чтобы позволить фильтру 42 событий обнаруживать попытку доступа к защищенным областям памяти способом, считающимся неуместным или вредоносным. Чтобы предотвратить несанкционированное считывание данных из защищенного раздела (например, чтобы предотвратить кражу данных или атаку с помощью программы-вымогателя), примерный вариант осуществления может пометить страницу памяти, на которой размещены соответствующие данные, как нечитаемую. После этого попытка чтения данных с соответствующей страницы вызовет исключение/ошибку процессора, могущую служить индикатором такой попытки. Чтобы обнаружить попытку изменения записи в таблице страниц, страница памяти, на которой размещена соответствующая запись в таблице страниц, может быть помечена как недоступная для записи. Таким образом, любая попытка записи на соответствующую страницу памяти позволит обнаружить эту попытку. Аналогично, для обнаружения попытки выполнения определенной функции ОС некоторые варианты осуществления помечают страницу, содержащую код соответствующей функции, как неисполняемую.
[58] В некоторых вариантах осуществления на этапе 414 (фиг. 6) подсистема 40 самодиагностики может конфигурировать процессор 12 для запуска исключений виртуализации в ответ на нарушения таких разрешений доступа к памяти. Следующий этап 416 может зарегистрировать фильтр 42 событий в качестве обработчика исключений виртуализации, а обработчик 44 уведомлений - в качестве обработчика событий выхода из ВМ. В ответ на такие регистрации нарушение разрешений на доступ к памяти будет обрабатываться фильтром 42 событий, а не подсистемой 40 самодиагностики. В то же время события выхода из ВМ будут сообщены подсистеме 40 самодиагностики через обработчик 44 уведомлений.
[59] На фиг. 7 показана примерная последовательность этапов, выполняемых фильтром 42 событий в соответствии с некоторыми вариантами осуществления настоящего изобретения. Фильтр 42 событий, зарегистрированный в качестве обработчика исключений виртуализации, обнаруживает возникновение событий, вызывающих исключения виртуализации во время выполнения гостевого программного обеспечения. В настоящем документе такие события будут называться событиями-триггерами. В ответ на обнаружение события-триггера в последовательности этапов 436-438 фильтр 42 может определить тип соответствующего события-триггера, а также ряд параметров события. В некоторых вариантах осуществления индикатор причины текущего исключения виртуализации хранится в определенном поле VMSO соответствующей гостевой ВМ. Следовательно, информация о природе события может быть извлечена из определенных полей VMSO соответствующей гостевой ВМ. В примере, когда исключение было вызвано попыткой записи на страницу, помеченную как недоступную для записи, параметры события могут включать в себя адрес памяти попытки записи и значение, которое процессор пытался записать в соответствующую ячейку памяти.
[60] В некоторых вариантах осуществления фильтр 42 событий выборочно уведомляет подсистему 40 самодиагностики о возникновении подмножества событий-триггеров, считающихся релевантными для безопасности. События могут быть выбраны в соответствии с набором критериев приемлемости, и подсистеме 40 самодиагностики могут быть сообщены только те события, которые считаются приемлемыми. В ответ на обнаружение возникновения события-триггера, не считающегося приемлемым для сообщения подсистеме 40 самодиагностики, некоторые варианты осуществления используют эмулятор 47 для имитации обнаруженного события (этап 444 на фиг. 7). Затем фильтр 42 может дать процессору 12 сигнал о возобновлении выполнения гостевого программного обеспечения в соответствующей ВМ без запуска выхода из ВМ. Когда событие удовлетворяет критериям приемлемости, на этапе 442 некоторые варианты осуществления генерируют событие выхода из ВМ, тем самым уведомляя подсистему 40 самодиагностики о возникновении соответствующего события-триггера. Генерирование события выхода из ВМ, например, может включать в себя выдачу фильтром 42 привилегированной машинной команды, например, VMCALL на платформах Intel®. Чтобы передать параметры события в подсистему 40, некоторые варианты осуществления фильтра 42 событий записывают соответствующие параметры в область памяти, совместно используемую фильтром 42 и подсистемой 40 самодиагностики, прежде чем генерировать событие выхода из ВМ.
[61] На фиг. 8 и 9 показаны примерные последовательности этапов, выполняемых в соответствии с некоторыми вариантами осуществления настоящего изобретения средством 46 контроля приемлемости (фиг. 5) для определения того, является ли событие приемлемым для уведомления подсистемы 40 самодиагностики. Такие последовательности могут быть выполнены, как часть этапа 440 (фиг. 7). Обе фиг. 8 и 9 предполагают, что перехваченное событие-триггер содержит попытку доступа к памяти способом, нарушающим разрешение на доступ, например, попытку записи на страницу, помеченную как страница, недоступная для записи.
[62] На этапе 452 (фиг. 8) средство 46 контроля может идентифицировать страницу памяти, сгенерировавшую исключение, т.е. страницу памяти, к которой были осуществлена попытка доступа. В ответ средство 46 контроля может просмотреть список защищенных в данный момент времени областей памяти для определения того, включает ли целевая страница памяти защищенную область памяти, т.е. по меньшей мере, часть защищенного ресурса. Если на странице целевой памяти нет ни одного защищенного ресурса, на этапе 460 фильтр может определить, что текущее событие-триггер не требует уведомления подсистемы 40 самодиагностики. Если целевая страница памяти содержит часть защищенного ресурса, следующий этап 456 может определить, например, в соответствии с адресом попытки доступа, включает ли событие-триггер попытку фактического доступа к защищенной области памяти. Если нет, то событие-триггер не может быть признано приемлемым. Напротив, когда событие-триггер представляет собой попытку доступа к защищенной области памяти, средство 46 контроля может определить, что текущее событие-триггер подходит для уведомления.
[63] На фиг. 9 показана еще одна примерная последовательность этапов, выполняемых в соответствии с некоторыми вариантами осуществления настоящего изобретения средством 46 контроля приемлемости для определения того, является ли событие приемлемым для уведомления. Пример, показанный на фиг. 9, направлен на защиту таблиц страниц от вредоносных изменений. В некоторых вариантах осуществления примерные приемлемые события-триггеры заключают в себе попытку изменения значения флага/управляющего бита записи таблицы страниц в таблице страниц (например, битов, представляющих такие свойства, как присутствует/выгружена, чтение/запись, выполнение/запрет, пользователь/супервизор). Другие примерные приемлемые события-триггеры включают в себя попытку перезаписи поля физического адреса соответствующей записи в таблице страниц (поле A на фиг. 4). Такие действия часто указывают на то, что вредоносное программное обеспечение пытается перехватить выполнение соответствующего процесса, внедрить код в память соответствующего процесса и т.д.
[64] На фиг. 10 показана примерная последовательность этапов, выполняемых подсистемой 40 самодиагностики в соответствии с некоторыми вариантами осуществления данного изобретения. Подсистема 40 может ожидать от фильтра 42 уведомление, указывающее на возникновение в соответствующей гостевой ВМ события-триггера определенного типа, считающегося приемлемым для уведомления фильтром 42 событий. В ответ на уведомление на этапе 486 подсистема 40 может проанализировать соответствующее событие для определения того, указывает ли оно на угрозу компьютерной безопасности. Такой анализ может использовать любой способ, известный в данной области техники, например, различные эвристические методы и деревья решений, методы корреляции событий, алгоритмы машинного обучения и т.д. На этапе 486 подсистема 40 самодиагностики может использовать параметры события, передаваемые фильтром 42 событий, и/или выполнить собственную экспертизу, чтобы раскрыть дополнительную информацию о текущем событии-триггере или в целом о программном обеспечении, выполняемом в настоящее время в соответствующей гостевой ВМ. В одном примерном анализе, при котором уведомленное событие содержит попытку перезаписи управляющего бита записи таблицы страниц в таблице страниц, на этапе 486 подсистема 40 может определить, была ли соответствующая попытка выполнена ОС в качестве законной манипуляции для управления памятью, или же она была осуществлена другим программным объектом, и в этом случае попытка может считаться указывающей на вредоносность.
[65] Если анализ на этапе 486 определяет, что соответствующее событие-триггер не указывает на угрозу безопасности, в некоторых вариантах осуществления подсистема 40 самодиагностики может эмулировать соответствующее событие-триггер и дать процессору 12 команду на возобновление выполнения соответствующей гостевой ВМ. Если событие указывает на угрозу, подсистема 40 может предпринять защитное действие, чтобы уменьшить угрозу (например, выполнить операцию очистки, чтобы удалить или иным образом отключить вредоносный объект, выполняющийся в соответствующей гостевой ВМ, уведомить пользователя хост-системы 10 и т.д.).
[66] Системы и способы, описанные выше в качестве примера, позволяют хост-системе, например, компьютеру или смартфону, эффективно выполнять задачи компьютерной безопасности при работе в конфигурации аппаратной виртуализации. Хост-система сконфигурирована для выполнения операционной системы и набора программных приложений в гостевой виртуальной машине. В некоторых вариантах осуществления приложение безопасности содержит по меньшей мере два компонента: фильтр событий, выполняющийся в соответствующей виртуальной машине, и подсистема самодиагностики, выполняющаяся вне соответствующей виртуальной машины, например, на уровне гипервизора или в отдельной виртуальной машине. Процессор может быть сконфигурирован генерировать исключение виртуализации в ответ на обнаружение попытки доступа к памяти способом, нарушающим разрешение на доступ. Некоторые варианты осуществления регистрируют компонент фильтра событий в качестве обработчика исключений из виртуализации.
[67] Компьютерная безопасность обеспечивается установкой разрешений на доступ к областям памяти, в которых хранятся данные, принадлежащие защищенным объектам. Попытка получить доступ к любой из защищенных областей памяти таким образом, который нарушает соответствующие разрешения на доступ, вызывает исключение виртуализации, и поэтому обнаруживается фильтром событий. В некоторых вариантах осуществления фильтр событий фильтрует обнаруженные попытки доступа к памяти в соответствии с критериями приемлемости, чтобы выбрать подмножество попыток доступа, считающихся подозрительными или указывающими на вредоносность. Примерные приемлемые события могут заключать в себе, например, попытку перезаписи записи в таблице страниц, используемой для выполнения трансляции адресов памяти для процесса, выполняющегося внутри виртуальной машины. О событиях, считающимися приемлемыми, уведомляется подсистема самодиагностики, выполняющаяся вне защищенной виртуальной машины, например, с помощью гипервызовов. Подсистема самодиагностики может анализировать уведомленные события для определения того, указывают ли они на вредоносную атаку.
[68] В общем, компоненты программного обеспечения, выполняющиеся вне виртуальной машины, намного меньше уязвимы для вредоносного программного обеспечения, чем компоненты, выполняющиеся внутри соответствующей виртуальной машины. Следовательно, с точки зрения безопасности, может быть предпочтительным, размещать важные компоненты безопасности вне защищенной виртуальной машины. Однако передача данных и/или сигнализация о возникновении события, связанного с безопасностью, компоненту, выполняющемуся вне соответствующей ВМ, обычно требует выхода из ВМ, что сравнительно затратно с точки зрения вычислительных ресурсов.
[69] Обычное программное обеспечение компьютерной безопасности, как правило, размещается либо полностью внутри, либо полностью вне защищенной виртуальной машины. В отличие от таких систем, некоторые варианты осуществления настоящего изобретения содержат гибридную конфигурацию, в которой один компонент (фильтр событий) выполняется внутри, тогда как другой компонент (подсистема самодиагностики) выполняется вне защищенной виртуальной машины. Обнаружение события выполняется внутренним компонентом, тогда как основная часть анализа перехваченного события выполняется внешним компонентом. Такие конфигурации могут обеспечить баланс между безопасностью и скоростью, улучшая тем самым взаимодействие с пользователем без ущерба для безопасности. Чтобы еще больше повысить безопасность, некоторые варианты осуществления минимизируют объем и сложность внутреннего компонента. В предпочтительном варианте осуществления фильтр событий действует только как фильтр для выбора подмножества событий для уведомления подсистемы самодиагностики. Такой легкий компонент может быть сравнительно легко внедрен в защищенную ВМ без знания операционной системы или вредоносного программного обеспечения, выполняющегося внутри виртуальной машины. Затем более сложный анализ события может быть выполнен внешним компонентом, т.е. подсистемой самодиагностики.
[70] Некоторые варианты осуществления настоящего изобретения основаны на наблюдении, что не все события, обнаруженные во время выполнения гостевого программного обеспечения, оправдывают затраты на выход из ВМ. Например, поскольку разрешения на доступ к памяти могут быть установлены только со страничной гранулярностью, защита элемента, занимающего только часть страницы памяти, может непреднамеренно вызвать большое количество нарушений прав доступа в результате законных попыток доступа к другим элементам, размещенным на той же странице памяти. В другом примере подозрительными являются не все модификации таблицы страниц, операционная система часто вносит изменения в управляющие биты и адреса в рамках законных действий по управлению памятью. Из-за уведомления программного обеспечения безопасности о допустимых событиях неоправданно расходуются вычислительные ресурсы.
[71] Поэтому некоторые варианты осуществления используют механизм исключений виртуализации в качестве фильтра, позволяющего избежать ненужных выходов из ВМ. Этот фильтр работает с определенными критериями приемлемости для определения того, следует ли уведомлять событие вне ВМ, или нет. Например, фильтр событий, выполняющийся в защищенной виртуальной машине, может анализировать каждое обнаруженное нарушение доступа к памяти и определять, действительно ли оно вызвано попыткой доступа к защищенному элементу, в отличие от попытки доступа к другим данным, хранящимся на той же странице. При попытке защитить таблицы страниц фильтр событий может проверить, нацелена ли попытка модификации на конкретные элементы, например, на определенный управляющий бит. Затем фильтр может передавать в подсистему самодиагностики только приемлемые события.
[72] Применение некоторых вариантов осуществления настоящего изобретения может выходить далеко за рамки компьютерной безопасности. Избегая значительной части событий выхода из ВМ, фильтр событий в целом может ускорить работу платформ аппаратной виртуализации. Критерии выбора того, какие события, происходящие внутри ВМ, обрабатываются внутри (или игнорируются), а какие события уведомляются вне ВМ, могут быть настроены для достижения требуемой оптимизации.
[73] Специалист в данной области поймет, что, не выходя из объема настоящего изобретения, вышеприведенные варианты осуществления можно изменить во многих отношениях. Соответственно, объем изобретения должен определяться следующей формулой изобретения и ее юридическими эквивалентами.
Claims (59)
1. Хост-система, содержащая аппаратный процессор и память, причем аппаратный процессор сконфигурирован выполнять виртуальную машину (ВМ), фильтр событий и подсистему самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ, причем аппаратный процессор дополнительно сконфигурирован:
генерировать первое исключение в ответ на обнаружение попытки программного объекта, выполняющегося внутри ВМ, получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти;
в ответ на первое исключение, переключаться с выполнения программного объекта на выполнение фильтра событий; и
в ответ на второе исключение, переключаться с выполнения фильтра событий на выполнение подсистемы самодиагностики,
причем фильтр событий сконфигурирован:
в ответ на первое исключение, определять в соответствии с критерием приемлемости события, является ли попытка приемлемой для уведомления подсистемы самодиагностики;
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, побуждать процессор генерировать второе исключение; и
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка не является приемлемой, предотвращать генерацию процессором второго исключения и вместо этого принуждать процессор возобновить выполнение программного объекта,
причем подсистема самодиагностики сконфигурирована определять, является ли попытка вредоносной.
2. Хост-система по п. 1, в которой определение того, является ли попытка приемлемой для уведомления, включает в себя:
определение того, хранится ли в разделе страницы памяти часть защищенного объекта, причем упомянутый раздел обозначен посредством адреса ячейки памяти;
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе хранится часть защищенного объекта, определение того, что попытка является приемлемой; и
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе не хранится часть защищенного объекта, определение того, что попытка не является приемлемой.
3. Хост-система по п. 2, в которой на странице памяти дополнительно хранится часть незащищенного объекта.
4. Хост-система по п. 2, в которой защищенный объект содержит таблицу страниц, используемую аппаратным процессором для выполнения трансляций адресов памяти для ВМ.
5. Хост-система по п. 3, в которой определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать значение управляющего бита записи таблицы страниц в упомянутой таблице страниц.
6. Хост-система по п. 3, в которой определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать содержимое поля адреса записи таблицы страниц в указанной таблице страниц.
7. Хост-система по п. 1, в которой определение того, является ли попытка вредоносной, включает в себя:
использование подсистемы самодиагностики для определения того, была ли попытка предпринята компонентом операционной системы, выполнявшимся внутри виртуальной машины; и
в ответ, если попытка были предпринята компонентом операционной системы, определение того, что попытка не является вредоносной.
8. Способ защиты хост-системы от угроз компьютерной безопасности, причем хост-система содержит аппаратный процессор и память, при этом аппаратный процессор сконфигурирован выполнять виртуальную машину (ВМ), фильтр событий и подсистему самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ, при этом способ включает:
конфигурирование аппаратного процессора так, чтобы генерировать первое исключение в ответ на обнаружение попытки выполняющегося внутри ВМ программного объекта получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти;
конфигурирование аппаратного процессора так, чтобы переключаться, в ответ на первое исключение, с выполнения программного объекта на выполнение фильтра событий;
конфигурирование аппаратного процессора так, чтобы переключаться, в ответ на второе исключение, с выполнения фильтра событий на выполнение подсистемы самодиагностики;
в ответ на первое исключение, использование фильтра для определения, в соответствии с критерием приемлемости события, является ли попытка приемлемой для уведомления подсистемы самодиагностики;
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, принуждение процессора генерировать второе исключение;
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка не является приемлемой, предотвращение генерации процессором второго исключения и вместо этого принуждение процессора возобновить выполнение программного объекта; и
в ответ на второе исключение, использование подсистемы самодиагностики для определения того, является ли попытка вредоносной.
9. Способ по п. 8, согласно которому определение того, является ли попытка приемлемой для уведомления, включает в себя:
определение того, хранится ли в разделе страницы памяти, обозначенном посредством адреса ячейки памяти, часть защищенного объекта;
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе хранится часть защищенного объекта, определение того, что попытка является приемлемой; и
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе часть защищенного объекта не хранится, определение того, что попытка не является приемлемой.
10. Способ по п. 9, согласно которому на странице памяти дополнительно хранится часть незащищенного объекта.
11. Способ по п. 9, согласно которому защищенный объект содержит таблицу страниц, используемую аппаратным процессором для выполнения трансляции адресов памяти для ВМ.
12. Способ по п. 11, согласно которому определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать значение управляющего бита записи таблицы страниц в указанной таблице страниц.
13. Способ по п. 11, согласно которому определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать содержимое поля адреса записи таблицы страниц в указанной таблице страниц.
14. Способ по п. 8, согласно которому определение того, является ли попытка вредоносной, включает в себя:
использование подсистемы самодиагностики для определения того, была ли попытка предпринята компонентом операционной системы, выполнявшимся внутри виртуальной машины; и
в ответ, если попытка были предпринята компонентом операционной системы, определение, что попытка не является вредоносной.
15. Долговременный машиночитаемый носитель, хранящий команды, которые при выполнении их аппаратным процессором хост-системы, предоставляющей виртуальную машину, побуждают хост-систему формировать фильтр событий и подсистему самодиагностики, причем фильтр событий выполняется внутри ВМ, а подсистема самодиагностики выполняется вне ВМ, причем подсистема самодиагностики сконфигурирована:
конфигурировать аппаратный процессор так, чтобы генерировать первое исключение в ответ на обнаружение попытки программного объекта, выполняющегося внутри ВМ, получить доступ к ячейке памяти способом, который нарушает разрешение на доступ к памяти;
конфигурировать аппаратный процессор так, чтобы переключаться, в ответ на первое исключение, с выполнения программного объекта на выполнение фильтра событий;
конфигурировать аппаратный процессор так, чтобы переключаться, в ответ на второе исключение, с выполнения фильтра событий на выполнение подсистемы самодиагностики; и
в ответ на второе исключение, определять, является ли попытка вредоносной,
и причем фильтр событий сконфигурирован:
в ответ на первое исключение, определять в соответствии с критерием приемлемости события, является ли попытка приемлемой для уведомления подсистемы самодиагностики;
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка является приемлемой, побуждать процессор генерировать второе исключение; и
в ответ на определение, является ли попытка приемлемой для уведомления, в случае если попытка не является приемлемой, предотвращать генерирование процессором второго исключения и вместо этого принуждать процессор возобновить выполнение программного объекта.
16. Машиночитаемый носитель по п. 15, причем определение того, является ли попытка приемлемой для уведомления, включает в себя:
определение того, хранится ли в разделе страницы памяти, обозначенном посредством адреса ячейки памяти, часть защищенного объекта;
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе хранится часть защищенного объекта, определение того, что попытка является приемлемой; и
в ответ на определение, хранится ли в указанном разделе часть защищенного объекта, в случае если в указанном разделе часть защищенного объекта не хранится, определение того, что попытка не является приемлемой.
17. Машиночитаемый носитель по п. 16, причем на странице памяти дополнительно хранится часть незащищенного объекта.
18. Машиночитаемый носитель по п. 16, причем защищенный объект содержит таблицу страниц, используемую аппаратным процессором для выполнения трансляции адресов памяти для ВМ.
19. Машиночитаемый носитель по п. 18, причем определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать значение управляющего бита записи таблицы страниц в указанной таблице страниц.
20. Машиночитаемый носитель по п. 18, причем определение того, является ли попытка приемлемой для уведомления, дополнительно включает в себя определение, включает ли указанная попытка попытку переписать содержимое поля адреса записи таблицы страниц в указанной таблице страниц.
21. Машиночитаемый носитель по п. 15, причем определение того, является ли попытка вредоносной, содержит:
использование подсистемы самодиагностики для определения того, была ли попытка предпринята компонентом операционной системы, выполнявшимся внутри виртуальной машины; и
в ответ, если попытка была предпринята компонентом операционной системы, определение, что попытка не является вредоносной.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662436027P | 2016-12-19 | 2016-12-19 | |
US62/436,027 | 2016-12-19 | ||
US15/845,060 US10635479B2 (en) | 2016-12-19 | 2017-12-18 | Event filtering for virtual machine security applications |
US15/845,060 | 2017-12-18 | ||
PCT/EP2017/083579 WO2018114970A1 (en) | 2016-12-19 | 2017-12-19 | Event filtering for virtual machine security applications |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2723668C1 true RU2723668C1 (ru) | 2020-06-17 |
Family
ID=62556303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2019114975A RU2723668C1 (ru) | 2016-12-19 | 2017-12-19 | Фильтрация событий для приложений безопасности виртуальных машин |
Country Status (12)
Country | Link |
---|---|
US (1) | US10635479B2 (ru) |
EP (1) | EP3516571B1 (ru) |
JP (1) | JP7036821B2 (ru) |
KR (1) | KR102189296B1 (ru) |
CN (1) | CN109923546B (ru) |
AU (1) | AU2017384437B2 (ru) |
CA (1) | CA3037801A1 (ru) |
ES (1) | ES2925891T3 (ru) |
IL (1) | IL267289B (ru) |
RU (1) | RU2723668C1 (ru) |
SG (1) | SG10201913258XA (ru) |
WO (1) | WO2018114970A1 (ru) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11089064B1 (en) | 2016-09-12 | 2021-08-10 | Skyhigh Networks, Llc | Cloud security policy enforcement for custom web applications |
US10936353B2 (en) * | 2017-05-16 | 2021-03-02 | Dell Products L.P. | Systems and methods for hypervisor-assisted hardware accelerator offloads in a virtualized information handling system environment |
US10754796B2 (en) | 2018-08-29 | 2020-08-25 | Red Hat, Inc. | Efficient user space driver isolation by CPU page table switching |
US10983926B2 (en) | 2018-08-29 | 2021-04-20 | Red Hat, Inc. | Efficient userspace driver isolation for virtual machines |
FR3100901B1 (fr) * | 2019-09-12 | 2021-08-27 | Stmicroelectronics Grand Ouest Sas | Système de protection de la mémoire |
DE102019214541A1 (de) * | 2019-09-24 | 2021-03-25 | Siemens Aktiengesellschaft | Rechenvorrichtung und Verfahren zum Erkennen einer Bedrohung in einer virtuellen Einheit |
CN112199678B (zh) * | 2020-09-25 | 2024-04-09 | 杭州安恒信息技术股份有限公司 | 一种在线取证的方法、装置、计算机设备和可读存储介质 |
EP4229785A4 (en) * | 2020-10-13 | 2024-08-28 | Bedrock Systems Inc | FORMALLY VERIFIED SECURE COMPUTER BASE WITH ACTIVE POLICY AND SECURITY APPLICATION |
CN112199158B (zh) * | 2020-10-16 | 2021-11-23 | 常熟理工学院 | 虚拟机保护的解释例程识别方法、装置、设备及存储介质 |
US11934857B2 (en) * | 2021-03-16 | 2024-03-19 | Vmware, Inc. | Supporting execution of a computer program by using a memory page of another computer program |
US20230038466A1 (en) * | 2021-08-09 | 2023-02-09 | Surendra Kumar Tulsyan | Single method for blocking access threats using virtualization technology in client-server applications |
US12020059B2 (en) * | 2021-08-30 | 2024-06-25 | International Business Machines Corporation | Inaccessible prefix pages during virtual machine execution |
KR20230065526A (ko) * | 2021-11-05 | 2023-05-12 | 삼성전자주식회사 | 메모리 관리 시스템 및 메모리 관리 방법 |
KR20240146447A (ko) * | 2023-03-29 | 2024-10-08 | 주식회사 아도스 | 이중 영역 가상화를 통한 클라이언트 기반 웹 격리 시스템 및 방법 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115652A1 (en) * | 2012-10-19 | 2014-04-24 | Aditya Kapoor | Real-Time Module Protection |
RU2541895C2 (ru) * | 2012-12-25 | 2015-02-20 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ повышения защищенности данных организации путем создания изолированной среды |
US20150121135A1 (en) * | 2013-10-31 | 2015-04-30 | Assured Information Security, Inc. | Virtual machine introspection facilities |
US20150199514A1 (en) * | 2014-01-10 | 2015-07-16 | Bitdefender IPR Management Ltd. | Computer Security Systems And Methods Using Virtualization Exceptions |
US20160048679A1 (en) * | 2014-08-18 | 2016-02-18 | Bitdefender IPR Management Ltd. | Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5075845A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Type management and control in an object oriented memory protection mechanism |
US7124327B2 (en) * | 2002-06-29 | 2006-10-17 | Intel Corporation | Control over faults occurring during the operation of guest software in the virtual-machine architecture |
US7552426B2 (en) | 2003-10-14 | 2009-06-23 | Microsoft Corporation | Systems and methods for using synthetic instructions in a virtual machine |
US20050138256A1 (en) * | 2003-12-23 | 2005-06-23 | Bolay Frederick H. | Method and apparatus for processing hot key input using operating system visible interrupt handling |
US9390031B2 (en) * | 2005-12-30 | 2016-07-12 | Intel Corporation | Page coloring to associate memory pages with programs |
US7797747B1 (en) * | 2006-02-21 | 2010-09-14 | Symantec Corporation | Detection of malicious code in non-paged pool unused pages |
US9015704B2 (en) * | 2008-03-24 | 2015-04-21 | International Business Machines Corporation | Context agent injection using virtual machine introspection |
US8225317B1 (en) | 2009-04-17 | 2012-07-17 | Symantec Corporation | Insertion and invocation of virtual appliance agents through exception handling regions of virtual machines |
WO2012039726A1 (en) * | 2009-11-04 | 2012-03-29 | Georgia Tech Research Corporation | Systems and methods for secure in-vm monitoring |
US8489789B2 (en) * | 2010-02-05 | 2013-07-16 | Advanced Micro Devices, Inc. | Interrupt virtualization |
US8966623B2 (en) | 2010-03-08 | 2015-02-24 | Vmware, Inc. | Managing execution of a running-page in a virtual machine |
US8949797B2 (en) * | 2010-04-16 | 2015-02-03 | International Business Machines Corporation | Optimizing performance of integrity monitoring |
US20120254993A1 (en) | 2011-03-28 | 2012-10-04 | Mcafee, Inc. | System and method for virtual machine monitor based anti-malware security |
US8863283B2 (en) * | 2011-03-31 | 2014-10-14 | Mcafee, Inc. | System and method for securing access to system calls |
US9298910B2 (en) | 2011-06-08 | 2016-03-29 | Mcafee, Inc. | System and method for virtual partition monitoring |
US9311126B2 (en) | 2011-07-27 | 2016-04-12 | Mcafee, Inc. | System and method for virtual partition monitoring |
CN102523215B (zh) * | 2011-12-15 | 2014-10-01 | 北京海云捷迅科技有限公司 | 基于kvm虚拟化平台的虚拟机在线杀毒系统 |
US9405570B2 (en) * | 2011-12-30 | 2016-08-02 | Intel Corporation | Low latency virtual machine page table management |
WO2013134206A1 (en) * | 2012-03-05 | 2013-09-12 | The Board Of Regents, The University Of Texas System | Automatically bridging the semantic gap in machine introspection |
US9311248B2 (en) * | 2012-05-07 | 2016-04-12 | Raytheon Cyber Products, Llc | Methods and apparatuses for monitoring activities of virtual machines |
US9424199B2 (en) * | 2012-08-29 | 2016-08-23 | Advanced Micro Devices, Inc. | Virtual input/output memory management unit within a guest virtual machine |
US9037873B2 (en) * | 2013-01-30 | 2015-05-19 | Vmware, Inc. | Method and system for preventing tampering with software agent in a virtual machine |
US8875295B2 (en) * | 2013-02-22 | 2014-10-28 | Bitdefender IPR Management Ltd. | Memory introspection engine for integrity protection of virtual machines |
US9117080B2 (en) * | 2013-07-05 | 2015-08-25 | Bitdefender IPR Management Ltd. | Process evaluation for malware detection in virtual machines |
US9015374B2 (en) * | 2013-07-09 | 2015-04-21 | Advanced Micro Devices, Inc. | Virtual interrupt filter |
US9507727B2 (en) * | 2013-07-17 | 2016-11-29 | Bitdefender IPR Management Ltd. | Page fault injection in virtual machines |
US9323931B2 (en) * | 2013-10-04 | 2016-04-26 | Bitdefender IPR Management Ltd. | Complex scoring for malware detection |
US9563455B2 (en) | 2013-10-28 | 2017-02-07 | Intel Corporation | Virtualization exceptions |
EP3123390A4 (en) * | 2014-03-27 | 2017-10-25 | Barkly Protects, Inc. | Malicious software identification integrating behavioral analytics and hardware events |
US9703726B2 (en) * | 2014-06-24 | 2017-07-11 | Bitdefender IPR Management Ltd. | Systems and methods for dynamically protecting a stack from below the operating system |
US9454676B2 (en) | 2014-06-27 | 2016-09-27 | Intel Corporation | Technologies for preventing hook-skipping attacks using processor virtualization features |
US20150379265A1 (en) * | 2014-06-30 | 2015-12-31 | Bitdefender IPR Management Ltd. | Systems And Methods For Preventing Code Injection In Virtualized Environments |
US9335943B2 (en) * | 2014-06-30 | 2016-05-10 | Intel Corporation | Method and apparatus for fine grain memory protection |
US9356945B2 (en) | 2014-07-17 | 2016-05-31 | Check Point Advanced Threat Prevention Ltd | Automatic content inspection system for exploit detection |
US9703720B2 (en) | 2014-12-23 | 2017-07-11 | Intel Corporation | Method and apparatus to allow secure guest access to extended page tables |
US9965313B2 (en) | 2016-01-05 | 2018-05-08 | Bitdefender IPR Management Ltd. | Systems and methods for auditing a virtual machine |
US10515023B2 (en) * | 2016-02-29 | 2019-12-24 | Intel Corporation | System for address mapping and translation protection |
US10248785B2 (en) * | 2016-02-29 | 2019-04-02 | Red Hat Israel, Ltd. | Application memory protection using a host page table switching virtual machine function |
US10120738B2 (en) * | 2016-06-24 | 2018-11-06 | Vmware, Inc. | Hypervisor techniques for performing non-faulting reads in virtual machines |
US9965375B2 (en) * | 2016-06-28 | 2018-05-08 | Intel Corporation | Virtualizing precise event based sampling |
US10664181B2 (en) * | 2017-11-14 | 2020-05-26 | International Business Machines Corporation | Protecting in-memory configuration state registers |
-
2017
- 2017-12-18 US US15/845,060 patent/US10635479B2/en active Active
- 2017-12-19 ES ES17825203T patent/ES2925891T3/es active Active
- 2017-12-19 CA CA3037801A patent/CA3037801A1/en active Pending
- 2017-12-19 CN CN201780069409.0A patent/CN109923546B/zh active Active
- 2017-12-19 RU RU2019114975A patent/RU2723668C1/ru active
- 2017-12-19 EP EP17825203.7A patent/EP3516571B1/en active Active
- 2017-12-19 SG SG10201913258XA patent/SG10201913258XA/en unknown
- 2017-12-19 WO PCT/EP2017/083579 patent/WO2018114970A1/en unknown
- 2017-12-19 JP JP2019527801A patent/JP7036821B2/ja active Active
- 2017-12-19 AU AU2017384437A patent/AU2017384437B2/en active Active
- 2017-12-19 KR KR1020197013274A patent/KR102189296B1/ko active IP Right Grant
-
2019
- 2019-06-12 IL IL267289A patent/IL267289B/en unknown
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140115652A1 (en) * | 2012-10-19 | 2014-04-24 | Aditya Kapoor | Real-Time Module Protection |
RU2541895C2 (ru) * | 2012-12-25 | 2015-02-20 | Закрытое акционерное общество "Лаборатория Касперского" | Система и способ повышения защищенности данных организации путем создания изолированной среды |
US20150121135A1 (en) * | 2013-10-31 | 2015-04-30 | Assured Information Security, Inc. | Virtual machine introspection facilities |
US20150199514A1 (en) * | 2014-01-10 | 2015-07-16 | Bitdefender IPR Management Ltd. | Computer Security Systems And Methods Using Virtualization Exceptions |
US20160048679A1 (en) * | 2014-08-18 | 2016-02-18 | Bitdefender IPR Management Ltd. | Systems And Methods for Exposing A Current Processor Instruction Upon Exiting A Virtual Machine |
Also Published As
Publication number | Publication date |
---|---|
IL267289B (en) | 2021-07-29 |
KR20190096959A (ko) | 2019-08-20 |
CA3037801A1 (en) | 2018-06-28 |
IL267289A (en) | 2019-08-29 |
WO2018114970A1 (en) | 2018-06-28 |
KR102189296B1 (ko) | 2020-12-14 |
ES2925891T3 (es) | 2022-10-20 |
AU2017384437A1 (en) | 2019-04-11 |
EP3516571A1 (en) | 2019-07-31 |
SG10201913258XA (en) | 2020-02-27 |
CN109923546B (zh) | 2023-04-07 |
AU2017384437B2 (en) | 2022-01-13 |
JP7036821B2 (ja) | 2022-03-15 |
EP3516571B1 (en) | 2022-06-01 |
US10635479B2 (en) | 2020-04-28 |
US20180173555A1 (en) | 2018-06-21 |
JP2020502638A (ja) | 2020-01-23 |
CN109923546A (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2723668C1 (ru) | Фильтрация событий для приложений безопасности виртуальных машин | |
US9400885B2 (en) | Computer security systems and methods using virtualization exceptions | |
KR101946982B1 (ko) | 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가 | |
US8694738B2 (en) | System and method for critical address space protection in a hypervisor environment | |
KR102255767B1 (ko) | 가상 머신 감사를 위한 시스템 및 방법들 | |
US8341627B2 (en) | Method and system for providing user space address protection from writable memory area in a virtual environment | |
KR101955189B1 (ko) | 스왑 아웃된 메모리 페이지의 가상 머신 가상화된 메모리로의 맵핑을 위한 가상 머신에서의 페이지 오류 삽입 | |
US10296470B2 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
US20160210069A1 (en) | Systems and Methods For Overriding Memory Access Permissions In A Virtual Machine | |
CN109074321B (zh) | 用于保护虚拟计算实例的存储器的方法和系统 | |
Deng et al. | Dancing with wolves: Towards practical event-driven vmm monitoring | |
Ding et al. | HyperVerify: A VM-assisted architecture for monitoring hypervisor non-control data | |
Zhu et al. | HA-VMSI: A lightweight virtual machine isolation approach with commodity hardware for ARM | |
Luțaș et al. | U-HIPE: hypervisor-based protection of user-mode processes in Windows | |
Suzaki et al. | Kernel memory protection by an insertable hypervisor which has VM introspection and stealth breakpoints | |
Chen et al. | DScope: To Reliably and Securely Acquire Live Data from Kernel-Compromised ARM Devices | |
Zhu et al. | HypFDI: Fault Domain Isolation for Hosted Hypervisor in ARM | |
Iinuma | GUESTGUARD: DYNAMIC KERNEL TAMPERING PROTECTION USING A PROCESSOR ASSISTED VIRTUAL MACHINE | |
Fang et al. | TRIOB: A Trusted Virtual Computing Environment Based on Remote I/O Binding Mechanism | |
Silakov | Using Hardware-Assisted Virtualization to Protect Application Address Space Inside Untrusted Environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PD4A | Correction of name of patent owner |