CN107102888B - 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 - Google Patents
一种基于硬件虚拟化技术的共享库隔离保护方法及系统 Download PDFInfo
- Publication number
- CN107102888B CN107102888B CN201710273274.1A CN201710273274A CN107102888B CN 107102888 B CN107102888 B CN 107102888B CN 201710273274 A CN201710273274 A CN 201710273274A CN 107102888 B CN107102888 B CN 107102888B
- Authority
- CN
- China
- Prior art keywords
- ept
- page
- shared library
- page table
- library
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于硬件虚拟化技术的共享库隔离保护方法,包括:提出了一种新型的应用程序地址空间模型,能够更加准确和清晰的描绘应用程序与共享库之间的内存映射关系;根据地址空间模型提出了一种基于硬件虚拟化技术的隔离机制,能够高效的将共享库放置到另外一个隔离的地址空间中;提出了一种隔离地址空间交互控制机制,在共享库与其他的模块进行正常交互时切换地址空间,同时对共享库运行时出现的恶意代码执行以及数据存取行为进行检测。相应的,本发明还实现了对应的系统。本发明适用于对一系列标准以及商用共享库进行安全隔离保护,能够避免应用程序漏洞对共享库造成的安全威胁。
Description
技术领域
本发明属于系统安全研究中的隔离技术领域,更具体地,涉及一种基于硬件虚拟化技术的共享库隔离保护方法及系统。
背景技术
在现代操作系统中,动态链接库在程序启动时或者运行时被加载到地址空间并提供函数接口服务。这种方法提供了一种动态且隔离的方法来进行代码复用。相比与静态链接的方式,这种方法由于不会增加二进制文件的大小且独立于应用程序,因此更加易用和高效。现代操作系统为用户空间以及内核空间提供了强制的内存隔离机制来保障内核代码与数据的安全。然而用户空间内并没有类似的安全机制。所有的共享库与应用程序都处于同一个地址空间中,共享库的安全与应用程序的安全紧密的联系在一起。一旦共享库被加载到应用程序的地址空间中,应用程序可以随意的执行共享库的代码或者存取共享库的数据,相反亦然。正因如此,这为用户带来了严重的安全威胁。
现有的实现共享库隔离防护的方法主要有两种,第一种是以虚拟机隔离为主的方法,其将共享库与应用程序放入不同的虚拟机中,通过虚拟机的切换来保障共享库与其它组件的正常交互;第二种是以进程隔离为主的方法,其将共享库与应用程序放入不同的进程中,通过进程切换的方法来保证共享库与其它组件的正常交互。
然而,上述两种共享库隔离防护的方法存在以下问题:第一种方法由于采用了虚拟机切换,会导致系统开销巨大;第二种方法需要对应用程序进行重新设计,以适应隔离环境,这会导致通用性差。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于硬件虚拟化技术的共享库隔离保护方法及系统,其目的在于,解决现有隔离方法中存在的开销大、通用性差的技术问题。
为实现上述目的,按照本发明的一个方面,提供了一种基于硬件虚拟化技术的共享库隔离保护方法,包括以下步骤:
(1)根据虚拟机操作系统的内核数据结构获取虚拟机操作系统中共享库的物理页面地址信息;
(2)根据获取的共享库的物理页面地址信息并通过虚拟机管理器创建共享库隔离空间;
(3)在创建的共享库隔离空间中对库函数调用、回调函数调用、以及操作系统中的中断行为分别进行EPT页表切换;
(4)对虚拟机操作系统中除了上述步骤(3)中库函数调用、回调函数调用、以及操作系统中的中断行为以外的共享库运行时的所有行为进行恶意行为检测,并提供恶意行为发生时的虚拟机上下文信息。
优选地,步骤(1)具体为,首先是通过修改操作系统中的链接器,从而在共享库加载到应用程序的地址空间时将应用程序的进程号发送给内核,通过内核中记录的内存页面信息,获取到所有共享库物理页面的起始地址,通过对共享库的每一个页面进行读操作将共享库物理页面锁在内存之中,将获得的共享库的物理页面地址信息通过虚拟机管理器与虚拟机内核之间的传输机制传递给虚拟机管理器。
优选地,步骤(2)包括以下子步骤:
(2-1)在虚拟机管理器启动时创建一个不同于其固有的可扩展页表EPT-S的空白新EPT页表EPT-L;
(2-2)根据获取的共享库的物理页面地址信息在创建的新EPT页表EPT-L中创建共享库的物理页面的虚拟机物理地址GPA与共享库的物理页面的主机物理地址HPA之间的映射关系;
(2-3)根据共享库的物理页面地址信息遍历虚拟机管理器固有的可扩展页表EPT-S,以将该表中存储的共享库的物理页面的GPA与共享库的物理页面的HPA之间的映射关系删除,从而形成了由固有的可扩展页表EPT-S和新EPT页表EPT-L构成的共享库隔离空间。
优选地,步骤(2)进一步包括在子步骤(2-3)之后的如下步骤:
(2-4)修改操作系统中的堆内存分配函数,具体为记录其堆内存分配的地址范围,并将该地址范围发送给虚拟机管理器进行保存,其中堆内存分配函数是malloc函数。
优选地,骤(3)包括以下子步骤:
(3-1)根据虚拟机操作系统中应用程序或共享库运行时的行为判断是库函数调用、回调函数调用、还是操作系统中的中断行为,如果是库函数调用,则进入步骤(3-2),如果是回调函数调用,则进入步骤(3-3),如果是操作系统中的中断行为,则进入步骤(3-4);
(3-2)将应用程序的二进制文件中保存的全局偏移表GOT中的共享库函数起始地址修改为具有EPT页表切换功能的代码的地址,该代码中包括执行EPT-S页表到EPT-L页表切换的代码,以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
(3-3)通过虚拟机管理器的EPT页表缺页异常处理函数修改虚拟机控制结构的EPT页表指针域,其中在库函数进行回调调用时,是将EPTP域修改为指向ETP-S,在库函数进行调用返回时,是将EPTP域修改为指向ETP-L;
(3-4)判断操作系统中的中断行为是属于中断异常还是进程切换,如果是属于中断异常,则进入步骤(3-5),如果是属于进程切换,则进入步骤(3-6);
(3-5)通过EPT页表缺页异常处理函数动态地在EPT-L页表中构建虚拟机内核页面的GPA与HPA之间的映射关系;
(3-6)在EPT页表缺页异常处理函数中通过VMCS中的虚拟机上下文信息判断当前EPTP指针的状态,以及发生缺页异常的页面属性,如果当前EPTP指针指向EPT-S页表,且发生缺页异常的页面为共享库页面,则直接将EPTP指针修改为指向EPT-L页表,如果当前EPTP指针指向EPT-L页表,且发生缺页异常的页面为应用程序页面,则直接将EPTP指针修改为指向EPT-S页表,其他情况不做任何处理。
优选地,步骤(3-2)包括以下子步骤:
(3-2-1)对应用程序的二进制文件中保存的GOT表进行分析,以得到针对应用程序调用的每个共享库函数所生成的EPT页表切换代码,该EPT页表切换代码中包括执行EPT-S页表到EPT-L页表切换的代码、以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
(3-2-2)将虚拟机操作系统链接器中的共享库函数地址查询函数的返回值修改为生成的EPT页表切换代码的地址。
一种基于硬件虚拟化技术的共享库隔离保护系统,包括:
第一模块,用于根据虚拟机操作系统的内核数据结构获取虚拟机操作系统中共享库的物理页面地址信息;
第二模块,用于根据获取的共享库的物理页面地址信息并通过虚拟机管理器创建共享库隔离空间;
第三模块,用于在创建的共享库隔离空间中对库函数调用、回调函数调用、以及操作系统中的中断行为分别进行EPT页表切换;
第四模块,用于对虚拟机操作系统中除了上述第三模块中库函数调用、回调函数调用、以及操作系统中的中断行为以外的共享库运行时的所有行为进行恶意行为检测,并提供恶意行为发生时的虚拟机上下文信息。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,能够取得下列有益效果:
(1)本发明的通用性好:由于本发明采用了步骤(2)和步骤(3),其首先通过底层硬件的支持,避免修改应用程序的虚拟地址空间,然后通过静态插装与动态处理相结合的方式进行隔离空间切换,其中主要是对应用程序二进制文件进行分析并进行代码插装,在这个过程中既不需要对应用程序进行重新设计同时也维护了共享库的共享特性,因此具有良好的通用性。
(2)本发明的开销低:本发明通过步骤(3-2),其通过采用了Intel虚拟化拓展指令VMfunc,在不陷入虚拟机管理器的情况下能够直接进行地址空间切换的处理。因此相比于现有的虚拟化隔离方案,本发明通过这种方式更能有效的减少频繁的库函数调用带来的性能开销。
(3)本发明的安全性高:本发明通过步骤4,其通过对陷入虚拟机管理器中的缺页行为进行判断来确定该行为的合法性。对于应用程序未经特定接口调用共享库函数的行为,本发明将在虚拟机管理器截获这些行为并将行为发生时的虚拟机上下文信息返回给用户,因此用户可以根据这些信息来判断恶意行为所在的进程,操作的内存位置以及操作性质等。
附图说明
图1是本发明基于硬件虚拟化技术的共享库隔离保护方法的系统架构实现图。
图2是本发明隔离地址空间中的内存布局图。
图3是本发明地址空间切换时的控制流图。
图4是本发明进程切换时的EPTP切换实现图。
图5是本发明基于硬件虚拟化技术的共享库隔离保护方法的流程图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的最终目标是实现基于硬件虚拟化技术的共享库隔离保护系统,以防止攻击者利用应用程序漏洞随意的执行共享库代码或者存取共享库数据。下面给出本发明基于KVM虚拟化平台的具体实施方案。
如图5所示,本发明基于硬件虚拟化技术的共享库隔离保护方法包括以下步骤:
(1)根据虚拟机操作系统的内核数据结构获取虚拟机操作系统中共享库的物理页面地址信息(Physical page address information);具体而言,本步骤首先是通过修改操作系统中的链接器(Linker),从而在共享库加载到应用程序的地址空间时将应用程序的进程号发送给内核,通过内核中记录的内存页面信息,可以获取到所有共享库物理页面的起始地址;由于现代操作系统在内存管理中存在着延迟的机制,这意味着只有当代码或者数据真正要被存取时,才分配真正的物理页面,因此在链接器中,接下来需要通过对共享库的每一个页面进行读操作来保证这些物理页面已经被载入到内存中;与此同时,为了避免交互机制对共享库的物理页面的影响,下一步必须将这些物理页面锁在内存之中;最后,将获得的共享库的物理页面地址信息通过一种虚拟机管理器与虚拟机内核(Guest OS)之间的传输机制(Hypercall)传递给虚拟机管理器(hypervisor),本过程结束。
(2)根据获取的共享库的物理页面地址信息并通过虚拟机管理器创建共享库隔离空间;本步骤具体包括以下子步骤:
(2-1)在虚拟机管理器启动时创建一个不同于其固有的可扩展页表(Extendedpage table,简称EPT)EPT-S的空白新EPT页表EPT-L;
(2-2)根据获取的共享库的物理页面地址信息在创建的新EPT页表EPT-L中创建共享库的物理页面的虚拟机物理地址(Guest physical address,简称GPA)与共享库的物理页面的主机物理地址(Host physical address,简称HPA)之间的映射关系;如图2所示,可以清楚的看到填充后的新EPT页表EPT-L中包括有共享库栈、共享库A和B、以及共享库堆;
(2-3)根据共享库的物理页面地址信息遍历虚拟机管理器固有的可扩展页表EPT-S,以将该表中存储的共享库的物理页面的GPA与共享库的物理页面的HPA之间的映射关系删除,从而形成了由固有的可扩展页表EPT-S和新EPT页表EPT-L构成的共享库隔离空间;
如图2所示,左侧的固有的可扩展页表EPT-S中灰色部分是删除了映射关系以后的应用程序地址空间,最终,EPT-S与EPT-L形成一种“互补”的映射结构。
可选的,本步骤还可以包括在子步骤(2-3)之后的如下步骤:
(2-4)修改操作系统中的堆内存分配函数,具体为记录其堆内存分配的地址范围,并将该地址范围发送给虚拟机管理器进行保存;
在本发明中,该堆内存分配函数是malloc函数。
(3)在创建的共享库隔离空间中对库函数调用(Library function call)、回调函数调用(Callback)、以及操作系统中的中断行为(Interrupt)分别进行EPT页表切换;如图3所示(其中Trampoline指的是应用程序进行库函数调用时的EPT页表切换代码,Springboard指的是库函数调用返回时的EPT页表切换代码),本步骤包括以下子步骤:
(3-1)根据虚拟机操作系统中应用程序或共享库运行时的行为判断是库函数调用、回调函数调用、还是操作系统中的中断行为,如果是库函数调用,则进入步骤(3-2),如果是回调函数调用,则进入步骤(3-3),如果是操作系统中的中断行为,则进入步骤(3-4);
(3-2)将应用程序的二进制文件中保存的全局偏移表(Global offset table,简称GOT)中的共享库函数起始地址修改为具有EPT页表切换功能的代码的地址,该代码中包括执行EPT-S页表到EPT-L页表切换的代码,以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;本步骤具体包括以下子步骤:
(3-2-1)对应用程序的二进制文件中保存的GOT表进行分析,以得到针对应用程序调用的每个共享库函数所生成的EPT页表切换代码,该EPT页表切换代码中包括执行EPT-S页表到EPT-L页表切换的代码、以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
在该EPT页面切换代码中使用了基于Intel虚拟化技术的拓展指令VMfunc,其能够实现在虚拟机用户态下直接进行EPT页表的切换;
(3-2-2)将虚拟机操作系统链接器中的共享库函数地址查询函数(在本发明中是dl_runtime_resolve函数)的返回值修改为生成的EPT页表切换代码的地址;
(3-3)通过虚拟机管理器的EPT页表缺页异常处理函数(EPT-violation handler)修改虚拟机控制结构(VM control structures,简称VMCS)的EPT页表指针(EPT pointer,简称EPTP)域,其中在库函数进行回调调用时,是将EPTP域修改为指向ETP-S,在库函数进行调用返回时,是将EPTP域修改为指向ETP-L;
(3-4)判断操作系统中的中断行为是属于中断异常还是进程切换,如果是属于中断异常,则进入步骤(3-5),如果是属于进程切换,则进入步骤(3-6);具体而言,进程切换伴随着虚拟机中CR3寄存器的改变,而中断异常则不存在上述情况;
(3-5)通过EPT页表缺页异常处理函数动态地在EPT-L页表中构建虚拟机内核页面的GPA与HPA之间的映射关系;
该映射关系构建的过程与上述步骤(2-2)中相同,在此不再赘述。
(3-6)在EPT页表缺页异常处理函数中通过VMCS中的虚拟机上下文信息判断当前EPTP指针的状态,以及发生缺页异常的页面属性,如果当前EPTP指针指向EPT-S页表,且发生缺页异常的页面为共享库页面,则直接将EPTP指针修改为指向EPT-L页表,如果当前EPTP指针指向EPT-L页表,且发生缺页异常的页面为应用程序页面,则直接将EPTP指针修改为指向EPT-S页表,其他情况不做任何处理(如图4所示)。
(4)对虚拟机操作系统中除了上述步骤(3)中库函数调用、回调函数调用、以及操作系统中的中断行为以外的共享库运行时的所有行为进行恶意行为检测,并提供恶意行为发生时的虚拟机上下文信息。
具体而言,在上述步骤(3)中,已经对库函数调用、回调函数调用、以及操作系统中的中断行为进行了EPT页表切换处理,因此,一旦攻击者的行为不属于这些行为,由于没有对应的EPT页表切换处理,则将导致虚拟机陷入EPT页表缺页异常处理函数,因此,通过执行恶意行为检测,即在EPT-S页表下发生共享库页面的缺页异常,则认为该行为是恶意行为,此时通过在该EPT页表缺页异常处理函数中读取VMCS中保存的虚拟机上下文信息,并将该信息返回给用户的方式,就能够让用户发现恶意行为所在的应用程序。
图1展示了本发明基于硬件虚拟化技术的共享库隔离保护系统实现,其中主要包括有三个部分:(1)创建共享库隔离空间;(2)共享库运行时交互控制;(3)恶意行为检测。
(1)创建共享库隔离空间
共享库隔离空间主要包括了代码部分的隔离以及数据部分的隔离。代码隔离主要是依赖于Intel EPT页表技术实现的,EPT页表为每个虚拟机维护了虚拟机物理地址到主机物理地址之间的映射。通过创建不同的EPT页表,虚拟机内存映射的具体内容也会随之发生改变。在的实现中,原本虚拟机启动时创建的EPT页表称之为EPT-S,而创建的一张新的EPT页表称之为EPT-L。具体如图2所示。其中EPT-S页表中主要记录了应用程序,共享库以及操作系统所有页面的地址映射关系,而在EPT-L页表中主要记录了在共享库数据和代码页面的地址映射关系。根据上一个步骤中所获得的共享库页面的物理地址信息,可以在EPT-L创建出相关的地址映射关系并将EPT-S中原有的地址映射关系删除。整个过程相当于是将EPT-S中共享库页面映射信息"剪贴-复制"到了EPT-L中。
(2)共享库运行时交互控制
由于共享库在运行时会频繁的与其他的组件进行交互,因此当将共享库与其他的组件进行隔离后,必须进行地址空间的切换来保证交互的正确性。主要包含有以下几种情况:应用程序库函数调用,库函数系统调用,库函数回调调用。具体的运行时控制流图如图3所示。
应用程序库函数调用时的地址空间切换是通过修改.GOT表实现的。由于.GOT表中存放了库函数的起始地址,因此可以将这个地址修改为特定代码片段的地址(对于特定代码片段称之为“Trampoline”),在这段代码中使用vmfunc指令来完成EPT页表的切换以及栈空间的切换。与此相反库函数调用返回时也需要进行栈空间的切换,由于栈上保存了函数调用的返回地址,通过修改这个返回地址指向特定的代码片段地址(简称为“Springboard”),在这段代码中同样使用vmfunc指令来完成EPT页表的切换以及栈空间的切换。为了对每个库函数调用生成对应的Trampoline以及Springboard,需要对应用程序进行二进制文件分析获得应用程序.GOT表信息,最后生成独立的文件映射到应用程序地址空间中。
库函数系统调用时的地址空间切换主要是依赖hypervisor中特殊的缺页处理EPT-violation handler。由于在初始化过程中,EPT-L页表中没有映射操作系统内核页面,因此库函数一旦进行了系统调用,就会导致陷入hypervisor中并进行EPT-violation处理。通过这个方法,直接在运行时将操作系统内核页面动态的映射到EPT-L中,从而保证了库函数系统调用的正常执行。
库函数回调调用时的地址空间切换同样也是依赖于EPT-violation handler进行处理。由于在EPT-L页表中没有映射应用程序代码页面,因此一旦库函数进行回调函数调用,那么就会导致陷入hypervisor中并进行EPT-violation处理。与上述情况不同的是,为了保证共享库的安全,不能直接将回调函数所在页面直接映射到EPT-L中,在的实现中,将在EPT-violation handler中进行EPTP的切换,从而保证回调函数运行在EPT-S态下。
特殊情况下的地址空间切换主要是由于系统中发生的异步事件会对应用程序执行状态发生改变,例如进程切换以及中断事件等。图4中具体描绘了进程切换下的控制流。通过cr3寄存器以及EPT-violation中保存的上下文,能够判断出是否发生了进程切换并依据判断结果在EPT-violation handler中完成地址空间切换。除此之外,中断时间与系统调用下的地址空间切换则是类似的,直接在EPT-violation handler中完成相关页面的映射。
(3)恶意行为检测
通过上述处理,对共享库与其他模块之间正常交互的各种情况进行了处理。因此一旦系统中发生除上述情况以外的其余事件时,就可以通过在EPT-violation handler中截获到的上下文信息进行判断。例如:应用程序直接执行共享库函数中间的某一段指令,由于没有特定的接口进行空间切换且由于EPT-S页表中没有映射共享库页面,最终将触发EPT-violation。在EPT-violation handler中截获到的上下文中将会记录这是在EPT-S态下发生了共享库页面的EPT-violation。因此这不属于之前正常交互情况下的任何一种,那么最后将直接判定程序的控制流被恶意篡改,并立即停止程序的执行。
Claims (4)
1.一种基于硬件虚拟化技术的共享库隔离保护方法,其特征在于,包括以下步骤:
(1)根据虚拟机操作系统的内核数据结构获取虚拟机操作系统中共享库的物理页面地址信息;
(2)根据获取的共享库的物理页面地址信息并通过虚拟机管理器创建共享库隔离空间;本步骤包括以下子步骤:
(2-1)在虚拟机管理器启动时创建一个不同于其固有的可扩展页表EPT-S的空白新EPT页表EPT-L;
(2-2)根据获取的共享库的物理页面地址信息在创建的新EPT页表EPT-L中创建共享库的物理页面的虚拟机物理地址GPA与共享库的物理页面的主机物理地址HPA之间的映射关系;
(2-3)根据共享库的物理页面地址信息遍历虚拟机管理器固有的可扩展页表EPT-S,以将该表中存储的共享库的物理页面的GPA与共享库的物理页面的HPA之间的映射关系删除,从而形成了由固有的可扩展页表EPT-S和新EPT页表EPT-L构成的共享库隔离空间;
(2-4)修改操作系统中的堆内存分配函数,具体为记录其堆内存分配的地址范围,并将该地址范围发送给虚拟机管理器进行保存,其中堆内存分配函数是malloc函数;
(3)在创建的共享库隔离空间中对库函数调用、回调函数调用、以及操作系统中的中断行为分别进行EPT页表切换;本步骤包括以下子步骤:
(3-1)根据虚拟机操作系统中应用程序或共享库运行时的行为判断是库函数调用、回调函数调用、还是操作系统中的中断行为,如果是库函数调用,则进入步骤(3-2),如果是回调函数调用,则进入步骤(3-3),如果是操作系统中的中断行为,则进入步骤(3-4);
(3-2)将应用程序的二进制文件中保存的全局偏移表GOT中的共享库函数起始地址修改为具有EPT页表切换功能的代码的地址,该代码中包括执行EPT-S页表到EPT-L页表切换的代码,以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
(3-3)通过虚拟机管理器的EPT页表缺页异常处理函数修改虚拟机控制结构的EPT页表指针域,其中在库函数进行回调调用时,是将EPTP域修改为指向ETP-S,在库函数进行调用返回时,是将EPTP域修改为指向ETP-L;
(3-4)判断操作系统中的中断行为是属于中断异常还是进程切换,如果是属于中断异常,则进入步骤(3-5),如果是属于进程切换,则进入步骤(3-6);
(3-5)通过EPT页表缺页异常处理函数动态地在EPT-L页表中构建虚拟机内核页面的GPA与HPA之间的映射关系;
(3-6)在EPT页表缺页异常处理函数中通过VMCS中的虚拟机上下文信息判断当前EPTP指针的状态,以及发生缺页异常的页面属性,如果当前EPTP指针指向EPT-S页表,且发生缺页异常的页面为共享库页面,则直接将EPTP指针修改为指向EPT-L页表,如果当前EPTP指针指向EPT-L页表,且发生缺页异常的页面为应用程序页面,则直接将EPTP指针修改为指向EPT-S页表,其他情况不做任何处理;
(4)对虚拟机操作系统中除了上述步骤(3)中库函数调用、回调函数调用、以及操作系统中的中断行为以外的共享库运行时的所有行为进行恶意行为检测,并提供恶意行为发生时的虚拟机上下文信息。
2.根据权利要求1所述的共享库隔离保护方法,其特征在于,步骤(1)具体为,首先是通过修改操作系统中的链接器,从而在共享库加载到应用程序的地址空间时将应用程序的进程号发送给内核,通过内核中记录的内存页面信息,获取到所有共享库物理页面的起始地址,通过对共享库的每一个页面进行读操作将共享库物理页面锁在内存之中,将获得的共享库的物理页面地址信息通过虚拟机管理器与虚拟机内核之间的传输机制传递给虚拟机管理器。
3.根据权利要求1所述的共享库隔离保护方法,其特征在于,步骤(3-2)包括以下子步骤:
(3-2-1)对应用程序的二进制文件中保存的GOT表进行分析,以得到针对应用程序调用的每个共享库函数所生成的EPT页表切换代码,该EPT页表切换代码中包括执行EPT-S页表到EPT-L页表切换的代码、以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
(3-2-2)将虚拟机操作系统链接器中的共享库函数地址查询函数的返回值修改为生成的EPT页表切换代码的地址。
4.一种基于硬件虚拟化技术的共享库隔离保护系统,其特征在于,包括:
第一模块,用于根据虚拟机操作系统的内核数据结构获取虚拟机操作系统中共享库的物理页面地址信息;
第二模块,用于根据获取的共享库的物理页面地址信息并通过虚拟机管理器创建共享库隔离空间;本模块包括以下子模块:
第一子模块,用于在虚拟机管理器启动时创建一个不同于其固有的可扩展页表EPT-S的空白新EPT页表EPT-L;
第二子模块,用于根据获取的共享库的物理页面地址信息在创建的新EPT页表EPT-L中创建共享库的物理页面的虚拟机物理地址GPA与共享库的物理页面的主机物理地址HPA之间的映射关系;
第三子模块,用于根据共享库的物理页面地址信息遍历虚拟机管理器固有的可扩展页表EPT-S,以将该表中存储的共享库的物理页面的GPA与共享库的物理页面的HPA之间的映射关系删除,从而形成了由固有的可扩展页表EPT-S和新EPT页表EPT-L构成的共享库隔离空间;
第四子模块,用于修改操作系统中的堆内存分配函数,具体为记录其堆内存分配的地址范围,并将该地址范围发送给虚拟机管理器进行保存,其中堆内存分配函数是malloc函数;
第三模块,用于在创建的共享库隔离空间中对库函数调用、回调函数调用、以及操作系统中的中断行为分别进行EPT页表切换;本模块包括以下子模块:
第五子模块,用于根据虚拟机操作系统中应用程序或共享库运行时的行为判断是库函数调用、回调函数调用、还是操作系统中的中断行为,如果是库函数调用,则进入第六子模块,如果是回调函数调用,则进入第七子模块,如果是操作系统中的中断行为,则进入步骤第八子模块;
第六子模块,用于将应用程序的二进制文件中保存的全局偏移表GOT中的共享库函数起始地址修改为具有EPT页表切换功能的代码的地址,该代码中包括执行EPT-S页表到EPT-L页表切换的代码,以及将EPT-L页表到EPT-S页表切换的代码地址压入应用程序栈中的操作;
第七子模块,用于通过虚拟机管理器的EPT页表缺页异常处理函数修改虚拟机控制结构的EPT页表指针域,其中在库函数进行回调调用时,是将EPTP域修改为指向ETP-S,在库函数进行调用返回时,是将EPTP域修改为指向ETP-L;
第八子模块,用于判断操作系统中的中断行为是属于中断异常还是进程切换,如果是属于中断异常,则进入第九子模块,如果是属于进程切换,则进入第十子模块;
第九子模块,用于通过EPT页表缺页异常处理函数动态地在EPT-L页表中构建虚拟机内核页面的GPA与HPA之间的映射关系;
第十子模块,用于在EPT页表缺页异常处理函数中通过VMCS中的虚拟机上下文信息判断当前EPTP指针的状态,以及发生缺页异常的页面属性,如果当前EPTP指针指向EPT-S页表,且发生缺页异常的页面为共享库页面,则直接将EPTP指针修改为指向EPT-L页表,如果当前EPTP指针指向EPT-L页表,且发生缺页异常的页面为应用程序页面,则直接将EPTP指针修改为指向EPT-S页表,其他情况不做任何处理;
第四模块,用于对虚拟机操作系统中除了上述第三模块中库函数调用、回调函数调用、以及操作系统中的中断行为以外的共享库运行时的所有行为进行恶意行为检测,并提供恶意行为发生时的虚拟机上下文信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710273274.1A CN107102888B (zh) | 2017-04-25 | 2017-04-25 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710273274.1A CN107102888B (zh) | 2017-04-25 | 2017-04-25 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107102888A CN107102888A (zh) | 2017-08-29 |
CN107102888B true CN107102888B (zh) | 2019-11-22 |
Family
ID=59657520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710273274.1A Active CN107102888B (zh) | 2017-04-25 | 2017-04-25 | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107102888B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647513B (zh) * | 2018-03-22 | 2020-04-28 | 华中科技大学 | 一种基于TrustZone的共享库安全隔离方法及系统 |
CN109558211B (zh) * | 2018-11-27 | 2023-03-21 | 上海瓶钵信息科技有限公司 | 保护可信应用与普通应用的交互完整性和保密性的方法 |
CN109784062B (zh) * | 2018-12-29 | 2021-07-20 | 360企业安全技术(珠海)有限公司 | 漏洞检测方法及装置 |
CN110058921B (zh) * | 2019-03-13 | 2021-06-22 | 上海交通大学 | 客户虚拟机内存动态隔离和监控方法及系统 |
CN110018816B (zh) * | 2019-04-12 | 2022-04-22 | 王晨 | 一种基于c/c++编译系统的虚拟机控制系统及其控制方法 |
CN110096871B (zh) * | 2019-05-10 | 2021-03-19 | 南京大学 | 一种基于硬件虚拟化的多核环境进程内核栈保护方法 |
CN114116072A (zh) * | 2020-08-31 | 2022-03-01 | 华为技术有限公司 | 一种共享库的复用方法及电子设备 |
CN112162830B (zh) * | 2020-10-30 | 2021-11-09 | 北京易捷思达科技发展有限公司 | 虚拟机快速启动方法、存储介质及终端 |
CN115114619A (zh) * | 2021-03-23 | 2022-09-27 | 华为技术有限公司 | 一种访问控制的方法、电子设备及系统 |
CN113282375B (zh) * | 2021-07-21 | 2021-11-16 | 武汉天喻信息产业股份有限公司 | 一种虚拟机数据访问方法、装置和计算机可读存储介质 |
CN113704007B (zh) * | 2021-09-14 | 2023-11-07 | 上海交通大学 | 利用硬件特性的无服务器计算平台加速系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
CN106295385A (zh) * | 2015-05-29 | 2017-01-04 | 华为技术有限公司 | 一种数据保护方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9274974B1 (en) * | 2005-10-21 | 2016-03-01 | Vmware, Inc. | Isolating data within a computer system using private shadow mappings |
US10956571B2 (en) * | 2015-05-15 | 2021-03-23 | Intel Corporation | Kernel runtime integrity using processor assists |
-
2017
- 2017-04-25 CN CN201710273274.1A patent/CN107102888B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101477496A (zh) * | 2008-12-29 | 2009-07-08 | 北京航空航天大学 | 基于分布式内存虚拟化的numa结构的实现方法 |
CN106295385A (zh) * | 2015-05-29 | 2017-01-04 | 华为技术有限公司 | 一种数据保护方法和装置 |
CN106203082A (zh) * | 2016-06-29 | 2016-12-07 | 上海交通大学 | 基于虚拟化硬件特性的高效隔离内核模块的系统及方法 |
Non-Patent Citations (1)
Title |
---|
基于虚拟机的内核完整性保护技术;张磊 等;《电子科技大学学报》;20150131;第44卷(第1期);117-122 * |
Also Published As
Publication number | Publication date |
---|---|
CN107102888A (zh) | 2017-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107102888B (zh) | 一种基于硬件虚拟化技术的共享库隔离保护方法及系统 | |
CN109522754B (zh) | 一种移动终端可信隔离环境核心控制方法 | |
CN109923546B (zh) | 虚拟机安全性应用程序的事件过滤 | |
US8341369B2 (en) | Providing protected access to critical memory regions | |
CN1295604C (zh) | 限制在虚拟机监控器上运行的客户软件操作的方法和系统 | |
CN109840410A (zh) | 一种进程内数据隔离与保护的方法和系统 | |
CN106970823B (zh) | 高效的基于嵌套虚拟化的虚拟机安全保护方法及系统 | |
US10255088B2 (en) | Modification of write-protected memory using code patching | |
CN109933441A (zh) | 微内核进程间通讯方法和系统 | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
JP2016129071A (ja) | ハイパーバイザ環境においてカーネルルートキットに対する保護を実行するシステムおよび方法 | |
CN110058921B (zh) | 客户虚拟机内存动态隔离和监控方法及系统 | |
WO2007079011A2 (en) | Page coloring to associate memory pages with programs | |
CN101866408A (zh) | 一种基于虚拟机架构的透明信任链构建系统 | |
CN103778368A (zh) | 一种基于系统虚拟化技术的进程安全隔离方法 | |
US20160147993A1 (en) | Securing secret data embedded in code against compromised interrupt and exception handlers | |
US20170286694A1 (en) | Method and apparatus for performing protected walk based shadow paging | |
CN107194287A (zh) | 一种arm平台上的模块安全隔离方法 | |
DeMott | Bypassing EMET 4.1 | |
US20220366037A1 (en) | Domain transition disable configuration parameter | |
Gold et al. | KVM/370 in retrospect | |
CN107203716B (zh) | 一种Linux内核轻量级结构化保护方法及装置 | |
US7480797B2 (en) | Method and system for preventing current-privilege-level-information leaks to non-privileged code | |
Qiang et al. | Libsec: A hardware virtualization-based isolation for shared library | |
Li et al. | Vminsight: Hardware virtualization-based process security monitoring system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |