RU2640300C2 - Движок интроспекции памяти для защиты целостности виртуальных машин - Google Patents

Движок интроспекции памяти для защиты целостности виртуальных машин Download PDF

Info

Publication number
RU2640300C2
RU2640300C2 RU2015135541A RU2015135541A RU2640300C2 RU 2640300 C2 RU2640300 C2 RU 2640300C2 RU 2015135541 A RU2015135541 A RU 2015135541A RU 2015135541 A RU2015135541 A RU 2015135541A RU 2640300 C2 RU2640300 C2 RU 2640300C2
Authority
RU
Russia
Prior art keywords
memory
target program
program object
page
host system
Prior art date
Application number
RU2015135541A
Other languages
English (en)
Other versions
RU2015135541A (ru
Inventor
Андрей-Влад ЛУЦАС
Сандор ЛУКАКС
Дан-Хоря ЛУЦАС
Original Assignee
БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД filed Critical БИТДЕФЕНДЕР АйПиАр МЕНЕДЖМЕНТ ЛТД
Publication of RU2015135541A publication Critical patent/RU2015135541A/ru
Application granted granted Critical
Publication of RU2640300C2 publication Critical patent/RU2640300C2/ru

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

УРОВЕНЬ ТЕХНИКИ
[0001] Изобретение относится к системам и способам защиты компьютерных систем от вредоносных программ и, в частности, к антивредоносным системам, использующим технологию аппаратной виртуализации.
[0002] Вредоносное программное обеспечение, также известное как вредоносные программы, воздействует на большое количество компьютерных систем по всему миру. В своих многочисленных формах, таких как компьютерные вирусы, черви и руткиты, вредоносные программы представляют собой серьезную опасность для миллионов пользователей компьютеров, что делает их уязвимыми, среди прочего, к потере данных и конфиденциальной информации, краже идентификационных данных и потере производительности.
[0003] Технология аппаратной виртуализации позволяет создавать имитационные компьютерные среды, обычно известные как виртуальные машины, которые ведут себя во многих случаях как физические компьютерные системы. В типичных приложениях, таких как консолидация серверов и инфраструктура-как-услуга (IAAS), несколько виртуальных машин могут работать одновременно на одном и том же физическом компьютере, разделяя аппаратные ресурсы между ними, что, таким образом, уменьшает инвестиционные и эксплуатационные затраты. Каждая виртуальная машина может работать в ее собственной операционной системе и/или программных приложениях отдельно от других виртуальных машин. Вследствие устойчивого распространения вредоносных программ, каждая виртуальная машина, работающая в такой среде, потенциально требует защиты от вредоносных программ.
[0004] Техническое решение по виртуализации, обычно используемое в данной области техники, включает в себя гипервизор, известный также как монитор виртуальных машин, содержащий слой программного обеспечения, выполняющийся между вычислительным аппаратным обеспечением и операционной системой (OS) виртуальной машины, и имеющий больше привилегий процессора, чем соответствующая OS. Антивредоносные операции могут осуществляться на уровне привилегий гипервизора. Хотя такие конфигурации могут облегчить обнаружение и предотвращение вредоносных программ, они вносят дополнительный уровень сложности и могут приводить к значительным вычислительным затратам.
[0005] Существует значительный интерес в развитии технических решений по противодействию вредоносным программам для платформ аппаратной виртуализации, которые надежны и масштабируемы с минимальными вычислительными расходами.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
[0006] Согласно одному аспекту хост-система содержит по меньшей мере один процессор, конфигурированный с возможностью выполнять операционную систему и модуль подготовки защиты. Операционная система конфигурирована с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. Виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Модуль подготовки защиты конфигурирован с возможностью, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет этому критерию выбора, изменять выделение памяти целевого объекта, при этом изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
[0007] Согласно другому аспекту способ содержит использование по меньшей мере одного процессора хостовой системы для формирования операционной системы, конфигурированной с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. Виртуализированную физическую память разделяют на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Способ дополнительно содержит, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет критерию выбора, использование указанного по меньшей мере одного процессора для изменения выделения памяти целевого программного объекта, причем изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
[0008] Согласно другому аспекту долговременный машиночитаемый носитель, кодирует инструкции, которые, при выполнении по меньшей мере одним процессором хостовой системой, обеспечивают возможность побуждать указанный по меньшей мере один процессор выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе. При этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы. Инструкции дополнительно побуждают указанный по меньшей мере один процессор изменять выделение памяти целевого программного объекта в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ. Изменение выделения памяти выполняется, когда целевой программный объект удовлетворяет критерию выбора. Изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0009] Вышеизложенные аспекты и преимущества настоящего изобретения будут более понятными при чтении следующего подробного описания со ссылками на чертежи, на которых:
[0010] фиг. 1 показывает примерную конфигурацию аппаратного обеспечения хостовой компьютерной системы, защищенной от вредоносных программ согласно некоторым вариантам осуществления настоящего изобретения;
[0011] фиг. 2 показывает примерный набор виртуальных машин, открытых гипервизором, выполняющимся на хостовой системе на фиг. 1, согласно некоторым вариантам осуществления настоящего изобретения;
[0012] фиг. 3 иллюстрирует примерную иерархию программных объектов, выполняющихся на хостовой системе на различных уровнях привилегий процессора, включая множество объектов, защищенных от вредоносных программ, согласно некоторым вариантам осуществления настоящего изобретения;
[0013] фиг. 4 показывает примерное отображение адресов памяти в конфигурации системы с фиг.2 согласно некоторым вариантам осуществления настоящего изобретения;
[0014] фиг. 5 показывает примерное выделение памяти, причем пространство виртуализированной физической памяти разделено на страницы, при этом определенная секция памяти выделена каждому из множества программных объектов;
[0015] фиг. 6 иллюстрирует примерное выделение памяти, причем страница выделена исключительно целевому программному объекту согласно некоторым вариантам осуществления настоящего изобретения;
[0016] фиг. 7 показывает примерную последовательность этапов, выполняемых движком интроспекции памяти, для защиты виртуальной машины согласно некоторым вариантам осуществления настоящего изобретения;
[0017] фиг. 8 показывает примерную последовательность этапов, выполняемых при помощи варианта осуществления модуля подготовки защиты для модифицирования выделения памяти целевому программному объекту;
[0018] фиг. 9 показывает примерную последовательность этапов, выполняемых при помощи другого варианта осуществления модуля подготовки защиты для модифицирования выделения памяти целевому программному объекту;
[0019] фиг. 10 показывает примерную последовательность этапов, выполняемых модулем подготовки защиты для модифицирования освобождения памяти для целевого программного объекта согласно некоторым вариантам осуществления настоящего изобретения.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[0020] В нижеследующем описании предполагается, что все перечисленные соединения между конструкциями могут быть непосредственными рабочими соединениями или опосредованными рабочими соединениями через промежуточные конструкции. Набор элементов включает в себя один или более элементов. Любое указание на элемент подразумевает указание на по меньшей мере один элемент. Множество элементов включает в себя по меньшей мере два элемента. Если иное не требуется, любые описанные этапы способа не обязательно должны выполняться в определенном показанном порядке. Первый элемент (например, данные), производный от второго элемента, включает в себя первый элемент, эквивалентный второму элементу, а также первый элемент, сгенерированный посредством обработки второго элемента и, опционально, других данных. Осуществление определения или принятие решения согласно параметру включает в себя осуществление определения или принятие решения согласно параметру и, опционально, согласно другим данным. Если не указано иное, индикатор некоторой величины/данных может представлять собой сами величину/данные или индикатор, отличный от самих величины/данных. Если не указано иное, страница представляет собой наименьшую единицу виртуальной физической памяти, отображаемой индивидуально на физическую память хостовой системы. Если не указано иное, говорят, что часть виртуальной физической памяти охватывает набор страниц, когда каждая страница данного набора страниц содержит часть этой соответствующей части. Резервирование страницы для целевого объекта включает в себя выделение всей страницы целевому объекту и в противном случае обеспечение того, что соответствующая страница не вмещает в себе частей объектов, отличных от целевого объекта. Машиночитаемые носители включают в себя долговременные носители, такие как магнитные, оптические и полупроводниковые носители данных (например, жесткие диски, оптические диски, флэш-память, динамическая операционная память (DRAM)), а также линии связи, такие как проводящие кабели и волоконно-оптические линии связи. Согласно некоторым вариантам осуществления настоящее изобретение обеспечивает, в частности, компьютерные системы, содержащие аппаратное обеспечение (например, один или несколько процессоров), программированное для выполнения описанных здесь способов, а также машиночитаемые носители, кодирующие инструкции для выполнения описанных здесь способов.
[0021] Нижеследующее описание иллюстрирует варианты осуществления изобретения в качестве примера и не обязательно в качестве ограничения.
[0022] Фиг. 1 показывает примерную конфигурацию аппаратного обеспечения хостовой системы 10 согласно некоторым вариантам осуществления настоящего изобретения. Хостовая система 10 может представлять собой вычислительное устройство профессионального применения, такое как корпоративный сервер или устройство конечного пользователя, такое как, среди прочего, персональный компьютер или смартфон. Другие хостовые системы включают в себя развлекательные устройства, таких как телевизоры и игровые консоли или любые другие устройства, имеющие память и процессор, поддерживающие виртуализацию и требующие защиты от вредоносных программ. Фиг. 1 показывает компьютерную систему для иллюстративных целей; другие клиентские устройства, такие как мобильные телефоны или планшеты, могут иметь отличную конфигурацию. В некоторых вариантах осуществления система 10 включает в себя набор физических устройств, в том числе процессор 12, блок 14 памяти, набор устройств 16 ввода, набор устройств 18 вывода, набор устройств 20 хранения и набор сетевых адаптеров 22, которые все соединены набором шин 24.
[0023] В некоторых вариантах осуществления процессор 12 содержит физическое устройство (например, многоядерную интегральную схему), конфигурированную с возможностью выполнять вычислительные и/или логические операции с набором сигналов и/или данных. В некоторых вариантах осуществления такие логические операции поступают в процессор 12 в виде последовательности инструкций процессора (например, машинного кода или программного обеспечения другого типа). Блок 14 памяти может содержать энергозависимые машиночитаемые носители (например, оперативное запоминающее устройство (RAM)), хранящие данные/сигналы, к которым обращается или которые генерируются процессором 12 в течение выполнения инструкций. Устройства 16 ввода могут включать в себя, среди прочего, клавиатуры компьютера, мыши и микрофоны, в том числе соответствующие аппаратные интерфейсы и/или адаптеры, позволяющие пользователю вводить данные и/или инструкции в систему 10. Устройства 18 вывода могут включать в себя устройства отображения, такие как, среди прочего, мониторы и динамики, а также аппаратные интерфейсы/адаптеры, такие как графические карты, позволяющие системе 10 передавать данные пользователю. В некоторых вариантах осуществления устройства 16 ввода и устройства 18 вывода могут иметь общую часть аппаратного обеспечения, как в случае устройств с сенсорным экраном. Устройства 20 хранения включают в себя машиночитаемые носители, позволяющие долговременной памяти читать и записывать инструкции и/или данные программного обеспечения. Примеры устройств 20 хранения включает в себя магнитные и оптические диски и устройства флэш-памяти, а также съемные носители, такие как компакт-диски (CD) и/или универсальные цифровые диски (DVD) и дисководы. Набор сетевых адаптеров 22 позволяет системе 10 соединяться с компьютерной сетью и/или другими устройствами/компьютерными системами. Шины 24 собирательно представляют собой множество системных, периферических шин и шин наборов микросхем, и/или все другие схемы, обеспечивающие взаимную связь устройств 12-22 хостовой системы 10. Например, шины 24 могут, среди прочего, содержать северный мост, соединяющий процессор 12 с памятью 14 и/или южный мост, соединяющий процессор 12 с устройствами 16-22.
[0024] Фиг. 2 показывает примерный набор гостевых виртуальных машин 32a-b, выполняемых на хостовой системе 10 и открытых гипервизором 30, согласно некоторым вариантам осуществления настоящего изобретения. Виртуальные машины (VM) широко известны в данной области техники как эмуляции программного обеспечения реальных физических машин/компьютерных систем, каждая из которых выполнена с возможностью выполнять ее собственную операционную систему и программное обеспечение независимо от других виртуальных машин. Гипервизор 30 содержит программное обеспечение, обеспечивающее возможность мультиплексирования (обмена) несколькими виртуальными машинами ресурсов аппаратного обеспечения хостовой системы 10, таких как операции процессора, устройства памяти, хранения, ввода/вывода и сетевые устройства. В некоторых вариантах осуществления гипервизор 30 позволяет нескольким виртуальным машинам и/или операционным системам (OS) выполняться одновременно на хостовой системе 10 с различными степенями изоляции. Для обеспечения возможности таких конфигураций программное обеспечение, образующее часть гипервизора 30, может создавать множество виртуализированных, т.е. эмулированных посредством программного обеспечения, устройств, при этом каждое виртуализированное устройство среди прочего эмулирует физическое аппаратное устройство системы 10, такое как процессор 12 и память 14. Гипервизор 30 может дополнительно назначать набор виртуальных устройств каждой VM, работающей на хостовой системе 10. Таким образом, каждая VM 32a-b работает, как будто она обладает ее собственным набором физических устройств, то есть как более или менее полная компьютерная система. Примеры популярных гипервизоров включают в себя, среди прочего, VMware vSphere™ от VMware Inc. и гипервизор Xen с открытым исходным кодом.
[0025] В некоторых вариантах осуществления гипервизор 30 включает в себя движок 40 интроспекции памяти, конфигурированный с возможностью выполнять антивредоносные операции, как описано ниже, и модуль 46 подготовки защиты, соединенный с движком 40 интроспекции памяти. Движок 40 и модуль 46 могут быть включены в гипервизор 30 или могут поставляться как программные компоненты отдельно и независимо от гипервизора 30, однако при этом выполняться по существу на том же уровне привилегий процессора, что гипервизор 30. Один движок 40 может быть конфигурирован с возможностью защищать от вредоносных программ несколько виртуальных машин, выполняемых на хостовой системе 10.
[0026] Хотя фиг. 2 показывает для простоты только две VM 32a-b, хостовая система 10 может оперировать большим количеством, например сотнями, VM, причем количество таких VM может изменяться в течение работы хостовой системы 10. В некоторых вариантах осуществления каждая VM 32a-b выполняет гостевую операционную систему 34a-b и/или набор программных приложений 42a-b и 42c-d, соответственно, параллельно и независимо от других виртуальных машин, выполняемых на хостовой системе 10. Каждая OS 34a-b содержит программное обеспечение, которое обеспечивает интерфейс для (виртуализированного) аппаратного обеспечения соответствующей VM 32a-b, и действует в качестве хоста для вычислительных приложений 42a-b и 42c-d, соответственно, выполняемых в соответствующей OS. Операционные системы 34a-b могут включать в себя любую широко распространенную операционную систему, такую как, среди прочего, Windows®, MacOS®, Linux®, iOS® или Android™. Приложения 42a-d могут включать в себя, среди прочего, обработку текстов, обработку изображений, базу данных, браузер, приложения электронных коммуникаций и антивредоносные приложения.
[0027] Фиг. 3 иллюстрирует иерархию программных объектов, выполняемых на хостовой системе 10, согласно некоторым вариантам осуществления настоящего изобретения. Фиг. 3 представлена с точки зрения уровней привилегий процессора, которые также известны в данной области техники как слои или кольца защиты. В некоторых вариантах осуществления гипервизор 30 берет на себя управление процессором 12 на наиболее привилегированном уровне (обычно известен как режим суперпользователя или как VMXroot на платформах Intel), создавая, таким образом, платформу аппаратной виртуализации, представленную как виртуальная машина 32 для другого программного обеспечения, выполняемого на хостовой системе 10. Операционная система 34, такая как OS 34a-b на фиг. 2, выполняется в виртуальной среде VM 32, причем OS 34 имеет более низкие привилегии процессора (например, режим ядра или кольцо 0 на платформах Intel), чем гипервизор 30. OS 34 может дополнительно включать в себя защищенный объект 36а OS, выполняемый на уровне привилегий OS. В некоторых вариантах осуществления защищенный объект 36а OS включает в себя структуру данных, выбранную для защиты от вредоносных программ, такую как объект драйвера, как показано ниже. Набор приложений 42e-f, например, приложения 42a-d на фиг. 2, выполняются на более низком уровне привилегий процессора (например, режим пользователя на платформах Intel), чем уровень привилегий OS 34.
[0028] В некоторых вариантах осуществления антивредоносное приложение 44 выполняется на OS 34, как правило на том же уровне привилегий процессора, что приложения 42e-f. Примерные антивредоносные приложения 44 включают в себя антивирусные программы или большие программные пакеты, содержащие антивирус, антишпионскую программу и другие приложения компьютерной безопасности. В некоторых вариантах осуществления антивредоносный драйвер 36b выполняется на уровне процессора, сходном с уровнем OS 34. Драйвер 36b обеспечивает функциональность для вредоносного приложения 44, например, для сканирования памяти на наличие вредоносных сигнатур и/или для детектирования поведения, характерного для вредоносных программ, программных объектов, выполняющихся на OS 34.
[0029] В некоторых вариантах осуществления движок 40 интроспекции выполняется по существу на том же уровне привилегий, что гипервизор 30, и конфигурирован с возможностью выполнять интроспекцию виртуальных машин, таких как VM 32. Интроспекция VM или программного объекта, выполняемого на соответствующей VM, может включать в себя, среди прочего, анализ поведения программного объекта, определение и/или доступ к адресам памяти этих программных объектов, ограничение доступа определенных процессов к содержимому памяти, расположенному на этих адресах, и анализ этого содержимого. В некоторых вариантах осуществления программные объекты, являющиеся целью движка 40 интроспекции, содержат, среди прочего, процессы, потоки команд, регистры и структуры данных, такие как таблицы страниц и объекты драйверов.
[0030] В качестве примерной работы движок 40 интроспекции памяти может устанавливать защищенную область 38, содержащую программные объекты, защищенные от вредоносных программ. Защита этих объектов может включать в себя ограничение доступа к области памяти, хранящей данные, принадлежащие к соответствующим объектам. Поскольку гипервизор 30 имеет контроль над пространством памяти VM 32, защита определенных областей памяти, используемой OS 34, может быть достигнута, например, посредством установки гипервизором 30 соответствующих прав доступа к соответствующим областям памяти. В некоторых вариантах осуществления защищенная область 38 включает в себя защищенный объект 36а OS и антивредоносный драйвер 36b. Когда OS 34 является операционной системой Linux, примерные защищенные объекты 36а OS включают в себя, среди прочего: ядро (код и/или данные только для чтения, такие как sys_call_table), регистры управления sysenter/syscall и адреса int 0×80 (syscall) и/или int 0×01. Примеры защищенных объектов OS Windows, включают в себя: ядро (код и/или данные только для чтения, в том числе таблица диспетчеризации системных сервисов), различные таблицы дескрипторов (например, прерываний, глобальные и/или локальные), регистры управления sysenter/syscall и/или другие регистры, такие как регистр дескрипторов таблицы прерываний (IDTR), регистр глобальной таблицы дескрипторов (GDTR), и регистр локальной таблицы дескрипторов (LDTR). В некоторых вариантах осуществления защищенный объект 36а OS может также включать в себя, среди прочего, конкретные объекты драйверов и таблицы диспетчеризации быстрого ввода/вывода (I/O) (например, disk, atapi, clfs, fltmgr, ntfs, fastfat, iastor, iastorv). Другие защищенные объекты 36a OS могут включать в себя определенные модельно зависимые регистры (MSR), такие как ia32_systenter_eip, ia32_sysenter_esp, ia32_efer, ia32_star, ia32_lstar и ia32_gs_base. в некоторых вариантах осуществления движок 40 интроспекции также защищает таблицы страниц для предотвращения несанкционированного изменение маршрута к адресам, содержащим вредоносный код.
[0031] Виртуальные машины, как правило, работают с виртуализированной физической памятью, то есть с виртуальным представлением фактической физической памяти 14 хостовой системы 10. Виртуализованная физическая память содержит непрерывное пространство виртуализированных адресов, специфичное для каждой хостовой VM 32a-b, причем части указанного пространства отображены на адреса в физической памяти 14 и/или физических устройствах 20 хранения. В системах, конфигурированных с возможностью поддерживать виртуализацию, такое отображение, как правило, достигается посредством специальных структур данных, управляемых процессором 12, таких как расширенные таблицы страниц (EPT) или вложенные таблицы страниц (NPT). В таких системах виртуализированная физическая память может быть разделена на единицы, известные в данной области техники как страницы, причем страница представляет собой наименьшую единицу виртуализированной физической памяти, индивидуально отображаемой на физическую память при помощи таких механизмов, как EPT и/или NPT, т.е. отображение между физической и виртуализированной физической памятью выполняется при помощи разбиения на страницы. Все страницы, как правило, имеют заданный размер, например, 4 килобайта, 2 мегабайта и т.д. Разделение виртуализированной физической памяти, как правило, конфигурировано гипервизором 30. В некоторых вариантах осуществления гипервизор 30 также конфигурирует EPT/NPT и, таким образом, отображение между физической памятью и виртуализированной физической памятью. Некоторые конфигурации аппаратного обеспечения позволяют гипервизору 30 выборочно управлять доступом к данным, хранящимся в каждой странице, например, путем установления прав доступа на чтение и запись для соответствующей страницы. Такие права могут быть установлены, например, путем модифицирования ввода соответствующей страницы в ЕРТ или NPT. Гипервизор 30 может, таким образом, выбирать, какой программный объект может получать доступ к данным, хранящимся по адресам в каждой странице, и может указывать, какие операции разрешены в отношении соответствующих данных, например, чтение, запись и т.д. Попытка программного объекта выполнить операцию, такую как чтение данных из страницы или запись данных на странице, в отношении которой объект не имеет соответствующее право, может вызывать выходное событие виртуальной машины (например, событие VMExit на платформах Intel). В некоторых вариантах осуществления выходные события виртуальной машины передают управления процессором от VM, выполняющей соответствующий программный объект, к гипервизору 30, что, таким образом, предотвращает несанкционированные попытки чтения/записи.
[0032] В некоторых вариантах осуществления OS 34 конфигурирует пространство виртуальной памяти (которое также называется логическим адресным пространством) и открывает указанное пространство виртуальной памяти для приложения, такого как приложения 42e-f и 44 на фиг. 3 и/или для другого программного объекта, такого как защищенные объекты 36a-b. В этих системах OS 34 конфигурирует и поддерживает отображение между указанным пространством виртуальной памяти и виртуализированной физической памятью VM 32, например, с использованием механизма таблицы страниц. В некоторых вариантах осуществления указанное пространство виртуальной памяти также разделено на страницы, причем эти страницы, представляют собой наименьшую единицу виртуальной памяти, индивидуально отображаемой на виртуализированную физическую память при помощи OS 34 (отображение от виртуальной на виртуализированную физическую память выполняется при помощи гранулярности страниц).
[0033] Фиг. 4 иллюстрирует примерное отображение адресов памяти в варианте осуществления, показанном на фиг. 2. Программному объекту, например, приложению 42а или гостевой OS 34а, присваивается виртуальное адресное пространство 214а при помощи гостевой OS 34а. Когда соответствующий программный объект пытается получить доступ к примерный адресу 50а памяти, адрес 50а переводится виртуализированным процессором гостевой VM 32а, согласно таблицам страниц, конфигурированным и управляемым гостевой OS 34а, в адрес 50b в пространстве 114а виртуализированной физической памяти виртуальной машины 32а. Адрес 50b также известен в данной области техники как гостевой физический адрес. Гипервизор 30, который конфигурирует и управляет физической виртуализированной памятью 114а, затем отображает адрес 50b в адрес 50 с в физической памяти 14 хостовой системы 10, например, с использованием средств ЕРТ или NPT, как описано выше.
[0034] Сходным образом пространство 214b виртуальной памяти устанавливается гостевой OS 34b для приложений (например, 42c) или других программных объектов, выполняемых на гостевой VM 32b. Примерный виртуальный адрес 50d в пространстве 214b переводится посредством виртуализированного процессора гостевой VM 32b, согласно таблицам перевода, конфигурируемым и управляемым гостевой OS 34b, в адрес 50е в пространстве 114b виртуализированной физической памяти гостевой VM 32b. Адрес 50е дополнительно преобразуется гипервизором 30 в адрес 50f в физической памяти 14.
[0035] В некоторых вариантах осуществления гипервизор 30 устанавливает его собственное пространство 214 с виртуальной памяти, содержащее представление физической памяти 14, и использует механизм перевода (например, таблицы страниц) для отображения адресов в пространстве 214c в адреса в физической памяти 14. На фиг. 4 такое примерное отображение переводит адрес 50g в адрес 50h. Аналогично, адреса, такие как 50c и 50f в физической памяти 14, соответствуют адресам 50k и 50m, соответственно, в пространстве 214с виртуальной памяти гипервизора 30.
[0036] Важной задачей OS 34a-b является динамическое выделение секций памяти программным объектам, выполняемым на соответствующей VM 32a-b, и освобождение таких секций для повторного использования, когда они больше не нужны соответствующему процессу. Это выделение памяти может выполняться на уровне виртуальной памяти 214a-b или на уровне виртуализированной физической памяти 114a-b соответствующей виртуальной машины. Выделение и освобождение памяти, как правило, выполняются специальными функциями управления памятью OS, такими как KeAllocatePoolWithTag и KeFreePoolWithTag в Windows®.
[0037] Благодаря вышеописанным механизмам отображения памяти выделение памяти целевому объекту всегда приводит к выделению секции виртуализированной физической памяти соответствующей VM целевому объекту. Размер соответствующей секции может быть только частью страницы или больше одной страницы согласно размеру страницы и требованиям к памяти соответствующего программного объекта. Ниже говорится, что секция охватывает набор страниц, когда каждая страница этого набора страниц содержит часть соответствующей секции. Нескольким объектам может быть выделены различные секции той же самой страницы. Фиг. 5 показывает примерную область виртуализированной физической памяти, разделенной на множество страниц 26a-d, а также примерное выделение памяти, в котором две секции 52 и 54, каждая из которых выделена отдельному программному объекту, охватывают ту же самую страницу 26b. Другая примерная секция 56 охватывает две страницы 26c-d.
[0038] В отличие от этого фиг. 6 показывает примерное выделение памяти согласно некоторым вариантам осуществления настоящего изобретения. Как подробно показано ниже, когда целевому объекту требуется защита от вредоносных программ, например, когда целевой объект представляет собой объект драйвера или другой объект, принадлежащий защищенной области 38, некоторые варианты осуществления модуля 46 подготовки защиты модифицируют выделение памяти целевому объекту, так что каждая страница, содержащая часть целевого объекта, резервируется для этого целевого объекта.
[0039] Специалисту в данной области техники понятно, что резервирование набора страниц для целевого объекта может быть достигнуто несколькими способами. В некоторых вариантах осуществления резервирование страницы включает в себя выделение всей страницы целевому объекту, как показано в примере на фиг. 6, в котором секция 58 занимает всю страницу 26f. Такое исключающее выделение может быть достигнуто, например, путем изменения размера секции, выделенной соответствующему объекту, с получением нового размера, равного целому кратному размеру страницы, как показано более подробно ниже. В противоположность этому в том же примере на фиг. 6, незащищенному программному объекту выделяется секция 60, содержащая только часть другой страницы 26g. В других вариантах осуществления резервирование набора страниц для целевого объекта не обязательно включает в себя изменение размера целевого объекта или выделение всего набора страниц целевому объекту, при этом, однако, оно может быть достигнуто путем обеспечения другим способом того, что никакому объекту, за исключением целевого объекта, не выделяется пространство памяти в соответствующем наборе страниц. Например, резервирование страницы для целевого объекта может включать в себя исключение набора пустых страниц, например, при инициализации OS 34, и выделение (или перемещение) этого объекта в соответствующий набор пустых страниц, как показано более подробно ниже.
[0040] Фиг. 7 иллюстрирует примерную последовательность этапов, выполняемых движком 40 интроспекции памяти согласно некоторым вариантам осуществления настоящего изобретения. Движок 40 может быть конфигурирован для проверки и/или защиты множества виртуальных машин, выполняемых одновременно на хостовой системе 10. Этапы, показанные на фиг. 7, могут быть повторены для каждой такой виртуальной машины. На этапе 102 движок 40 детектирует инициализацию OS 34. В некоторых вариантах осуществления этап 102 включает в себя перехват, из уровня гипервизора 30, событий процессора, характерных для инициализации OS. Инструкции процессора, которые выполняют операции инициализации OS, как правило, требуют привилегии процессора ядра, например, кольцо 0 на платформах Intel. При выполнении из уровня привилегии OS 34, такие инструкции могут вызывать выходное событие виртуальной машины, такое как событие VMExit на платформах Intel, которое передает управление процессором 12 от OS 34 к гипервизору 30. Выходные события виртуальной машины могут, таким образом, анализироваться гипервизором 30 и/или движком 40 интроспекции. Примеры событий и/или инструкций процессора, характеризующих инициализацию OS, включают в себя инициализацию таблицы дескрипторов прерывания и глобальной таблицы дескрипторов, которые выполняются в начале инициализации OS Windows, с использованием привилегированных инструкций, таких как LIDT и/или LGDT. Другие примеры событий/инструкции, характеризующих инициализацию OS, включают в себя запись в модельно зависимые регистры SYSENTER и/или SYSCALL с использованием машинной инструкции WRMSR, что выполняется сразу после того, как образ ядра OS был загружен в память. Другие примеры включают в себя инициализацию других модельно зависимых регистров, программируемых OS 34, таких как, среди прочего, регистры конфигурации контроля машины и базовые регистры FS/GS. В некоторых вариантах осуществления детектирование таких событий/инструкции указывает на то, что OS 34 была инициализирована.
[0041] На этапе 104 в некоторых вариантах осуществления движка 40 интроспекции памяти детектируется тип операционной системы, которая выполняется в данный момент или инициализируется на соответствующей гостевой VM. Примерные типы OS включают в себя, среди прочего, Windows, Linux, MacOS и Android. Тип OS может содержать, среди прочего, индикатор имени, например Windows, и индикатор версии, например 7, домашняя (Home) или корпоративная (Enterprise). В некоторых вариантах осуществления этап 104 включает в себя идентификацию типа OS согласно содержанию модельно зависимого регистра (MSR) соответствующей гостевой VM или согласно содержанию секции памяти, на которую указывает соответствующий MSR. В некоторых вариантах осуществления движок 40 может определять имя OS согласно данным, записываемым в эти MSR инструкциями, перехваченными на этапе 102. Например, движок 40 может перехватывать инструкции для записи в SYSENTER или в SYSCALL MSR и определять тип OS, выполняемой в данный момент или инициализируемой в данный момент, согласно параметру этой инструкции записи. Другие примерные регистры, которые могут обеспечивать информацию об имени OS, включают в себя, среди прочего, регистры управления, таблицу дескрипторов прерывания (ЮТ) и глобальную таблицу дескрипторов (GDT). Для идентификации типа OS согласно записям MSR движок 40 интроспекции может дополнительно использовать сопоставление с образцом предварительно заданной библиотеки обработчиков быстрых системных вызовов, специфичных для каждой OS (например, системные вызовы, обрабатываемые согласно содержанию SYSCALL или SYSENTER MSR). Такие библиотеки быстрых системных вызовов могут быть оснащены движком 40 интроспекции и могут обновляться при помощи периодических обновлений программного обеспечения или обновлений по требованию.
[0042] В некоторых вариантах осуществления индикатор версии (например, имя выпуска, номер сборки и т.д.), может быть получен путем синтаксического анализа определенных структур данных ядра, специфичных для соответствующего типа OS. Примерными структурами данных, позволяющими идентифицировать версию OS, являются, среди прочего, определенные экспортные символы ядра Linux или определенные экспортируемые символы ядра Windows, такие как NtBuildNumber.
[0043] На этапе 106 движок 40 интроспекции памяти может вызывать выполнение модулем 46 подготовки защиты операций по подготовке памяти, при подготовке движка 40 для применения защиты целостности. В некоторых вариантах осуществления такие операции по подготовке памяти включают в себя модифицирование выделения целевого объекта, выбранного для защиты от вредоносных программ, так что все страницы, содержащие части целевого объекта, резервируются для соответствующего целевого объекта. В некоторых вариантах осуществления этап 106 может включать в себя установление зарезервированного пула невыделенных страниц памяти для выделения позже исключительно объектам, выбранным для защиты от вредоносных программ. Для создания этого зарезервированного пула модуль 46 подготовки защиты может вызывать встроенную функцию выделения памяти OS для выделения соответствующего пула фиктивному программному объекту заданного размера (например, 20 Мб). Модуль 46 может, таким образом, гарантировать, что соответствующий пул памяти не будет использоваться при дальнейших выделениях, выполняемых встроенными функциями управления памятью OS. Функциональность модуля 46 дополнительно описана ниже со ссылками на фиг. 8-10.
[0044] На этапе 108 движок 40 интроспекции памяти выбирает целевой объект для защиты. В некоторых вариантах осуществления этап 108 включает в себя идентификацию программных объектов, требующих защиты от вредоносных программ (см. защищенную область 38 на фиг. 3), согласно типу OS, определенному на этапах 102-104. Примерные объекты, являющиеся целевыми для защиты, представляют собой, среди прочего, объекты драйверов OS и антивредоносный драйвер 36b. Для идентификации таких объектов движок 40 интроспекции памяти может поддерживать список специфических для OS объектов, требующих защиты от вредоносных программ, при этом список может обновляться посредством периодических и/или по требованию обновлений программного обеспечения. В некоторых вариантах осуществления движок 40 может перехватывать каждую попытку OS 34 загрузить драйвер, а также выполнять набор проверок целостности и/или подписи соответствующего драйвера. Такие проверки могут включать в себя сравнение хэша части соответствующего драйвера с библиотекой хэшей, определенных для известных драйверов, и может позволять идентифицировать антивредоносный драйвер 36b среди множества драйверов, которые OS 34 использует и/или пытается загрузить в данный момент. После идентификации драйвер 36b может быть защищен наряду с другими компонентами OS, как показано более подробно ниже.
[0045] Этап 110 ожидает до тех пор, пока целевой объект не будет инициализирован. Например, когда драйвер инициализирован, OS 34 выполняет ряд законных записей конфигурации в область памяти, выделенную соответствующему драйверу или другим программным объектам, выбранным согласно соответствующему драйверу или согласно устройству, для управления которого конфигурирован соответствующий драйвер, при этом движок 40 может обеспечивать возможность выполнения этих законных записей в качестве части этапа 110. Для определения того, был ли инициализирован целевой объект, некоторые варианты осуществления движка 40 могут перехватывать события и/или инструкции процессора, характеризующие инициализацию драйвера. Примеры таких событий включают в себя, среди прочего, модифицирования в определенных областях соответствующего объекта.
[0046] На этапе 112 движок 40 защищает соответствующий целевой объект от нежелательного модифицирования, например, вредоносным программным обеспечением, пытающимся подвергнуть опасности OS 34. Несколько таких механизмов защиты памяти известно из данной области техники. В некоторых вариантах осуществления защита целевого объекта включает в себя защиту от записи пространства памяти, которое выделено OS 34 соответствующему целевому объекту. Эта защита от записи может быть реализована гипервизором 30 на запрос движку 40 интроспекции памяти с использованием структур данных, таких как ЕРТ или NPT. Например, гипервизор 30 может установить страницы памяти, выделенные целевому объекту, как только для чтения путем модифицирования битов с правами на доступ EPT/NPT соответствующих страниц. Альтернативно гипервизор 30 может перехватывать любую попытку записи в страницах памяти, выделенных целевому объекту, и перенаправлять соответствующую попытку на движок 40 интроспекции памяти для анализа. После анализа этой попытки записи движок 40 интроспекции памяти может решить, следует ли разрешить или запретить (сбросить) соответствующую операцию записи. Этапы 108-112 могут повторяться для всех целевых объектов, требующих защиты от вредоносных программ.
[0047] В некоторых вариантах осуществления операции по подготовке памяти, выполняемые модулем 46 подготовки защиты, включают в себя модифицирование выделения памяти целевого программного объекта, который выбран для защиты от вредоносных программ, причем указанное модифицирование происходит до того, как движок 40 применяет защиту целостности соответствующего программного объекта, как показано выше (фиг. 7, этапы 108-112). В некоторых вариантах осуществления модуль 46 модифицирует выделение памяти, так что страницы памяти, содержащие части целевого объекта, резервируются для соответствующего целевого объекта. Модифицирование указанного выделения памяти может содержать модифицирование результата выполнения функции управления памятью, встроенной в OS 34, и/или модифицирование самой соответствующей функции управления памятью. Встроенные функции управления памятью включают в себя программные объекты, предусмотренные изготовителем OS 34, причем встроенные функции выполняют операции выделения и освобождения памяти. Примерами таких функций являются KeAllocatePoolWithTag и KeFreePoolWithTag, которые являются встроенными для Windows OS.
[0048] В некоторых вариантах осуществления модуль 46 подготовки защиты идентифицирует набор встроенных функций управления памятью согласно типу OS, определенному движком интроспекции на этапе 104, например, путем определения адресов памяти, на которых эти функции находятся в памяти соответствующей гостевой виртуальной машины 32. Для определения этих адресов памяти модуль 46 может получить доступ к определенным структурам данных, таким как таблицы экспортируемых функций бинарных изображений ядра (например, формат загружаемого кода в Windows, формат выполняемых и компонуемых модулей в Linux).
[0049] После идентификации встроенных функций управления памятью, некоторые варианты осуществления модуля 46 могут продолжать выполнять модифицирование указанных функций путем обеспечения дополнительной функциональности. Эти модифицирования могут быть достигнуты с использованием любого способа перехватывания, известного из данной области техники. Например, модуль 46 может применять патч перенаправления, такой как инструкция VMCall или инструкция JMP, переписанного или добавленного к соответствующей встроенной функции. Другие варианты осуществления могут модифицировать запись ЕРТ соответствующей функции управления памятью с целью указания на новый адрес. В некоторых вариантах осуществления эффект от таких патчей и/или перехватов ЕРТ заключается в том, чтобы перенаправить выполнение встроенной функции на фрагмент кода, обеспеченного модулем 46 подготовки защиты; примерная функциональность такого кода приведена ниже. После перехватывания, когда OS 34 пытается выделить память целевому объекту или освободить память от целевого объекта, фрагмент кода может быть выполнен до или вместо кода соответствующей встроенной функции OS управления памятью.
[0050] Фиг. 8 показывает примерную последовательность этапов, включающих в себя модифицирование встроенной функции OS выделения памяти, такой как KeAllocatePoolWithTag в Windows, согласно некоторым вариантам осуществления настоящего изобретения. Эта последовательность может образовывать часть модуля 46 подготовки защиты и может выполняться в результате перенаправления, выполненного патчем/перехватом, примененными к соответствующей функции выделения памяти. Этап 122 применяет критерий выбора для определения, может ли объект, запрашивающий выделения памяти, претендовать на защиту от вредоносных программ. Эти определения могут быть осуществлены, например, согласно параметрам и/или аргументам вызова соответствующей функции. Примерный критерий выбора включает в себя выбор объектов согласно их типу, например объектов драйверов. В варианте осуществления, выполняющем OS 34 из семейства Windows, тип выделяемого объекта может быть определен согласно тегу выделения встроенной функции выделения памяти KeAllocatePoolWithTag. Например, тег "Driv" указывает на объект драйвера. Альтернативный критерий выбора содержит определение, находится ли запрашивающий выделение объект в списке объектов, предназначенных для защиты от вредоносных программ. Такой список может включать в себя элементы защищенной области 38 (фиг. 3). В некоторых вариантах осуществления дополнительный критерий выбора включает в себя определение, может ли выделение памяти соответствующего объекта быть безопасно модифицировано описанными ниже способами.
[0051] Этап 124 определяет, удовлетворяет ли целевой объект критерию выбора для защиты от вредоносных программ. Если нет, этап 128 возвращает управление выполнением встроенной функции выделения памяти соответствующей OS. Когда целевой объект выбран для защиты, на этапе 126, некоторые варианты осуществления модуля 46 подготовки защиты изменяют размер целевого объекта на новый размер объекта, равный целому кратному размера страницы. Изменение размера объекта этим способом может эффективно заставить программу выделения памяти выделить набор целых страниц соответствующему целевому объекту вместо фактического количества памяти, требуемой для размещения объекта. В некоторых вариантах осуществления размер целевого объекта округляется до следующего ближайшего целого кратного размера страницы. Например, целевому объекту размером 320 байт может быть выделена целая страница с размером 4 кбайт, объекту с размером 6 Кбайт могут быть выделены две целые страны с размером 4 кбайт и т.д. В некоторых вариантах осуществления, например, виртуальная машина, выполняющая Windows OS и выделяющая секцию памяти, равную по размеру по меньшей мере одной странице, автоматически выравнивает выделенную секцию к границе страницы (например, страница 58 на фиг. 6). В других вариантах осуществления этап 126 может включать в себя в явном виде выравнивание выделенной секции к границе страницы, так что все страницы, покрытые секцией, выделены исключительно целевому объекту. Специалисту в данной области понятно, что может иметься множество способов для достижения выравнивания секции к границе страницы. Например, этап 126 может включать в себя увеличение размера целевого объекта до размера одной страницы и изменение указателя на полученную выделенную секцию памяти. После завершения этапа 126 управление выполнением возвращается к встроенной функции OS управления памятью.
[0052] Фиг. 9 показывает примерную последовательность этапов, иллюстрирующую альтернативный способ, в котором модуль 46 подготовки защиты может обеспечивать выделение памяти, при котором все страницы, покрываемые секцией, выделенной защищенному программному объекту, зарезервированы для соответствующего объекта. Показанная на фиг. 9 последовательность включает в себя модифицирование функциональности встроенной функции OS выделения памяти, например, KeAllocatePoolWithTag в Windows, и может выполняться в ответ на патч/перехват, примененные к соответствующей функции выделения памяти. Последовательность этапов 132-134 проверяет, удовлетворяет ли целевой объект критерию защиты от вредоносных программ; этапы 132-134 могут выполняться способом, аналогичным способу этапов 122-124, описанных выше. Когда целевой объект не выбран для защиты, этап 138 возвращает управление процессором соответствующей встроенной функции выделения памяти. Когда целевой объект выбран для защиты от вредоносных программ, этап 136 обходит встроенную функцию выделения и непосредственно выделяет секцию, расположенную в области памяти, зарезервированной для защищенных объектов. В некоторых вариантах осуществления этап 136 включает в себя определение указателя выделения, который указывает на адрес, расположенный в зарезервированном пуле памяти, установленном модулем 46 при инициализации OS 34 (см. выше в связи с фиг. 7, этап 106). В некоторых вариантах осуществления модуль 46 может также определять указатель выделения, так что выделенная секция выравнивается к границе страницы. Затем этап 140 возвращает указатель выделения, определенный на этапе 136.
[0053] В некоторых вариантах осуществления модуль 46 подготовки защиты может также модифицировать процесс освобождения путем изменения результата выполнения встроенной функции OS освобождения памяти или путем модифицирования самой соответствующей функции. Такие модифицирования могут быть достигнуты, например, путем перехватывания встроенной функции OS освобождения памяти, например KeFreePoolWithTag, для включения дополнительной функциональности. Фиг. 10 показывает примерную последовательность этапов, включающих в себя это модифицирование функции освобождения памяти, согласно некоторым вариантам осуществления настоящего изобретения. Последовательность этапов 142-144 определяет, защищен ли от записи адрес освобождаемого объекта движком 40 интроспекции и/или гипервизором 30 (см. выше). Когда соответствующие адрес/страница не имеют такой защиты, этап 148 возвращает управление выполнением к встроенной функции OS освобождения. Когда соответствующие адрес/страница защищены от записи движком 40 и/или гипервизором 30, на этапе 146 движок 40 интроспекции памяти и/или компонент гипервизора 30 могут снять защиту, прежде чем приступить к этапу 148. В некоторых вариантах осуществления снятие защиты от соответствующего объекта включает в себя выполнение изменения в ЕРТ или NPT с указанием на то, что страница, содержащая адрес соответствующего объекта, больше не защищена от записи, например, является страницей только для чтения.
[0054] Вышеописанные примерные системы и способы обеспечивают защиту хостовой системы, такой как компьютерная система, от вредоносных программ, таких как вирусы и руткиты. В стандартных системах руткит может получить управление компьютерной системой посредством работы на уровне привилегий процессора, которой по существу сходен с уровнем операционной системы. В противоположность этому в некоторых вариантах осуществления настоящего изобретения гипервизор выполняется на компьютерной системе на самом высоком уровне привилегий, перемещая операционную систему в виртуальную машину. В некоторых вариантах осуществления движок интроспекции памяти выполняется на том же уровне привилегий процессора, что и гипервизор. Антивредоносные операции, таким образом, могут быть выполнены на более высоком уровне привилегий процессора, чем уровень операционной системы. В некоторых вариантах осуществления один движок интроспекции памяти может защищать множество виртуальных машин, выполняющихся параллельно на соответствующих компьютерных системах.
[0055] В некоторых вариантах осуществления защита соответствующей системы от вредоносных программ включает в себя, среди прочего, выбор набора критических программных объектов, таких как некоторые драйвера, регистры и таблицы страниц, и предотвращение вредоносных изменений в этих объектах. Чтобы защитить целевой объект, некоторые варианты осуществления могут предотвращать такие вредоносные изменения путем перехватывания попыток записи в пространство памяти, выделенное соответствующему объекту. Такие перехваты могут быть выполнены на уровне гипервизора.
[0056] Другие варианты осуществления могут защищать целевой объект путем маркировки пространства памяти, выделенного соответствующему объекту как только для чтения. В типичных конфигурациях аппаратного обеспечения и программного обеспечения память разделена на отдельные блоки смежных адресов, известные как страницы. Права доступа, например, разрешения на чтение и запись, как правило, устанавливаются посредством гранулярности страниц, т.е. все адреса внутри страницы имеют одинаковые права доступа. Таким образом, защита пространства памяти целевого объекта может быть достигнута, например, путем маркировки набора страниц, содержащих данные, принадлежащие соответствующему объекту, как только для чтения. Разрешения на доступ на уровне страницы управляются гипервизором, например, с использованием специализированных структур данных, таких как расширенные таблицы страниц (ЕРТ) на платформах Intel.
[0057] В традиционных системах, когда OS выделяет память программным объектам, выполняемым на соответствующей системе, множество программных объектов могут быть распределены на той же самой странице, например, когда соответствующие объекты имеют небольшие объемы требуемой памяти. В некоторых ситуациях один из соответствующих объектов может быть критичным для OS и, следовательно, требовать защиты от вредоносных программ, в то время как другому объекту на той же странице может требоваться частая и законная повторная запись. Поскольку разрешения на доступ задаются посредством гранулярности страниц, защита критического объекта может привести к отказу в доступе на запись всем объектам, находящимся на той же странице, что и критический объект. Каждая попытка записи в адрес памяти, находящийся на защищенной странице, как правило, приводит к ошибке, за которой следует передача выходным событием виртуальной машины управления процессором от OS соответствующей виртуальной машины к гипервизору. Такие события могут включать в себя загрузку и/или разгрузку состояния соответствующей виртуальной машины на процессор или из процессора, что дополнительно увеличивает вычислительные расходы. Даже законные попытки записи в страницы, содержащие, среди прочего, защищенный объект, могут, таким образом, привести к значительному торможению компьютерной системы.
[0058] В противоположность этому в некоторых вариантах осуществления настоящего изобретения модифицируется способ, посредством которого память выделяется программному объекту, требующему защиты от вредоносных программ, так что каждая страница памяти, содержащая часть соответствующего объекта, резервируется для соответствующего объекта. Это модифицирование выполняется перед применением защиты целостности к соответствующему программному объекту. Посредством обеспечения того, что никакой другой объект не использует совместно страницу памяти с целевым объектом, некоторые варианты осуществления настоящего изобретения обеспечивают защиту целостности посредством гранулярности страницы, предотвращая при этом вычислительные расходы, вызываемые перехватом законных попыток записи.
[0059] В некоторых вариантах осуществления модифицирование способа выделения, встроенного в соответствующую OS, включает в себя идентификацию функций OS выделения и освобождения памяти и перехватывание соответствующих функций для перенаправления их выполнения к набору инструкций, выполняемых на уровне привилегий процессора гипервизора. Альтернативно указанное модифицирование перенаправляет соответствующие функции на набор инструкций, выполняемых внутри виртуальной машины, выполняющей соответствующую OS, причем набор инструкций вводится в память соответствующей VM на уровне гипервизора. В некоторых вариантах осуществления функция выделения памяти модифицирована для обеспечения выделения целых страниц памяти программным объектам, требующим защиты, причем выделенная секция выравнивается к границе страницы. Таким образом, требующий защиты объект может больше не выделяться той же самой странице памяти, что и объект, который не требует защиты.
[0060] Альтернативный вариант осуществления обеспечивает то, что каждая страница, выделенная целевому объекту, зарезервирована для этого целевого объекта путем отложения зарезервированного пула памяти, например при инициализации OS. Когда операционная система запрашивает выделение памяти целевому объекту, некоторые варианты осуществления могут перенаправлять указатель выделения на адрес в зарезервированном пуле, эффективно перемещая, таким образом, этот целевой объект в зарезервированный набор страниц.
[0061] Стандартные антивредоносные технические решения, как правило, предназначены для одной операционной системы. Переключение между одной операционной системой и другой может потребовать загрузки другой версии антивредоносного программного обеспечения. В противоположность этому в некоторых вариантах осуществления настоящего изобретения тот же самый движок интроспекции памяти может обеспечивать защиту соответствующей компьютерной системы от вредоносных программ независимо от типа и версии операционной системы, работающей в данный момент. Посредством выполнения движка интроспекции памяти на уровне гипервизора и перемещения операционной системы на виртуальную машину некоторые варианты осуществления могут одновременно работать и защищать несколько операционных систем. В некоторых вариантах осуществления движок интроспекции памяти может динамически идентифицировать каждую операционную систему, например, при загрузке и может дополнительно защищать зависящие от операционной системы программные объекты и структуры данных.
[0062] Специалисту в данной области техники очевидно, что вышеупомянутые варианты осуществления могут быть изменены многими способами без отхода от объема настоящего изобретения. Соответственно, объем изобретения должен определяться прилагаемой формулой изобретения и ее допустимыми в правовом отношении эквивалентами.

Claims (49)

1. Хостовая система, содержащая по меньшей мере один процессор, конфигурированный с возможностью выполнять:
операционную систему, конфигурированную с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе, при этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы; и
модуль подготовки защиты, конфигурированный с возможностью, в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет этому критерию выбора, изменять выделение памяти целевого объекта, при этом изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
2. Хостовая система по п. 1, дополнительно содержащая движок интроспекции памяти, соединенный с модулем подготовки защиты, причем движок интроспекции памяти конфигурирован с возможностью, в ответ на изменение выделения памяти модулем подготовки защиты, защищать от записи все страницы, содержащие по меньшей мере часть целевого программного объекта.
3. Хостовая система по п. 2, в которой движок интроспекции памяти дополнительно конфигурирован с возможностью:
определять, был ли инициализирован целевой программный объект, и
в ответ, когда целевой программный объект был инициализирован, защищать от записи все страницы, содержащие по меньшей мере часть целевого программного объекта.
4. Хостовая система по п. 1, в которой критерий выбора включает в себя выбор целевого программного объекта согласно типу операционной системы.
5. Хостовая система по п. 4, в которой определение, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя идентификацию типа операционной системы согласно содержанию модельно зависимого регистра (MSR) виртуальной машины.
6. Хостовая система по п. 4, в которой определение, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя идентификацию типа операционной системы согласно содержанию памяти, на которую указывает модельно зависимый регистр (MSR) виртуальной машины.
7. Хостовая система по п. 1, в которой изменение выделения памяти включает в себя перехватывание функции выделения памяти операционной системы.
8. Хостовая система по п. 1, в которой изменение выделения памяти включает в себя инструктирование функции выделения памяти операционной системы для выделения любой страницы, содержащей по меньшей мере часть целевого программного объекта, исключительно для целевого программного объекта.
9. Хостовая система по п. 8, в которой инструктирование функции выделения памяти включает в себя изменение размера целевого программного объекта на целое, кратное размеру страницы.
10. Хостовая система по п. 9, в которой инструктирование функции выделения памяти дополнительно включает в себя выравнивание секции к границе страницы.
11. Хостовая система по п. 1, в которой модуль подготовки защиты дополнительно конфигурирован с возможностью устанавливать зарезервированный пул страниц, при этом пул зарезервирован для выделения программным объектам, защищенным от вредоносных программ, причем изменение выделения памяти включает в себя выделение секции в зарезервированном пуле страниц памяти.
12. Хостовая система по п. 1, в которой определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя:
определение того, является ли целевой программный объект объектом драйвера; и
в ответ, когда целевой программный объект является объектом драйвера, определение того, что целевой программный объект удовлетворяет критерию выбора для защиты от вредоносных программ.
13. Хостовая система по п. 1, в которой модуль подготовки защиты дополнительно конфигурирован с возможностью изменять освобождение целевого объекта, причем изменение освобождения включает в себя:
определение, защищена ли от записи страница, содержащая по меньшей мере часть целевого программного объекта, и
в ответ, когда страница защищена от записи, снятие защиты от записи со страницы.
14. Хостовая система по п. 12, в которой изменение освобождения дополнительно включает в себя перехватывание функции освобождения памяти операционной системы.
15. Способ защиты хостовой системы от вредоносных программ, содержащий:
использование по меньшей мере одного процессора хостовой системы для формирования операционной системы, конфигурированной с возможностью выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе, при этом виртуализированную физическую память разделяют на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы; и
в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет критерию выбора, использование указанного по меньшей мере одного процессора для изменения выделения памяти целевого программного объекта, причем изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
16. Способ по п. 15, дополнительно содержащий, в ответ на изменение выделения памяти, обеспечение защиты от записи всех страниц, содержащих по меньшей мере часть целевого программного объекта.
17. Способ по п. 16, дополнительно содержащий:
определение, был ли инициализирован целевой программный объект, и
в ответ, когда целевой программный объект был инициализирован, обеспечение защиты от записи всех страниц, содержащих по меньшей мере часть целевого программного объекта.
18. Способ по п. 15, в котором критерий выбора включает в себя выбор целевого программного объекта согласно типу операционной системы.
19. Способ по п. 18, в котором определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя идентификацию типа операционной системы согласно содержанию модельно зависимого регистра (MSR) виртуальной машины.
20. Способ по п. 18, в котором определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя идентификацию типа операционной системы согласно содержанию памяти, на которую указывает модельно зависимый регистр (MSR) виртуальной машины.
21. Способ по п. 15, в котором изменение выделения памяти включает в себя перехватывание функции выделения памяти операционной системы.
22. Способ по п. 21, в котором изменение выделения памяти включает в себя инструктирование функции выделения памяти операционной системы для выделения всех страниц, содержащих по меньшей мере часть целевого программного объекта, исключительно целевому программному объекту.
23. Способ по п. 22, в котором инструктирование функции выделения памяти включает в себя изменение размера целевого программного объекта на целое, кратное размеру страницы.
24. Способ по п. 23, в котором инструктирование функции выделения памяти дополнительно включает в себя выравнивание секции к границе страницы.
25. Способ по п. 15, в котором изменение выделения памяти включает в себя:
установление защищенного пула страниц, причем пул зарезервирован для выделения программным объектам, защищенным от вредоносных программ, и
выделение секции в зарезервированном пуле страниц памяти.
26. Способ по п. 15, в котором определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, включает в себя:
определение того, является ли целевой программный объект объектом драйвера; и
в ответ, когда целевой программный объект является объектом драйвера, определение того, что целевой программный объект удовлетворяет критерию выбора для защиты от вредоносных программ.
27. Способ по п. 15, дополнительно содержащий использование указанного по меньшей мере одного процессора для изменения освобождения целевого программного объекта, причем изменение освобождения включает в себя:
определение, защищена ли от записи страница, содержащая по меньшей мере часть программного объекта, и
в ответ, когда страница защищена от записи, снятие защиты от записи со страницы.
28. Способ по п. 27, в котором изменение освобождения дополнительно включает в себя перехватывание функции освобождения памяти операционной системы.
29. Долговременный машиночитаемый носитель, кодирующий инструкции, которые, при выполнении по меньшей мере одним процессором хостовой системой, обеспечивают возможность побуждать указанный по меньшей мере один процессор:
выделять секцию виртуализированной физической памяти виртуальной машины целевому программному объекту, выполняемому в виртуальной машине, причем виртуальная машина открыта гипервизором, выполняемым на хостовой системе, при этом виртуализированная физическая память разделена на страницы, причем страница представляет собой наименьшую единицу памяти, индивидуально отображаемой между виртуализированной физической памятью и физической памятью хостовой системы; и
в ответ на определение того, удовлетворяет ли целевой программный объект критерию выбора для защиты от вредоносных программ, когда целевой программный объект удовлетворяет критерию выбора, изменять выделение памяти целевого программного объекта, причем изменение выделения памяти включает в себя обеспечение того, что любая страница, содержащая по меньшей мере часть целевого программного объекта, зарезервирована для целевого программного объекта.
RU2015135541A 2013-02-22 2014-02-04 Движок интроспекции памяти для защиты целостности виртуальных машин RU2640300C2 (ru)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/774,720 2013-02-22
US13/774,720 US8875295B2 (en) 2013-02-22 2013-02-22 Memory introspection engine for integrity protection of virtual machines
PCT/RO2014/000006 WO2014129918A1 (en) 2013-02-22 2014-02-04 Memory introspection engine for integrity protection of virtual machines

