RU2609761C1 - Method for code performance in hypervisor mode - Google Patents

Method for code performance in hypervisor mode Download PDF

Info

Publication number
RU2609761C1
RU2609761C1 RU2015141548A RU2015141548A RU2609761C1 RU 2609761 C1 RU2609761 C1 RU 2609761C1 RU 2015141548 A RU2015141548 A RU 2015141548A RU 2015141548 A RU2015141548 A RU 2015141548A RU 2609761 C1 RU2609761 C1 RU 2609761C1
Authority
RU
Russia
Prior art keywords
hypervisor
code
memory
key
trusted module
Prior art date
Application number
RU2015141548A
Other languages
Russian (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 Акционерное общество "Лаборатория Касперского"
Priority to RU2015141548A priority Critical patent/RU2609761C1/en
Application granted granted Critical
Publication of RU2609761C1 publication Critical patent/RU2609761C1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/575Secure boot
    • 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/4401Bootstrapping
    • 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/45587Isolation or security of virtual machine instances

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)

Abstract

FIELD: physics, computer engineering.
SUBSTANCE: invention refers to the field of computer security. The method is proposed, including hypervisor code loading to the random-access memory prior to operating system booting; a trusted module to call the hypervisor code execution is loaded to RAM during operating system booting; the first request to the hypervisor from the trusted module in order to obtain the hypervisor address in RAM is sent; a cryptographic key is generated using the hypervisor; the specified key is saved in the hypervisor memory; a memory page is allocated; the specified key and hypervisor address in RAM are recorded in the selected memory page; protection for the allocated memory page is set; a request to the hypervisor at the address recorded in the page selected in step g) is sent from the trusted module in order to call hypervisor code execution, at that, the request contains the key, recorded in the allocated page; the key is checked by means of the hypervisor by comparing the key transmitted in the request sent to the hypervisor from the trusted module to the key stored in the hypervisor memory; if the result is positive, the code is executed in the hypervisor mode.
EFFECT: code execution is provided in the hypervisor mode.
5 dwg

Description

Область техникиTechnical field

Изобретение относится к антивирусным технологиям, а более конкретно к системам и способам обеспечения выполнения кода в режиме гипервизора.The invention relates to antivirus technologies, and more particularly to systems and methods for ensuring the execution of code in hypervisor mode.

Уровень техникиState of the art

В настоящее время компьютерные угрозы (такие как троянские программы, вирусы, черви) развиваются все более стремительно и используют все большее количество способов обхода антивирусных приложений. Один из таких способов заключается в сокрытии определенных ресурсов компьютерной системы (например, файлов или веток реестра) от антивирусного приложения, которое производит антивирусную проверку. По классификации антивирусных компаний, вредоносные программы, которые используют подобный способ, называют руткитами или использующими руткит-технологии. Руткит-технологии оказываются еще более опасными в том случае, если удается использовать уязвимости в компонентах операционной системы (ОС), которые работают на уровне ядра (англ. kernel level). Это не позволяет современным антивирусным приложениям обнаружить вредоносные программы, которые используют подобные технологии.Currently, computer threats (such as Trojans, viruses, worms) are developing more rapidly and are using an increasing number of ways to bypass anti-virus applications. One of these methods is to hide certain resources of a computer system (for example, files or registry branches) from an anti-virus application that performs anti-virus scanning. According to the classification of antivirus companies, malicious programs that use this method are called rootkits or using rootkit technology. Rootkit technologies turn out to be even more dangerous if it is possible to exploit vulnerabilities in components of the operating system (OS) that operate at the kernel level (English kernel level). This prevents modern anti-virus applications from detecting malicious programs that use similar technologies.

Один из выходов в сложившейся ситуации заключается в использовании гипервизора, который обеспечивает изоляцию операционных систем друг от друга, разделение ресурсов между различными запущенными ОС и управление ресурсами. В то же время исполнение кода в режиме гипервизора осуществляется даже на более низком уровне, нежели выполнение кода на уровне ядра. Неудивительно, что подобным подходом заинтересовались компании, которые производят антивирусные приложения. Патентная заявка US 20140053272 описывает выполнение кода в режиме гипервизора для контроля изменений памяти, которые могут быть внесены вредоносным кодом.One of the solutions in this situation is to use a hypervisor that isolates operating systems from each other, shares resources between different running operating systems, and manages resources. At the same time, code execution in hypervisor mode is carried out even at a lower level than code execution at the kernel level. It is not surprising that companies that produce anti-virus applications are interested in this approach. Patent application US 20140053272 describes the execution of code in hypervisor mode to control memory changes that could be introduced by malicious code.

Однако указанная публикация не раскрывает решения проблемы, связанной с обеспечением целостности подобного решения в целом, так как существуют угрозы (вредоносные приложения), позволяющие получить доступ к коду, работающему в режиме гипервизора.However, this publication does not disclose a solution to the problem of ensuring the integrity of such a solution as a whole, since there are threats (malicious applications) that allow access to the code working in hypervisor mode.

Анализ предшествующего уровня техники позволяет сделать вывод о неэффективности и в некоторых случаях о невозможности применения предшествующих технологий, недостатки которых решаются настоящим изобретением, а именно системой и способом вызова выполнения кода в режиме гипервизора.An analysis of the prior art allows us to conclude about the inefficiency and, in some cases, the impossibility of applying previous technologies, the disadvantages of which are solved by the present invention, namely, the system and method for invoking code execution in hypervisor mode.

Раскрытие изобретенияDisclosure of invention

