RU2609761C1 - Method for code performance in hypervisor mode - Google Patents
Method for code performance in hypervisor mode Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/14—Protection against unauthorised use of memory or access to memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/575—Secure boot
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
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
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.
С целью обнаружить присутствие вредоносной программы 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
Как уже отмечалось, доверенный модуль 150 производит вызовы выполнения кода гипервизора 150 (чей код будет выполнятся в режиме гипервизора), т.е. производит гипервызов. В рамках настоящего описания предполагается, что ОС 110 изначально является доверенной, но вредоносная программа 140 компрометирует доверенность ОС. Также подразумевается, что вредоносная программа 140 обладает сложной логикой (например, руткит-функционалом), что позволяет избежать ее обнаружения со стороны антивирусного приложения, установленного в ОС 110 (не отображено на Фиг. 1). Таким образом, требуется обеспечить защиту нужной пользователю информации от вредоносной программы 140.As already noted, the trusted
В рамках современных ОС информацию можно защитить несколькими способами: использовать шифрование, контролировать доступ к носителям информации, обеспечить защиту виртуальной памяти тех процессов, которые работают с этой информацией. Технологии, направленные на шифрование и контроль доступа к носителям данных (как правило, это технологии предотвращения утечки данных, англ. 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
Важно отметить, что код в режиме гипервизора 120 в виде монолитного участка кода, в котором будут содержаться проверки страниц виртуальной памяти процессов, запущенных в ОС 110, сделать очень сложно по нескольким причинам:It is important to note that code in
- код гипервизора оказывается "перегружен" (оказывается слишком сложным для написания и отладки), он начинает потреблять слишком много системных ресурсов, в частности, процессорного времени;- 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
Основой настоящего изобретения является защищенный канал связи между доверенным модулем 150 и гипервизором 120. Для обеспечения подобного канала связи необходимо, чтобы только доверенный модуль 150 мог произвести вызов кода гипервизора 120 (гипервызов). Учитывая, что код гипервизора 120 хранится в оперативной памяти, требуется обеспечить конфиденциальность адреса, по которому данный код вызывается.The basis of the present invention is a secure communication channel between the trusted
Фиг. 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
Рассмотрим механизм передачи правильного адреса вызова гипервизора 120 доверенному модулю 150. Так как хранить сам адрес в памяти процесса доверенного модуля 150 может быть небезопасно, так как не исключено вмешательство вредоносной программы 140 с целью его получения, то доверенный модуль 150 также хранит токен, который представляет собой случайным образом сгенерированный ключ, используя который можно произвести гипервызов. Сам токен генерируется гипервизором 120 в момент его первого вызова (этап 210 на Фиг. 2) и передается на сторону доверенного модуля 150 для того, чтобы при гипервызове сравнивать значение токена, что позволяет избежать ситуации с злонамеренным вызовом гипервизора 120. Токен генерируется один раз за время работы компьютерной системы (после включения питания) и для ОС 110 он является уникальным. Таким образом, при наличии в системе других гостевых ОС, гипервизор 120 сгенерирует для каждой из них свой собственный токен.Consider the mechanism for transmitting the correct
Фиг. 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
Приведем пример атаки, связанной с работой по линейным адресам. Например, 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
Рассмотрим варианты хранения гипервизора 120 до его загрузки. Код гипервизора 120 хранится либо в качестве сервиса UEFI (Unified Extensible Firmware Interface), либо в отдельном устройстве на PCI-е плате, которое не определяется в ОС 110 (например, гипервизор 120 или доверенный модуль 150 самостоятельно обрабатывают прерывания от этого устройства), либо используя виртуализацию работы с диском (гипервизор 120 исключает секторы диска, на котором хранится его код, изменяя функционал драйвера диска).Consider storage options for
Фиг. 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
Персональный компьютер 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
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш-карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.The present description discloses an implementation of a system that uses a
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканнер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например колонками, принтером и т.п.Computer 20 has a
Персональный компьютер 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
Сетевые соединения могут образовывать локальную вычислительную сеть (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
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.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)
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)
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 |
-
2015
- 2015-09-30 RU RU2015141548A patent/RU2609761C1/en active
Patent Citations (10)
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 |