Publications (2)

Publication Number Publication Date
RU2015135541A RU2015135541A (ru) 2017-03-30
RU2640300C2 true RU2640300C2 (ru) 2017-12-27

Family

ID=50389476

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015135541A RU2640300C2 (ru) 2013-02-22 2014-02-04 Движок интроспекции памяти для защиты целостности виртуальных машин

Country Status (13)

Country Link
US (1) US8875295B2 (ru)
EP (1) EP2959392B1 (ru)
JP (1) JP6218859B2 (ru)
KR (1) KR101863174B1 (ru)
CN (1) CN105190570B (ru)
AU (1) AU2014219466B2 (ru)
CA (1) CA2897747C (ru)
ES (1) ES2873229T3 (ru)
HK (1) HK1214663A1 (ru)
IL (1) IL239855B (ru)
RU (1) RU2640300C2 (ru)
SG (1) SG11201505931RA (ru)
WO (1) WO2014129918A1 (ru)

Families Citing this family (109)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8989705B1 (en) 2009-06-18 2015-03-24 Sprint Communications Company L.P. Secure placement of centralized media controller application in mobile access terminal
US9239909B2 (en) * 2012-01-25 2016-01-19 Bromium, Inc. Approaches for protecting sensitive data within a guest operating system
US9027102B2 (en) 2012-05-11 2015-05-05 Sprint Communications Company L.P. Web server bypass of backend process on near field communications and secure element chips
US9282898B2 (en) 2012-06-25 2016-03-15 Sprint Communications Company L.P. End-to-end trusted communications infrastructure
US9066230B1 (en) 2012-06-27 2015-06-23 Sprint Communications Company L.P. Trusted policy and charging enforcement function
US8649770B1 (en) 2012-07-02 2014-02-11 Sprint Communications Company, L.P. Extended trusted security zone radio modem
US8667607B2 (en) 2012-07-24 2014-03-04 Sprint Communications Company L.P. Trusted security zone access to peripheral devices
US9183412B2 (en) 2012-08-10 2015-11-10 Sprint Communications Company L.P. Systems and methods for provisioning and using multiple trusted security zones on an electronic device
US9191435B2 (en) 2012-08-23 2015-11-17 TidalScale, Inc. Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores
US9215180B1 (en) 2012-08-25 2015-12-15 Sprint Communications Company L.P. File retrieval in real-time brokering of digital content
US8954588B1 (en) 2012-08-25 2015-02-10 Sprint Communications Company L.P. Reservations in real-time brokering of digital content delivery
US9015068B1 (en) 2012-08-25 2015-04-21 Sprint Communications Company L.P. Framework for real-time brokering of digital content delivery
US9161227B1 (en) 2013-02-07 2015-10-13 Sprint Communications Company L.P. Trusted signaling in long term evolution (LTE) 4G wireless communication
US9578664B1 (en) 2013-02-07 2017-02-21 Sprint Communications Company L.P. Trusted signaling in 3GPP interfaces in a network function virtualization wireless communication system
US9104840B1 (en) 2013-03-05 2015-08-11 Sprint Communications Company L.P. Trusted security zone watermark
US9075995B2 (en) * 2013-03-11 2015-07-07 Microsoft Technology Licensing, Llc Dynamically loaded measured environment for secure code launch
US9335886B2 (en) * 2013-03-13 2016-05-10 Assured Information Security, Inc. Facilitating user interaction with multiple domains while preventing cross-domain transfer of data
US9613208B1 (en) * 2013-03-13 2017-04-04 Sprint Communications Company L.P. Trusted security zone enhanced with trusted hardware drivers
US9049186B1 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone re-provisioning and re-use capability for refurbished mobile devices
US9049013B2 (en) 2013-03-14 2015-06-02 Sprint Communications Company L.P. Trusted security zone containers for the protection and confidentiality of trusted service manager data
US9021585B1 (en) 2013-03-15 2015-04-28 Sprint Communications Company L.P. JTAG fuse vulnerability determination and protection using a trusted execution environment
US8984592B1 (en) 2013-03-15 2015-03-17 Sprint Communications Company L.P. Enablement of a trusted security zone authentication for remote mobile device management systems and methods
US9191388B1 (en) 2013-03-15 2015-11-17 Sprint Communications Company L.P. Trusted security zone communication addressing on an electronic device
US9374363B1 (en) 2013-03-15 2016-06-21 Sprint Communications Company L.P. Restricting access of a portable communication device to confidential data or applications via a remote network based on event triggers generated by the portable communication device
US9454723B1 (en) 2013-04-04 2016-09-27 Sprint Communications Company L.P. Radio frequency identity (RFID) chip electrically and communicatively coupled to motherboard of mobile communication device
US9324016B1 (en) 2013-04-04 2016-04-26 Sprint Communications Company L.P. Digest of biographical information for an electronic device with static and dynamic portions
US9171243B1 (en) 2013-04-04 2015-10-27 Sprint Communications Company L.P. System for managing a digest of biographical information stored in a radio frequency identity chip coupled to a mobile communication device
US9838869B1 (en) 2013-04-10 2017-12-05 Sprint Communications Company L.P. Delivering digital content to a mobile device via a digital rights clearing house
US9443088B1 (en) 2013-04-15 2016-09-13 Sprint Communications Company L.P. Protection for multimedia files pre-downloaded to a mobile device
US9069952B1 (en) 2013-05-20 2015-06-30 Sprint Communications Company L.P. Method for enabling hardware assisted operating system region for safe execution of untrusted code using trusted transitional memory
US9560519B1 (en) 2013-06-06 2017-01-31 Sprint Communications Company L.P. Mobile communication device profound identity brokering framework
US9183606B1 (en) 2013-07-10 2015-11-10 Sprint Communications Company L.P. Trusted processing location within a graphics processing unit
US9208339B1 (en) 2013-08-12 2015-12-08 Sprint Communications Company L.P. Verifying Applications in Virtual Environments Using a Trusted Security Zone
WO2015030746A1 (en) * 2013-08-28 2015-03-05 Empire Technology Development, Llc Virtual machine exit analyzer
US9185626B1 (en) 2013-10-29 2015-11-10 Sprint Communications Company L.P. Secure peer-to-peer call forking facilitated by trusted 3rd party voice server provisioning
US10089474B2 (en) * 2013-10-29 2018-10-02 Hewlett Packard Enterprise Development Lp Virtual machine introspection
US9191522B1 (en) 2013-11-08 2015-11-17 Sprint Communications Company L.P. Billing varied service based on tier
US9161325B1 (en) 2013-11-20 2015-10-13 Sprint Communications Company L.P. Subscriber identity module virtualization
US9118655B1 (en) 2014-01-24 2015-08-25 Sprint Communications Company L.P. Trusted display and transmission of digital ticket documentation
US9733976B2 (en) * 2014-03-27 2017-08-15 Barkly Protects, Inc. Method and apparatus for SYSRET monitoring of system interactions
US10078752B2 (en) 2014-03-27 2018-09-18 Barkly Protects, Inc. Continuous malicious software identification through responsive machine learning
EP3123390A4 (en) * 2014-03-27 2017-10-25 Barkly Protects, Inc. Malicious software identification integrating behavioral analytics and hardware events
US9226145B1 (en) 2014-03-28 2015-12-29 Sprint Communications Company L.P. Verification of mobile device integrity during activation
US9973531B1 (en) * 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9230085B1 (en) 2014-07-29 2016-01-05 Sprint Communications Company L.P. Network based temporary trust extension to a remote or mobile device enabled via specialized cloud services
US20160062655A1 (en) * 2014-08-28 2016-03-03 Endgame, Inc. System and Method for Improved Memory Allocation in a Computer System
US9600664B1 (en) * 2014-09-03 2017-03-21 Amazon Technologies, Inc. Monitoring execution environments for approved configurations
EP3191943B1 (en) * 2014-09-10 2022-08-17 Irdeto B.V. Memory privilege of a computing system
US9860208B1 (en) 2014-09-30 2018-01-02 Palo Alto Networks, Inc. Bridging a virtual clone of a target device in a honey network to a suspicious device in an enterprise network
US9716727B1 (en) 2014-09-30 2017-07-25 Palo Alto Networks, Inc. Generating a honey network configuration to emulate a target network environment
US9882929B1 (en) 2014-09-30 2018-01-30 Palo Alto Networks, Inc. Dynamic selection and generation of a virtual clone for detonation of suspicious content within a honey network
US10044675B1 (en) 2014-09-30 2018-08-07 Palo Alto Networks, Inc. Integrating a honey network with a target network to counter IP and peer-checking evasion techniques
US9495188B1 (en) 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US9779232B1 (en) 2015-01-14 2017-10-03 Sprint Communications Company L.P. Trusted code generation and verification to prevent fraud from maleficent external devices that capture data
US9921979B2 (en) 2015-01-14 2018-03-20 Red Hat Israel, Ltd. Position dependent code in virtual machine functions
US9189630B1 (en) * 2015-01-21 2015-11-17 AO Kaspersky Lab Systems and methods for active operating system kernel protection
US9838868B1 (en) 2015-01-26 2017-12-05 Sprint Communications Company L.P. Mated universal serial bus (USB) wireless dongles configured with destination addresses
US9600190B2 (en) 2015-02-27 2017-03-21 Red Hat Israel, Ltd. Virtual machine functions for multiple privileged pages
US9473945B1 (en) 2015-04-07 2016-10-18 Sprint Communications Company L.P. Infrastructure for secure short message transmission
US10713334B1 (en) 2015-06-10 2020-07-14 EMC IP Holding Company LLC Data processing system with a scalable architecture over ethernet
US10515014B1 (en) 2015-06-10 2019-12-24 EMC IP Holding Company LLC Non-uniform memory access (NUMA) mechanism for accessing memory with cache coherence
US10496284B1 (en) * 2015-06-10 2019-12-03 EMC IP Holding Company LLC Software-implemented flash translation layer policies in a data processing system
US11010054B1 (en) 2015-06-10 2021-05-18 EMC IP Holding Company LLC Exabyte-scale data processing system
US10503416B1 (en) 2015-06-10 2019-12-10 EMC IP Holdings Company LLC Flash memory complex with a replication interface to replicate data to another flash memory complex of a data processing system
US10496626B2 (en) 2015-06-11 2019-12-03 EB Storage Systems Ltd. Deduplication in a highly-distributed shared topology with direct-memory-access capable interconnect
US10395029B1 (en) * 2015-06-30 2019-08-27 Fireeye, Inc. Virtual system and method with threat protection
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US9819679B1 (en) 2015-09-14 2017-11-14 Sprint Communications Company L.P. Hardware assisted provenance proof of named data networking associated to device data, addresses, services, and servers
RU2609761C1 (ru) * 2015-09-30 2017-02-02 Акционерное общество "Лаборатория Касперского" Способ выполнения кода в режиме гипервизора
US10281743B2 (en) 2015-10-01 2019-05-07 Verily Life Sciences Llc Eye convergence detection with contact lenses
US10222632B2 (en) 2015-10-01 2019-03-05 Verily Life Sciences Llc Lens-to-lens communication for contact lenses
KR102513961B1 (ko) * 2015-11-11 2023-03-27 삼성전자주식회사 멀티 운영시스템을 지닌 전자장치 및 이의 동적 메모리 관리 방법
US10282719B1 (en) 2015-11-12 2019-05-07 Sprint Communications Company L.P. Secure and trusted device-based billing and charging process using privilege for network proxy authentication and audit
US9817992B1 (en) 2015-11-20 2017-11-14 Sprint Communications Company Lp. System and method for secure USIM wireless network access
US9965313B2 (en) * 2016-01-05 2018-05-08 Bitdefender IPR Management Ltd. Systems and methods for auditing a virtual machine
US20210026950A1 (en) * 2016-03-07 2021-01-28 Crowdstrike, Inc. Hypervisor-based redirection of system calls and interrupt-based task offloading
US9842084B2 (en) 2016-04-05 2017-12-12 E8 Storage Systems Ltd. Write cache and write-hole recovery in distributed raid over shared multi-queue storage devices
US11379385B2 (en) * 2016-04-16 2022-07-05 Vmware, Inc. Techniques for protecting memory pages of a virtual computing instance
US10255088B2 (en) 2016-05-13 2019-04-09 Red Hat Israel, Ltd. Modification of write-protected memory using code patching
US10579421B2 (en) 2016-08-29 2020-03-03 TidalScale, Inc. Dynamic scheduling of virtual processors in a distributed system
KR101970176B1 (ko) * 2016-10-24 2019-04-17 주식회사 산엔지니어링 가상 플랫폼 기반의 통합 항해 시스템
US9798482B1 (en) * 2016-12-05 2017-10-24 Red Hat, Inc. Efficient and secure memory allocation in virtualized computer systems
US10635479B2 (en) * 2016-12-19 2020-04-28 Bitdefender IPR Management Ltd. Event filtering for virtual machine security applications
CN106844005B (zh) * 2016-12-29 2020-04-14 北京瑞星网安技术股份有限公司 基于虚拟化环境下的数据恢复方法及系统
US10031872B1 (en) * 2017-01-23 2018-07-24 E8 Storage Systems Ltd. Storage in multi-queue storage devices using queue multiplexing and access control
US10489185B2 (en) * 2017-03-17 2019-11-26 Nicira, Inc. Hypervisor-assisted approach for locating operating system data structures based on attribute matching
EP3379445B1 (en) 2017-03-22 2024-06-12 Diebold Nixdorf Systems GmbH System and method to generate encryption keys based on information of peripheral devices
US10579274B2 (en) 2017-06-27 2020-03-03 TidalScale, Inc. Hierarchical stalling strategies for handling stalling events in a virtualized environment
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10499249B1 (en) 2017-07-11 2019-12-03 Sprint Communications Company L.P. Data link layer trust signaling in communication network
US10742491B2 (en) 2017-07-20 2020-08-11 Vmware, Inc. Reducing initial network launch time of container applications
US10579439B2 (en) 2017-08-29 2020-03-03 Red Hat, Inc. Batched storage hinting with fast guest storage allocation
US10817347B2 (en) 2017-08-31 2020-10-27 TidalScale, Inc. Entanglement of pages and guest threads
US10956216B2 (en) 2017-08-31 2021-03-23 Red Hat, Inc. Free page hinting with multiple page sizes
US10685010B2 (en) 2017-09-11 2020-06-16 Amazon Technologies, Inc. Shared volumes in distributed RAID over shared multi-queue storage devices
US10565376B1 (en) 2017-09-11 2020-02-18 Palo Alto Networks, Inc. Efficient program deobfuscation through system API instrumentation
US10474382B2 (en) 2017-12-01 2019-11-12 Red Hat, Inc. Fast virtual machine storage allocation with encrypted storage
US10970390B2 (en) 2018-02-15 2021-04-06 Intel Corporation Mechanism to prevent software side channels
US10922096B2 (en) * 2018-02-28 2021-02-16 Vmware, Inc. Reducing subsequent network launch time of container applications
EP3814913A1 (en) * 2018-08-08 2021-05-05 Huawei Technologies Co., Ltd. Apparatus and method for providing one time programmable memory features in a hypervisor of a computing device
US20200409740A1 (en) * 2019-06-27 2020-12-31 Shih-Wei Li Systems, methods, and media for trusted hypervisors
US11436141B2 (en) 2019-12-13 2022-09-06 Red Hat, Inc. Free memory page hinting by virtual machines
US11265346B2 (en) 2019-12-19 2022-03-01 Palo Alto Networks, Inc. Large scale high-interactive honeypot farm
US11271907B2 (en) 2019-12-19 2022-03-08 Palo Alto Networks, Inc. Smart proxy for a large scale high-interaction honeypot farm
KR102370848B1 (ko) * 2020-11-17 2022-03-07 주식회사 시큐브 분할된 보안 모듈을 구비하는 컴퓨터 장치 및 보안 모듈 업데이트 방법
WO2023069166A1 (en) * 2021-10-21 2023-04-27 Microsoft Technology Licensing, Llc Securely redirecting system service routines
US12086237B2 (en) 2021-10-21 2024-09-10 Microsoft Technology Licensing, Llc Securely redirecting system service routines

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070055837A1 (en) * 2005-09-06 2007-03-08 Intel Corporation Memory protection within a virtual partition
US20090307705A1 (en) * 2008-06-05 2009-12-10 Neocleus Israel Ltd Secure multi-purpose computing client
RU2406138C1 (ru) * 2009-06-18 2010-12-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Система безопасности виртуализованной компьютерной системы
US20120254993A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US20120254864A1 (en) * 2011-03-31 2012-10-04 Bork Jon E Method, apparatus and system for limiting access to virtualization information in a memory

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6851057B1 (en) * 1999-11-30 2005-02-01 Symantec Corporation Data driven detection of viruses
US6779099B2 (en) * 2001-07-20 2004-08-17 Chien-Tzu Hou Operation method for controlling access attributes of a memorized page of a memory unit and its structure
KR101044173B1 (ko) * 2003-03-06 2011-06-24 마이크로소프트 코포레이션 분산형 컴퓨팅 시스템상에서 분산형 애플리케이션들을 설계, 배포 및 관리하기 위한 방법 및 장치, 자원 관리자 및 컴퓨터 판독가능 기록 매체
WO2006012058A1 (en) * 2004-06-28 2006-02-02 Japan Communications, Inc. Systems and methods for mutual authentication of network
US7277999B1 (en) 2004-08-12 2007-10-02 Vmware, Inc. Restricting memory access to protect data when sharing a common address space
US7836504B2 (en) * 2005-03-01 2010-11-16 Microsoft Corporation On-access scan of memory for malware
US20070067590A1 (en) * 2005-09-22 2007-03-22 Uday Savagaonkar Providing protected access to critical memory regions
GB0525871D0 (en) * 2005-12-20 2006-02-01 Symbian Software Ltd Malicious software detecting in a computing device
US20140373144A9 (en) * 2006-05-22 2014-12-18 Alen Capalik System and method for analyzing unauthorized intrusion into a computer network
US7822941B2 (en) 2006-06-05 2010-10-26 Oracle America, Inc. Function-based virtual-to-physical address translation
US20080320594A1 (en) * 2007-03-19 2008-12-25 Xuxian Jiang Malware Detector
US7657695B1 (en) 2007-05-30 2010-02-02 Paravirtual Corporation Efficient processing of memory accesses to virtual hardware using runtime code patching
US7797748B2 (en) * 2007-12-12 2010-09-14 Vmware, Inc. On-access anti-virus mechanism for virtual machine architecture
US8510828B1 (en) * 2007-12-31 2013-08-13 Symantec Corporation Enforcing the execution exception to prevent packers from evading the scanning of dynamically created code
US8839237B2 (en) * 2007-12-31 2014-09-16 Intel Corporation Method and apparatus for tamper resistant communication in a virtualization enabled platform
US8104089B1 (en) * 2007-12-31 2012-01-24 Symantec Corporation Tracking memory mapping to prevent packers from evading the scanning of dynamically created code
JP4783392B2 (ja) * 2008-03-31 2011-09-28 株式会社東芝 情報処理装置および障害回復方法
US8381288B2 (en) * 2008-09-30 2013-02-19 Intel Corporation Restricted component access to application memory
US8397242B1 (en) * 2009-06-30 2013-03-12 Symantec Corporation System and method for managing operations within virtual machines
US8838913B1 (en) * 2009-09-15 2014-09-16 Symantec Corporation System and method for locating a memory page in a guest virtual machine
US8327059B2 (en) 2009-09-30 2012-12-04 Vmware, Inc. System and method to enhance memory protection for programs in a virtual machine environment
US8209510B1 (en) 2010-01-13 2012-06-26 Juniper Networks, Inc. Secure pool memory management
US8474039B2 (en) * 2010-01-27 2013-06-25 Mcafee, Inc. System and method for proactive detection and repair of malware memory infection via a remote memory reputation system
US20120240224A1 (en) * 2010-09-14 2012-09-20 Georgia Tech Research Corporation Security systems and methods for distinguishing user-intended traffic from malicious traffic
EP2622525A1 (en) * 2010-09-30 2013-08-07 Hewlett-Packard Development Company, L.P. Virtual machines for virus scanning
KR101213572B1 (ko) * 2010-12-03 2012-12-18 한국과학기술원 하이퍼바이저를 활용한 사용자 어플리케이션 메모리 보호방법
US8490090B2 (en) * 2011-02-17 2013-07-16 International Business Machines Corporation Multilevel support in a nested virtualization environment
JP5981845B2 (ja) 2011-03-02 2016-08-31 パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカPanasonic Intellectual Property Corporation of America 仮想計算機システム、仮想計算機制御方法、仮想計算機制御プログラム、及び半導体集積回路
US8307169B2 (en) 2011-03-10 2012-11-06 Safenet, Inc. Protecting guest virtual machine memory
US20140053272A1 (en) * 2012-08-20 2014-02-20 Sandor Lukacs Multilevel Introspection of Nested Virtual Machines
US8656482B1 (en) * 2012-08-20 2014-02-18 Bitdefender IPR Management Ltd. Secure communication using a trusted virtual machine
US9043653B2 (en) * 2012-08-31 2015-05-26 International Business Machines Corporation Introspection of software program components and conditional generation of memory dump
US8910238B2 (en) * 2012-11-13 2014-12-09 Bitdefender IPR Management Ltd. Hypervisor-based enterprise endpoint protection
US10572665B2 (en) * 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US20140259169A1 (en) * 2013-03-11 2014-09-11 Hewlett-Packard Development Company, L.P. Virtual machines

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070055837A1 (en) * 2005-09-06 2007-03-08 Intel Corporation Memory protection within a virtual partition
US20090307705A1 (en) * 2008-06-05 2009-12-10 Neocleus Israel Ltd Secure multi-purpose computing client
RU2406138C1 (ru) * 2009-06-18 2010-12-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Система безопасности виртуализованной компьютерной системы
US20120254993A1 (en) * 2011-03-28 2012-10-04 Mcafee, Inc. System and method for virtual machine monitor based anti-malware security
US20120254864A1 (en) * 2011-03-31 2012-10-04 Bork Jon E Method, apparatus and system for limiting access to virtualization information in a memory