Технический результат настоящего изобретения заключается в обеспечении выполнения кода в режиме гипервизора. Данный технический результат достигается с помощью способа выполнения кода в режиме гипервизора, в котором загружают в оперативную память код гипервизора до загрузки операционной системы; загружают в оперативную память доверенный модуль во время загрузки операционной системы, при этом доверенный модуль является приложением, работающим в операционной системе, и предназначен для вызова выполнения кода гипервизора; совершают первый запрос к гипервизору со стороны доверенного модуля с целью получения адреса гипервизора в оперативной памяти; генерируют криптографический ключ с помощью гипервизора; сохраняют указанный ключ в памяти гипервизора; выделяют страницу оперативной памяти; записывают в выделенную страницу оперативной памяти указанный ключ и адрес гипервизора в оперативной памяти; устанавливают защиту для выделенной страницы памяти; совершают запрос к гипервизору по адресу, записанному в выделенной странице, со стороны доверенного модуля для вызова выполнения кода гипервизора, при этом запрос включает в себя ключ, записанный в выделенной странице; проверяют ключ с помощью гипервизора, путем сравнения криптографического ключа, переданного в запросе к гипервизору со стороны доверенного модуля, с криптографическим ключом в памяти гипервизора; при положительном результате проверки выполняют код гипервизора в режиме гипервизора.The technical result of the present invention is to ensure that the code runs in hypervisor mode. This technical result is achieved using the method of executing the code in the hypervisor mode, in which the hypervisor code is loaded into the RAM before the operating system loads; load the trusted module into RAM during the boot of the operating system, while the trusted module is an application that runs on the operating system and is designed to invoke the execution of the hypervisor code; make the first request to the hypervisor from the trusted module in order to obtain the address of the hypervisor in RAM; generating a cryptographic key using a hypervisor; save the specified key in the memory of the hypervisor; allocate a page of RAM; write the specified key and the address of the hypervisor in the random access memory into a dedicated page of the RAM; set protection for the selected memory page; make a request to the hypervisor at the address recorded in the dedicated page from the trusted module to call the execution of the hypervisor code, the request includes a key recorded in the selected page; verify the key with the hypervisor by comparing the cryptographic key transmitted in the request to the hypervisor from the trusted module with the cryptographic key in the memory of the hypervisor; if the test result is positive, the hypervisor code is executed in the hypervisor mode.

Согласно одному из вариантов реализации страницу памяти выделяет гипервизор.According to one embodiment, the hypervisor allocates a memory page.

Согласно еще одному варианту реализации страницу памяти выделяет доверенный модуль.In yet another embodiment, a trusted module allocates a memory page.

Согласно другому варианту реализации защита памяти включает бит только для исполнения, при установке которого страница не может быть перезаписана.According to another embodiment, the memory protection includes an execution-only bit, upon installation of which the page cannot be rewritten.

Согласно одному из вариантов реализации защиту для выделенной страницы памяти устанавливает доверенный модуль.According to one embodiment, the protection for the allocated memory page is set by a trusted module.

Согласно еще одному варианту реализации защиту для выделенной страницы памяти устанавливает гипервизор.In yet another embodiment, the hypervisor sets protection for the allocated memory page.

Краткое описание чертежейBrief Description of the Drawings

Дополнительные цели, признаки и преимущества настоящего изобретения будут очевидными из прочтения последующего описания осуществления изобретения со ссылкой на прилагаемые чертежи, на которых:Additional objectives, features and advantages of the present invention will be apparent from reading the following description of an embodiment of the invention with reference to the accompanying drawings, in which:

Фиг. 1 приводит пример системы, в которой реализован механизм доверенного вызова кода в режиме гипервизора.FIG. 1 gives an example of a system in which a mechanism for trusted code invocation in hypervisor mode is implemented.

Фиг. 2 иллюстрирует вариант предоставления адреса вызова гипервизора для доверенного модуля.FIG. 2 illustrates an embodiment of providing a hypervisor call address for a trusted module.

Фиг. 3 показывает пример страницы памяти, где хранится адрес гипервизора для вызова со стороны доверенного модуля.FIG. Figure 3 shows an example of a memory page where the address of the hypervisor for calling from the trusted module is stored.

Фиг. 4 иллюстрирует способ защиты страниц памяти с использованием гипервизора.FIG. 4 illustrates a method for protecting memory pages using a hypervisor.

Фиг. 5 показывает пример компьютерной системы общего назначения, с помощью которой может быть реализовано настоящее изобретение.FIG. 5 shows an example of a general purpose computer system with which the present invention can be implemented.

Описание вариантов осуществления изобретенияDescription of Embodiments

Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.The objects and features of the present invention, methods for achieving these objects and features will become apparent by reference to exemplary embodiments. However, the present invention is not limited to the exemplary embodiments disclosed below, it can be embodied in various forms. The essence described in the description is nothing more than the specific details necessary to assist the specialist in the field of technology in a comprehensive understanding of the invention, and the present invention is defined in the scope of the attached claims.

Введем несколько обозначений, которые будут использоваться в рамках настоящего описания.We introduce several notation that will be used in the framework of the present description.

Гипервизор-программа, обеспечивающая одновременное, параллельное выполнение нескольких операционных систем (ОС) на одном и том же компьютере. Гипервизоры бывают двух типов - первый имеет свои встроенные драйверы устройств, планировщик и поэтому не зависит от какой-либо ОС, в то время как второй тип работает в одном кольце с ядром основной ОС (kernel mode или нулевое кольцо, англ. ring 0). Первый тип гипервизоров также называется bare-metal и является предпочтительным вариантом реализации гипервизора в настоящем изобретении. Выполнение кода в режиме гипервизора происходит на еще более низком уровне, нежели выполнение кода в режиме ядра (kernel mode или ring 0).A hypervisor program that provides simultaneous, parallel execution of several operating systems (OS) on the same computer. There are two types of hypervisors - the first has its own built-in device drivers, a scheduler, and therefore does not depend on any OS, while the second type works in the same ring with the core of the main OS (kernel mode or zero ring, English ring 0). The first type of hypervisor is also called bare-metal and is the preferred embodiment of the hypervisor in the present invention. Code execution in hypervisor mode occurs at an even lower level than code execution in kernel mode (kernel mode or ring 0).

Вызов кода, исполняющегося в режиме гипервизора (гипервызов) - переход к исполнению кода в режиме гипервизора (другое определение - исполнение), что требует аппаратной поддержки технологии виртуализации со стороны процессора.Calling code executing in hypervisor mode (hypercall) - switching to code execution in hypervisor mode (another definition is execution), which requires hardware support for virtualization technology from the processor.

Доверенная ОС - операционная система, использующая достаточные аппаратные и программные средства, чтобы обеспечить одновременную обработку информации разной степени секретности группой пользователей без нарушения прав доступа. Грубо говоря, доверенная ОС позволяет обеспечить конфиденциальность и целостность пользовательских данных. Более подробно с описанием доверенных систем можно ознакомиться в А Guide to Understanding Configuration Management in Trusted Systems (1988).A trusted OS is an operating system that uses sufficient hardware and software to provide simultaneous processing of information of varying degrees of secrecy by a group of users without violating access rights. Roughly speaking, a trusted OS allows for the confidentiality and integrity of user data. For a more detailed description of trusted systems, see A Guide to Understanding Configuration Management in Trusted Systems (1988).

Доверенный вызов кода - вызов стороннего кода, во время которого гарантируется, что вызов производится из доверенного источника (страница памяти, которая принадлежит процессу доверенного приложения), что исключает возможность вызова стороннего кода со стороны вредоносных или недоверенных программ. Доверенным приложением является приложение, чей исполняемый файл обладает цифровой подписью и который не является вредоносным.Trusted code call - a third-party code call during which it is guaranteed that the call is made from a trusted source (a memory page that belongs to the trusted application process), which eliminates the possibility of calling third-party code from malicious or untrusted programs. A trusted application is an application whose executable file is digitally signed and which is not malicious.

На Фиг. 1 приведен пример системы, в которой реализован механизм доверенного вызова кода в режиме гипервизора. В операционной системе 110 работают различные приложения 130, доверенный модуль 150, а также может находиться вредоносная программа 140. Приложения 130 включают различные пользовательские приложения, такие как браузер, текстовый редактор и другие. Вредоносная программа 140 может использовать различные способы сокрытия своего присутствия в операционной системе (руткит-технологии, англ. rootkit), что позволяет избежать обнаружения со стороны антивирусных приложений (не отображены на Фиг. 1, могут входить в состав приложений 130). Данный факт не позволяет считать ОС 110 доверенной и ставит под угрозу пользовательские данные. Про способы сокрытия присутствия вредоносных программ в операционной системе можно прочитать в различных источниках, например http://www.z-oleg.com/secur/articles/rootkit.php.In FIG. Figure 1 shows an example of a system that implements a mechanism for trusted code invocation in hypervisor mode. Various applications 130, trusted module 150 work in operating system 110, and malware 140 may also be located. Applications 130 include various user applications, such as a browser, text editor, and others. Malicious program 140 can use various methods of hiding its presence in the operating system (rootkit technology, English rootkit), which avoids detection by antivirus applications (not shown in Fig. 1, can be part of applications 130). This fact does not allow OS 110 to be trusted and jeopardizes user data. You can read about ways to hide the presence of malware in the operating system in various sources, for example, http://www.z-oleg.com/secur/articles/rootkit.php.

С целью обнаружить присутствие вредоносной программы 140, а также предотвратить возможность доступа со стороны вредоносной программы 140 к пользовательской информации, используется доверенный модуль 150 и гипервизор 120. Доверенный модуль 150 может быть выполнен как в виде отдельного приложения, так и в виде части антивирусной программы. Ключевой особенностью доверенного модуля 150 является его возможность производить вызовы выполнения кода гипервизора 120. Как уже отмечалось выше, выполнение кода в режиме гипервизора происходит на еще более низком уровне, нежели выполнение кода в режиме ядра, что позволяет игнорировать возможные руткит-технологии, используемые вредоносной программой 140. Код, который выполняется в режиме ядра (ring 0), не обладает возможностью доступа к коду, который будет выполняться в режиме гипервизора. Таким же образом, код выполняемый в режиме пользователя (ring 3 или user mode) не имеет доступа к коду, который выполняется в режиме ядра. Более подробно про кольца защиты можно посмотреть в различных публикациях, таких как Russinovich, Mark Е.; David A. Solomon (2005). Microsoft Windows Internals (4 ed.). Microsoft Press. Дополнительно отметим, что выполнение кода в ring 0 также называется выполнением на уровне ядра, а выполнение кода в ring 3 - выполнение на уровне пользователя.In order to detect the presence of malicious program 140, as well as to prevent the malicious program 140 from accessing user information, the trusted module 150 and the hypervisor 120 are used. The trusted module 150 can be executed either as a standalone application or as part of an anti-virus program. A key feature of trusted module 150 is its ability to make calls to execute hypervisor code 120. As noted above, code execution in hypervisor mode is even lower than code execution in kernel mode, which allows you to ignore possible rootkits used by the malware 140. Code that runs in kernel mode (ring 0) does not have the ability to access code that runs in hypervisor mode. In the same way, code executed in user mode (ring 3 or user mode) does not have access to code that runs in kernel mode. More details about protection rings can be found in various publications, such as Russinovich, Mark E .; David A. Solomon (2005). Microsoft Windows Internals (4 ed.). Microsoft Press. Additionally, note that code execution in ring 0 is also called kernel-level execution, and code execution in ring 3 is user-level execution.

Как уже отмечалось, доверенный модуль 150 производит вызовы выполнения кода гипервизора 150 (чей код будет выполнятся в режиме гипервизора), т.е. производит гипервызов. В рамках настоящего описания предполагается, что ОС 110 изначально является доверенной, но вредоносная программа 140 компрометирует доверенность ОС. Также подразумевается, что вредоносная программа 140 обладает сложной логикой (например, руткит-функционалом), что позволяет избежать ее обнаружения со стороны антивирусного приложения, установленного в ОС 110 (не отображено на Фиг. 1). Таким образом, требуется обеспечить защиту нужной пользователю информации от вредоносной программы 140.As already noted, the trusted module 150 makes calls to execute the code of the hypervisor 150 (whose code will be executed in hypervisor mode), i.e. makes hypercalls. In the framework of the present description, it is assumed that the OS 110 is initially trusted, but the malware 140 compromises the OS's power of attorney. It is also understood that the malware 140 has complex logic (for example, rootkit functionality), which avoids its detection by the anti-virus application installed in OS 110 (not shown in Fig. 1). Thus, it is required to ensure the protection of the user information from malware 140.

В рамках современных ОС информацию можно защитить несколькими способами: использовать шифрование, контролировать доступ к носителям информации, обеспечить защиту виртуальной памяти тех процессов, которые работают с этой информацией. Технологии, направленные на шифрование и контроль доступа к носителям данных (как правило, это технологии предотвращения утечки данных, англ. Data Leak Prevention) не относятся к настоящей технологии, в настоящем изобретении рассматривается защита виртуальной памяти процессов.Within the framework of modern operating systems, information can be protected in several ways: use encryption, control access to storage media, and protect the virtual memory of those processes that work with this information. Technologies aimed at encrypting and controlling access to storage media (as a rule, these are technologies for preventing data leakage, the English Data Leak Prevention) do not belong to this technology, the present invention addresses the protection of virtual memory of processes.

Сам способ защиты виртуальной памяти процессов ненов. Например, NX-бит позволяет установить бит запрета исполнения для страницы памяти, для реализации возможности предотвращения выполнения данных как исполняемого кода. В патенте US 8990934 описана возможность контроля взаимоисключающей установки битов исполнения и записи для страницы памяти с целью предотвращения записи и выполнения эксплойта (англ. exploit).The very method of protecting virtual memory of nen processes. For example, the NX-bit allows you to set the execution inhibit bit for the memory page, to realize the possibility of preventing the execution of data as executable code. In the patent US 8990934 describes the ability to control the mutually exclusive setting of the execution and recording bits for the memory page in order to prevent recording and exploit execution (English exploit).

Однако указанные технологии имеют недостаток, связанный с тем, что они работают на уровне ядра ОС, что оставляет возможность для выполнения вредоносного кода на этом же уровне привилегий, но с более ранним началом работы во время старта (инициализации) ОС после включения компьютера. Такой вредоносный код может отключать или даже хуже - контролировать описанные выше алгоритмы защиты памяти, что опять же не позволяет защитить информацию пользователя в таких случаях. Более подробно про старт (инициализацию) ОС после включения компьютера можно посмотреть в различных публикациях, таких как Russinovich, Mark Е.; David A. Solomon (2005). Microsoft Windows Internals (4 ed.). Microsoft Press.However, these technologies have the disadvantage that they work at the kernel level of the OS, which leaves it possible to execute malicious code at the same privilege level, but with an earlier start of work during the OS startup (initialization) after turning on the computer. Such malicious code can disable, or even worse, control the memory protection algorithms described above, which again does not allow protecting user information in such cases. For more information about the OS start (initialization) after turning on the computer, see various publications, such as Russinovich, Mark E .; David A. Solomon (2005). Microsoft Windows Internals (4 ed.). Microsoft Press.

Как уже отмечалось выше (патентная заявка US 20140053272), выполнение кода в режиме гипервизора позволяет контролировать изменения памяти со стороны вредоносного кода, даже если последний выполняется в режиме ядра. Однако для вызова выполнения кода в режиме гипервизора - выполнения гипервызовов - требуется отдельное приложение, код которого будет производить подобные гипервызовы. В настоящем изобретении таким приложением является доверенный модуль 150. В одном из вариантов реализации доверенным модулем 150 может быть антивирус.As noted above (patent application US 20140053272), code execution in hypervisor mode allows you to control memory changes by malicious code, even if the latter is executed in kernel mode. However, to call code execution in hypervisor mode — to make hypercalls — a separate application is required, the code of which will make such hypercalls. In the present invention, such an application is a trusted module 150. In one embodiment, the trusted module 150 may be an antivirus.

Важно отметить, что код в режиме гипервизора 120 в виде монолитного участка кода, в котором будут содержаться проверки страниц виртуальной памяти процессов, запущенных в ОС 110, сделать очень сложно по нескольким причинам:It is important to note that code in hypervisor mode 120 in the form of a monolithic section of code that will contain checks of the virtual memory pages of processes running in OS 110 is very difficult to do for several reasons:

- код гипервизора оказывается "перегружен" (оказывается слишком сложным для написания и отладки), он начинает потреблять слишком много системных ресурсов, в частности, процессорного времени;- the hypervisor code is "overloaded" (it turns out to be too complicated for writing and debugging), it begins to consume too many system resources, in particular, processor time;

- код гипервизора работает слишком "низко", т.е. он не "знает" механизм работы ОС, который работает "выше" гипервизора, подобная проблема характерна для bare-metal гипервизоров.- The hypervisor code is too "low", i.e. he doesn’t “know” the OS operating mechanism that works “above” the hypervisor, a similar problem is typical for bare-metal hypervisors.