Also Published As

Publication number Publication date
SG11201505931RA (en) 2015-09-29
US20140245444A1 (en) 2014-08-28
WO2014129918A1 (en) 2014-08-28
JP6218859B2 (ja) 2017-10-25
ES2873229T3 (es) 2021-11-03
CN105190570A (zh) 2015-12-23
IL239855A0 (en) 2015-08-31
AU2014219466A1 (en) 2015-08-06
CN105190570B (zh) 2018-02-13
CA2897747A1 (en) 2014-08-28
HK1214663A1 (zh) 2016-07-29
EP2959392A1 (en) 2015-12-30
CA2897747C (en) 2019-12-31
KR101863174B1 (ko) 2018-05-31
RU2015135541A (ru) 2017-03-30
AU2014219466B2 (en) 2018-11-22
US8875295B2 (en) 2014-10-28
IL239855B (en) 2018-07-31
EP2959392B1 (en) 2021-03-31
JP2016511903A (ja) 2016-04-21
KR20150118957A (ko) 2015-10-23

Similar Documents

Publication Publication Date Title
RU2640300C2 (ru) Движок интроспекции памяти для защиты целостности виртуальных машин
US10296470B2 (en) Systems and methods for dynamically protecting a stack from below the operating system
US9507727B2 (en) Page fault injection in virtual machines
US9117081B2 (en) Strongly isolated malware scanning using secure virtual containers
KR102255767B1 (ko) 가상 머신 감사를 위한 시스템 및 방법들
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
KR102189296B1 (ko) 가상 머신 보안 어플리케이션을 위한 이벤트 필터링
RU2462747C2 (ru) Защита ресурсов операционной системы
KR20160030385A (ko) 가상 머신에서 멀웨어 탐지를 위한 프로세스 평가
US10620985B2 (en) Transparent code patching using a hypervisor
US10489185B2 (en) Hypervisor-assisted approach for locating operating system data structures based on attribute matching
US20150379265A1 (en) Systems And Methods For Preventing Code Injection In Virtualized Environments
US20180267818A1 (en) Hypervisor-assisted approach for locating operating system data structures based on notification data
EP3308274B1 (en) Executing services in containers

Legal Events

Date Code Title Description
PD4A Correction of name of patent owner