Становится ясно, что требуется вынести часть настоящего изобретения в доверенный модуль 150, оставив в гипервизоре 120 лишь функционал проверки страниц памяти. Доверенный модуль 150 должен быть реализован с учетом специфики реализации ОС 110 (например, с учетом страничной организации памяти ОС Windows), позволяя сделать сам гипервизор 120 кроссплатформенным.It becomes clear that it is necessary to transfer part of the present invention to the trusted module 150, leaving only the function of checking memory pages in the hypervisor 120. The trusted module 150 should be implemented taking into account the specifics of the implementation of OS 110 (for example, taking into account the page organization of the memory of the Windows OS), allowing the hypervisor 120 to be cross-platform.

Основой настоящего изобретения является защищенный канал связи между доверенным модулем 150 и гипервизором 120. Для обеспечения подобного канала связи необходимо, чтобы только доверенный модуль 150 мог произвести вызов кода гипервизора 120 (гипервызов). Учитывая, что код гипервизора 120 хранится в оперативной памяти, требуется обеспечить конфиденциальность адреса, по которому данный код вызывается.The basis of the present invention is a secure communication channel between the trusted module 150 and the hypervisor 120. To provide such a communication channel, it is necessary that only the trusted module 150 can call the code of the hypervisor 120 (hyper call). Given that the code of the hypervisor 120 is stored in RAM, it is required to ensure the confidentiality of the address at which this code is called.

Фиг. 2 иллюстрирует вариант предоставления адреса вызова гипервизора 120 для доверенного модуля 150. На этапе 205 сразу после старта компьютерной системы происходит загрузка гипервизора 120 еще до инициализации ОС 110. Как правило, гипервизоры типа bare-metal инициализируются до старта гостевых ОС. Под гостевой ОС подразумевается любая ОС, которая запускается после инициализации гипервизора - в данном случае это ОС 110. На этапе 207 происходит загрузка доверенного модуля 150, который как правило реализован в виде драйвера ОС 110 и загружается как можно раньше. Такое требование необходимо для того, чтобы на этапе 207 ОС 110 считалась еще доверенной, так как ранний старт доверенного модуля 150 позволяет запустить его до того, как будет запущена вредоносная программа 140. На этапе 210 доверенный модуль 150 производит первый вызов кода гипервизора 120 (гипервызов), после которого возвращается адрес гипервизора 120 в памяти (так называемый адрес безопасного гипервызова). Далее следует этот адрес защитить от несанкционированного доступа, для чего на этапе 220 выделяется страница памяти 300, чья структура приведена на Фиг. 3. Сама страница памяти состоит из набора адресов в памяти, по которым будет производится вызов кода. В рамках настоящей реализации только один вызов приведет непосредственно к гипервызову, в то время как остальные вызовут исключение (англ. exception) и ошибку в работе ОС 110 с последующей перезагрузкой. Данная страница памяти 300 выделяется либо доверенным модулем 150, либо непосредственно гипервизором 120 при его первом вызове. Заполнение страницы кодом с вызовами производит гипервизор 150 на этапе 230. Страница памяти дополнительно защищается - на нее устанавливается (либо доверенным модулем 150, либо гипервизором 120) бит только для исполнения, что происходит на этапе 240, при установке которого страница не может быть перезаписана.FIG. 2 illustrates the option of providing the call address of the hypervisor 120 for the trusted module 150. At step 205, immediately after the start of the computer system, the hypervisor 120 is loaded before the OS 110 is initialized. As a rule, bare-metal hypervisors are initialized before the guest OS starts. A guest OS means any OS that starts after the initialization of the hypervisor — in this case, OS 110. At step 207, the trusted module 150 is loaded, which is usually implemented as an OS 110 driver and is loaded as soon as possible. Such a requirement is necessary so that at step 207 OS 110 is still trusted, since the early start of trusted module 150 allows it to be launched before malicious program 140 is launched. At step 210, trusted module 150 makes the first call to hypervisor 120 (hypercall) ), after which the address of the hypervisor 120 is returned in memory (the so-called address of the safe hyper-call). Next, this address should be protected from unauthorized access, for which, at step 220, a memory page 300 is allocated, whose structure is shown in FIG. 3. The memory page itself consists of a set of addresses in memory at which the code will be called. In the framework of this implementation, only one call will directly lead to a hypercall, while the rest will cause an exception (English exception) and an error in the operation of OS 110 with subsequent reboot. This memory page 300 is allocated either by the trusted module 150, or directly by the hypervisor 120 upon its first call. Filling the page with the call code is performed by the hypervisor 150 at step 230. The memory page is additionally protected - it is set (either by the trusted module 150 or by the hypervisor 120) only for execution, which occurs at step 240, during the installation of which the page cannot be overwritten.

Рассмотрим механизм передачи правильного адреса вызова гипервизора 120 доверенному модулю 150. Так как хранить сам адрес в памяти процесса доверенного модуля 150 может быть небезопасно, так как не исключено вмешательство вредоносной программы 140 с целью его получения, то доверенный модуль 150 также хранит токен, который представляет собой случайным образом сгенерированный ключ, используя который можно произвести гипервызов. Сам токен генерируется гипервизором 120 в момент его первого вызова (этап 210 на Фиг. 2) и передается на сторону доверенного модуля 150 для того, чтобы при гипервызове сравнивать значение токена, что позволяет избежать ситуации с злонамеренным вызовом гипервизора 120. Токен генерируется один раз за время работы компьютерной системы (после включения питания) и для ОС 110 он является уникальным. Таким образом, при наличии в системе других гостевых ОС, гипервизор 120 сгенерирует для каждой из них свой собственный токен.Consider the mechanism for transmitting the correct hypervisor call address 120 to trusted module 150. Since storing the address itself in the process memory of trusted module 150 can be unsafe, as malicious software 140 is not excluded from receiving it, the trusted module 150 also stores a token that represents a randomly generated key, using which you can make a hyper call. The token itself is generated by the hypervisor 120 at the time of its first call (step 210 in Fig. 2) and transmitted to the side of the trusted module 150 in order to compare the value of the token during a hyper call, which avoids the situation with a malicious call to the hypervisor 120. The token is generated once per the operating time of the computer system (after turning on the power) and for OS 110 it is unique. Thus, if there are other guest OSs in the system, hypervisor 120 will generate its own token for each of them.

Фиг. 4 иллюстрирует способ защиты страниц памяти с использованием гипервизора. На этапе 410 доверенный модуль 150 совершает гипервызов, после чего на этапе 420 происходит проверка токена и, если токен от защищенного модуля 150 совпадает с сохраненным токена гипервизора 120 (проверка на этапе 430), то на этапе 450 доверенный модуль 150 передает адреса страниц памяти, которые требуют защиты. Защита памяти подразумевает установку битов на запрет/разрешение различных операций - чтение (Read), запись (Write), исполнение кода (eXecute). На этапе 460 назначается проверка контрольных сумм (англ. Cyclic redundancy check, CRC) для данных, которые хранятся в защищаемых страницах памяти. На этапе 470 со стороны гипервизора 120 назначается периодическая проверка по подсчету контрольных сумм для защищаемых страниц памяти из-за того, что возможна атака, связанная с работой по линейным адресам. Периодическая проверка может быть инициализирована как гипервизором 120, так и доверенным модулем 150 путем использования гипервызовов через равные промежутки времени. Гипервизор 120 может также проверять целостность контрольного модуля 150 для того, чтобы удостовериться, что последний не был изменен вредоносной программой 140. Проверка целостности включает подсчет контрольной суммы и сравнение ее с ранее сохраненным значением для определения изменения контрольного модуля 150. Данная проверка проходит на этапе 420. В том случае, если код контрольного модуля 150 был изменен, гипервизор может восстановить его в памяти, загрузив его с диска.FIG. 4 illustrates a method for protecting memory pages using a hypervisor. At step 410, the trusted module 150 makes a hyper call, after which, at step 420, the token is checked and, if the token from the protected module 150 matches the stored token of the hypervisor 120 (check at step 430), then at step 450, the trusted module 150 transmits the addresses of the memory pages, which require protection. Memory protection involves setting bits to prohibit / enable various operations - reading (Read), writing (Write), code execution (eXecute). At step 460, a checksum (Cyclic redundancy check, CRC) is assigned to the data that is stored in the protected memory pages. At step 470, a periodic check is scheduled on the part of the hypervisor 120 to calculate the checksums for the protected memory pages due to the possibility of an attack associated with working at linear addresses. A periodic check can be initialized by either the hypervisor 120 or the trusted module 150 by using hyper-calls at regular intervals. The hypervisor 120 may also check the integrity of the control module 150 in order to make sure that the latter has not been altered by the malware 140. The integrity check includes calculating the checksum and comparing it with a previously saved value to determine the change in the control module 150. This check proceeds at step 420 In the event that the code of the control module 150 has been changed, the hypervisor can restore it to memory by loading it from disk.

Приведем пример атаки, связанной с работой по линейным адресам. Например, IDT (Interrupt Dispatch Table) ОС 110 находится по линейному адресу 0×F1D10000, который является отображением (т.е. отображение адреса виртуальной страницы памяти на адрес физической) физического адреса 0×123000. Гипервизор 120 может установить вышеописанную защиту (без потери производительности) на физическую страницу по адресу 0×123000. Но вредоносная программа 140 может выделить физическую страницу, например 0×321000, скопировать туда содержимое оригинальной страницы 0×123000, подменив там нужные элементы (в приведенном случае это будет обработчик прерывания), и установить отображение 0×F1D10000->0×321000, тем самым гипервизор 120 не сможет заметить подмену, так как не имеет информации о логике работы виртуальной памяти в ОС 110. Поэтому доверенный модуль 150 должен периодически изнутри ОС 110 проверять корректность таблиц страниц (англ. page table), как в приведенном примере, то что 0×F1D1000 действительно соответствует 0×123000 и ничему другому.Let's give an example of an attack related to working at linear addresses. For example, the IDT (Interrupt Dispatch Table) of OS 110 is located at the linear address 0 × F1D10000, which is a mapping (i.e., mapping the address of a virtual memory page to the address of a physical) physical address 0 × 123000. Hypervisor 120 can establish the above protection (without loss of performance) on the physical page at 0 × 123000. But malware 140 can select a physical page, for example 0 × 321000, copy the contents of the original page 0 × 123000 there, swapping the necessary elements there (in this case it will be an interrupt handler), and set the display to 0 × F1D10000-> 0 × 321000, so the hypervisor 120 itself will not be able to notice the substitution, since it does not have information about the logic of the virtual memory in OS 110. Therefore, the trusted module 150 must periodically check the correctness of the page tables from within the OS 110, as in the above example, that 0 × F1D1000 action tionary is 0 × 123000, and nothing else.

Рассмотрим варианты хранения гипервизора 120 до его загрузки. Код гипервизора 120 хранится либо в качестве сервиса UEFI (Unified Extensible Firmware Interface), либо в отдельном устройстве на PCI-е плате, которое не определяется в ОС 110 (например, гипервизор 120 или доверенный модуль 150 самостоятельно обрабатывают прерывания от этого устройства), либо используя виртуализацию работы с диском (гипервизор 120 исключает секторы диска, на котором хранится его код, изменяя функционал драйвера диска).Consider storage options for hypervisor 120 until it is loaded. Hypervisor 120 code is stored either as a UEFI service (Unified Extensible Firmware Interface), or in a separate device on a PCI-card that is not defined in OS 110 (for example, hypervisor 120 or trusted module 150 independently handle interrupts from this device), or using disk virtualization (hypervisor 120 excludes sectors of the disk on which its code is stored, changing the functionality of the disk driver).

Фиг. 5 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26 содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.FIG. 5 is an example of a general purpose computer system, a personal computer or server 20 comprising a central processor 21, a system memory 22, and a system bus 23 that contains various system components, including memory associated with the central processor 21. The system bus 23 is implemented as any prior art bus structure comprising, in turn, a bus memory or a bus memory controller, a peripheral bus and a local bus that is capable of interacting with any other bus architecture. The system memory contains read-only memory (ROM) 24, random access memory (RAM) 25. The main input / output system (BIOS) 26 contains the basic procedures that ensure the transfer of information between the elements of the personal computer 20, for example, at the time of loading the operating system using ROM 24.

Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.The personal computer 20 in turn contains a hard disk 27 for reading and writing data, a magnetic disk drive 28 for reading and writing to removable magnetic disks 29, and an optical drive 30 for reading and writing to removable optical disks 31, such as a CD-ROM, DVD -ROM and other optical information carriers. The hard disk 27, the magnetic disk drive 28, the optical drive 30 are connected to the system bus 23 through the interface of the hard disk 32, the interface of the magnetic disks 33 and the interface of the optical drive 34, respectively. Drives and associated computer storage media are non-volatile means of storing computer instructions, data structures, software modules and other data of a personal computer 20.

Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.The present description discloses an implementation of a system that uses a hard disk 27, a removable magnetic disk 29, and a removable optical disk 31, but it should be understood that other types of computer storage media 56 that can store data in a form readable by a computer (solid state drives, flash memory cards, digital disks, random access memory (RAM), etc.) that are connected to the system bus 23 through the controller 55.

Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.Computer 20 has a file system 36 where the recorded operating system 35 is stored, as well as additional software applications 37, other program modules 38, and program data 39. The user is able to enter commands and information into personal computer 20 via input devices (keyboard 40, keypad “ the mouse "42). Other input devices (not displayed) can be used: microphone, joystick, game console, scanner, etc. Such input devices are, as usual, connected to the computer system 20 via a serial port 46, which in turn is connected to the system bus, but can be connected in another way, for example, using a parallel port, a game port, or a universal serial bus (USB). A monitor 47 or other type of display device is also connected to the system bus 23 via an interface such as a video adapter 48. In addition to the monitor 47, the personal computer may be equipped with other peripheral output devices (not displayed), such as speakers, a printer, and the like.

Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 5. В вычислительной сети могут присутствовать также и другие устройства, например маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.The personal computer 20 is capable of operating in a networked environment, using a network connection with another or more remote computers 49. The remote computer (or computers) 49 are the same personal computers or servers that have most or all of the elements mentioned earlier in the description of the creature the personal computer 20 of FIG. 5. Other devices, such as routers, network stations, peer-to-peer devices, or other network nodes may also be present on the computer network.

Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.Network connections can form a local area network (LAN) 50 and a wide area network (WAN). Such networks are used in corporate computer networks, internal networks of companies and, as a rule, have access to the Internet. In LAN or WAN networks, the personal computer 20 is connected to the local area network 50 via a network adapter or network interface 51. When using the networks, the personal computer 20 may use a modem 54 or other means of providing communication with a global computer network such as the Internet. The modem 54, which is an internal or external device, is connected to the system bus 23 via the serial port 46. It should be clarified that the network connections are only exemplary and are not required to display the exact network configuration, i.e. in reality, there are other ways to establish a technical connection between one computer and another.

В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.In conclusion, it should be noted that the information provided in the description are examples that do not limit the scope of the present invention defined by the claims.

Claims (12)

Способ выполнения кода в режиме гипервизора, в котором:A method of executing code in hypervisor mode, in which: а) загружают в оперативную память код гипервизора до загрузки операционной системы, при этом выполнение кода гипервизора происходит в режиме гипервизора;a) load the hypervisor code into the RAM before loading the operating system, while the hypervisor code is executed in the hypervisor mode; б) загружают в оперативную память доверенный модуль во время загрузки операционной системы, при этом доверенный модуль является приложением, работающим в операционной системе, и предназначен для вызова выполнения кода гипервизора;b) load the trusted module into the RAM during the loading of the operating system, while the trusted module is an application running in the operating system and is designed to call the execution of the hypervisor code; в) совершают первый запрос к гипервизору со стороны доверенного модуля с целью получения адреса гипервизора в оперативной памяти;c) make the first request to the hypervisor from the side of the trusted module in order to obtain the address of the hypervisor in RAM; г) генерируют криптографический ключ с помощью гипервизора;d) generate a cryptographic key using a hypervisor; д) сохраняют указанный ключ в памяти гипервизора;d) save the specified key in the memory of the hypervisor; е) выделяют страницу оперативной памяти;e) allocate a page of RAM; ж) записывают в выделенную страницу оперативной памяти указанный ключ и адрес гипервизора в оперативной памяти;g) write down the specified key and the address of the hypervisor in the random access memory in the allocated page of the RAM; з) устанавливают защиту для выделенной страницы памяти;h) establish protection for the selected memory page; и) совершают запрос к гипервизору по адресу, записанному в выделенной странице на этапе ж), со стороны доверенного модуля для вызова выполнения кода гипервизора, при этом запрос включает в себя ключ, записанный в выделенной странице;i) make a request to the hypervisor at the address recorded in the dedicated page in step g), from the side of the trusted module to call the execution of the hypervisor code, the request includes a key recorded in the selected page; к) проверяют ключ с помощью гипервизора, путем сравнения криптографического ключа, переданного в запросе к гипервизору со стороны доверенного модуля, с криптографическим ключом в памяти гипервизора;j) verify the key using the hypervisor, by comparing the cryptographic key transmitted in the request to the hypervisor from the trusted module with the cryptographic key in the memory of the hypervisor; л) при положительном результате проверки выполняют код гипервизора в режиме гипервизора.k) if the verification result is positive, the hypervisor code is executed in the hypervisor mode.
RU2015141548A 2015-09-30 2015-09-30 Method for code performance in hypervisor mode RU2609761C1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2015141548A RU2609761C1 (en) 2015-09-30 2015-09-30 Method for code performance in hypervisor mode

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2015141548A RU2609761C1 (en) 2015-09-30 2015-09-30 Method for code performance in hypervisor mode

Publications (1)

Publication Number Publication Date
RU2609761C1 true RU2609761C1 (en) 2017-02-02

Family

ID=58457723

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015141548A RU2609761C1 (en) 2015-09-30 2015-09-30 Method for code performance in hypervisor mode

Country Status (1)

Country Link
RU (1) RU2609761C1 (en)

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007135672A2 (en) * 2006-05-24 2007-11-29 Safend Ltd. Method and system for defending security application in a user's computer
US20090172330A1 (en) * 2007-12-28 2009-07-02 Prashant Dewan Protection of user-level applications based on page table information
US20090265783A1 (en) * 2004-07-22 2009-10-22 International Business Machines Corporation Method to Enhance Platform Firmware Security for Logical Partition Data Processing Systems by Dynamic Restriction of Available External Interfaces
RU2446447C2 (en) * 2006-05-15 2012-03-27 Майкрософт Корпорейшн Launching hypervisor under running operating system
US8484640B1 (en) * 2007-06-22 2013-07-09 Parallels IP Holdings GmbH Virtualization system with trusted root mode hypervisor and trusted root mode VMM
US20130318595A1 (en) * 2011-01-28 2013-11-28 Lan Wang Authenticate a Hypervisor with Encoded Information
US20140189881A1 (en) * 2012-12-31 2014-07-03 Ronnie Lindsay Enhanced security for accessing virtual memory
CA2897747A1 (en) * 2013-02-22 2014-08-28 Bitdefender Ipr Management Ltd Memory introspection engine for integrity protection of virtual machines
RU2538286C2 (en) * 2013-02-06 2015-01-10 Закрытое акционерное общество "Крафтвэй корпорейшн ПЛС" Method of launching hypervisor in computer system at early computer booting stage
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090265783A1 (en) * 2004-07-22 2009-10-22 International Business Machines Corporation Method to Enhance Platform Firmware Security for Logical Partition Data Processing Systems by Dynamic Restriction of Available External Interfaces
RU2446447C2 (en) * 2006-05-15 2012-03-27 Майкрософт Корпорейшн Launching hypervisor under running operating system
WO2007135672A2 (en) * 2006-05-24 2007-11-29 Safend Ltd. Method and system for defending security application in a user's computer
US8484640B1 (en) * 2007-06-22 2013-07-09 Parallels IP Holdings GmbH Virtualization system with trusted root mode hypervisor and trusted root mode VMM
US20090172330A1 (en) * 2007-12-28 2009-07-02 Prashant Dewan Protection of user-level applications based on page table information
US20130318595A1 (en) * 2011-01-28 2013-11-28 Lan Wang Authenticate a Hypervisor with Encoded Information
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US20140189881A1 (en) * 2012-12-31 2014-07-03 Ronnie Lindsay Enhanced security for accessing virtual memory
RU2538286C2 (en) * 2013-02-06 2015-01-10 Закрытое акционерное общество "Крафтвэй корпорейшн ПЛС" Method of launching hypervisor in computer system at early computer booting stage
CA2897747A1 (en) * 2013-02-22 2014-08-28 Bitdefender Ipr Management Ltd Memory introspection engine for integrity protection of virtual machines

Similar Documents

Publication Publication Date Title
US11269996B2 (en) System and method for protecting memory pages
JP6142027B2 (en) System and method for performing protection against kernel rootkits in a hypervisor environment
US10516533B2 (en) Password triggered trusted encryption key deletion
RU2691187C1 (en) System and methods for auditing a virtual machine
US9319380B2 (en) Below-OS security solution for distributed network endpoints
US9946562B2 (en) System and method for kernel rootkit protection in a hypervisor environment
RU2510074C2 (en) System and method of checking executable code before execution thereof
US9009836B1 (en) Security architecture for virtual machines
US9202046B2 (en) Systems and methods for executing arbitrary applications in secure environments
US7836299B2 (en) Virtualization of software configuration registers of the TPM cryptographic processor
Nanavati et al. Cloud security: A gathering storm
US8726404B2 (en) Regulating access to and protecting portions of applications of virtual machines
US8327415B2 (en) Enabling byte-code based image isolation
Zaidenberg Hardware rooted security in industry 4.0 systems
KR101563059B1 (en) Anti-malware system and data processing method in same
CN106687978B (en) Computing device and method for suppression of stack disruption utilization
Kittel et al. Code validation for modern os kernels
RU2609761C1 (en) Method for code performance in hypervisor mode
RU2585978C2 (en) Method of invoking system functions in conditions of use of agents for protecting operating system kernel
EP2720170B1 (en) Automated protection against computer exploits
Jaeger et al. Countering unauthorized code execution on commodity kernels: A survey of common interfaces allowing kernel code modification