CN109840411A - 一种应用的保护方法及系统 - Google Patents
一种应用的保护方法及系统 Download PDFInfo
- Publication number
- CN109840411A CN109840411A CN201810164759.1A CN201810164759A CN109840411A CN 109840411 A CN109840411 A CN 109840411A CN 201810164759 A CN201810164759 A CN 201810164759A CN 109840411 A CN109840411 A CN 109840411A
- Authority
- CN
- China
- Prior art keywords
- safety zone
- memory
- privately owned
- access
- region
- 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.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及一种应用的保护方法和系统,包括:获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。随着试探次数的增多,安全区域被随机的次数也会增多,使得攻击者的下次试探会很大概率被捕获。
Description
技术领域
本发明涉及应用软件的安全和防护(Security and Protection)领域,特别涉及一种信息隐藏方法及系统。
背景技术
由于低开销和高安全特性,信息隐藏技术已经成为众多防御机制的防御基础。很多防御机制利用该隐藏技术保护其关键数据。例如,用其保护跳转指令的跳转目标,保护所有的代码指针,保护加解密使用的秘钥,保护安全的栈帧,保护所有代码变体地址等。该技术将隐藏区域(本发明称之为“安全区域”)随机放置到巨大的虚拟地址空间中,并确保所有指向该安全区域的指针无法泄露。巨大的随机熵使得攻击者很难猜到安全区域所在的位置。安全区域只能通过专用寄存器加偏移的方式进行合法访问。
在较长的一段时间里,人们认为利用信息隐藏技术来保护关键数据是安全可靠的。然而随着试探攻击技术的发展,信息隐藏技术已遭到破解。一类方式是避免试探过程中崩溃出现,从而攻击者可以获得持续试探的机会。有些研究人员利用网络服务器应用的工作进程自启动特性,来避免试探过程中的崩溃发生。还有一些研究人员采用注册信号处理函数来避免崩溃。因此诞生了一种更加隐蔽的试探技术,它通过反复申请内存来测量未分配区域(空区域)的大小来间接推断出安全区域的位置。第二类方式是降低安全区域的随机熵,攻击者观察到很多安全区域是线程局部的,因此可以通过大量喷射线程,在虚拟地址空间中喷射大量的安全区域,进而使得其随机熵下降。这些新型攻击方法的出现使得信息隐藏技术不再有效,同时使用该技术的防御机制面临重大的安全威胁。
为了解决上述安全问题,MemSentry提出两种强隔离手段来保护安全区域:一个是基于域的隔离方法;另一个是基于地址的隔离方法。对于访问不频繁的安全区域,它采用第一种隔离方法。每当需要访问安全区域时,MemSentry打开安全区域的内存访问权限;当不需要访问安全区域时,MemSentry关闭安全区域的内存访问权限。对于访问非常频繁的安全区域,它采用第二种隔离方法,即插桩所有的访问指令,来约束访存指令的访问地址,使其不能访问安全区域的位置。基于这两种防御方法,MemSentry开发了一个工具链和一个运行时环境。受保护的程序需要利用MemSentry提供的编译器来编译该程序,并显示指定安全区域。编译后的程序随后运行在其提供的运行时环境里。
虽然MemSentry能够有效保护安全区域,但是它也有很多劣势使得MemSentry很难部署。首先,对于现有使用信息隐藏技术的防御机制,绝大部分的安全区域都是访问频繁的。MemSentry只能使用基于地址的隔离方法,但是该方法开销仍然较大(经SPEC CPU2006基准测试集测试,MemSentry所引入的开销大于15%)。其次,MemSentry需要使用信息隐藏技术的防御机制和被保护的程序都需要有源代码,进行重新编译。然而,现有大部分防御机制都是针对二进制程序的,不需要源代码。对于这些防御机制,MemSentry无法提供有效的保护。
通过对所有使用信息隐藏技术的防御机制进行分析,发现现有防御机制的安全区域中均存储着以下内容:代码指针、与代码位置相关的地址、加密秘钥和安全的栈局部变量(该变量不会传播,只会在本函数内访问。该局部变量只通过利用栈指针寄存器进行访问,不能通过绝对地址等其他方式进行访问)。通过观察安全区域中的内容,可以发现受保护的内容都是与安全区域位置无关的,即安全区域中没有存储指向安全区域的绝对地址。安全区域位置无关特性启发了本发明可以通过持续移动安全区域的位置来抵御现有的试探攻击。
由于信息隐藏技术将指向安全区域的指针存放到独占的寄存器中,并确保该寄存器内容不会被泄露,因此攻击者只能通过猜测的手段来暴力扫描内存找到安全区域的位置。
实际上,无论攻击者使用何种方式进行内存虚拟地址扫描,他们都需要通过以下三种攻击渠道来完成攻击:
渠道1:搜集足够多的虚拟内存布局信息来高效地推测安全的位置;
渠道2:创造大量并且持续试探的机会,并且不会使得目标进程崩溃;
渠道3:降低安全区域的随机熵来增大单次试探的成功概率。
发明内容
为了解决上述技术问题,本发明目的在于提供一种应用的保护方法(本发明),其中包括:
步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
该应用的保护方法,其中该方法还包括:
启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
该应用的保护方法,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
该应用的保护方法,其中该步骤2包括:
每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。
该应用的保护方法,其中该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。
本发明还公开了一种应用的保护系统,其中包括:
获取应用模块,用于获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
随机放置模块,用于将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
陷阱遗留模块,用于当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
告警模块,用于当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
该应用的保护系统,其中该系统还包括:
私有内存启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
该应用的保护系统,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
该应用的保护系统,其中该随机放置模块包括:
每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。
该应用的保护系统,其中该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。
本发明的技术效果包括:在使用信息隐藏技术的受保护进程运行时,其安全区域的位置会持续被移动。本发明运行时捕获攻击者所有可能的试探行为(包括内存分配、内存权限设置、内存克隆和内存访问),每当这些试探行为被检测到后,本发明会立即随机移动安全区域的位置。每次安全区域移动后,原有安全区域的位置会变为陷阱区域。随着攻击者试探次数的增多,安全区域被随机的次数也会增多,最终导致受保护进程虚拟地址空间内陷阱区域变多,使得攻击者的下次试探会很大概率被捕获。如果检测到任何对安全区域和陷阱区域的非法访问,本发明会报出警告信息给用户。本发明还利用了硬件虚拟化技术实现了一种全新的线程私有内存技术。所有线程仍然共用同一个页表,但是本发明使得每个线程私有一个EPT。通过配置每个线程的私有EPT,就可以实现所有线程无法访问其他线程的私有内存区域。如果一个线程访问其他线程的私有内存区域,就会触发EPT违反异常,被本发明所捕获。本发明将线程局部安全区域放置到线程私有内存区域中进行隔离。这样当攻击者即使喷射线程,线程局部安全区域的随机熵也不会下降。
附图说明
图1为本发明的持续随机移动安全区域示意图;
图2为本发明基于硬件虚拟化技术的线程私有内存技术示意图;
图3为攻击者潜在的试探行为及本发明的响应策略表格图。
具体实施方式
具体来说本发明公开了一种应用的保护方法,其中包括:
步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
该应用的保护方法,其中该方法还包括:
启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
该应用的保护方法,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
为此,本发明提出了一种应用的保护方法,即信息隐藏技术本发明来阻断上述三种攻击渠道。该应用包括地址、线程等信息。它被设计成一个Linux操作系统的内核模块(驱动)。用户仅需要将该内核模块装载到操作系统中即可使用本发明,无需在应用层对受保护程序及其依赖的防御机制做任何修改。
本发明的目的是解决现有信息隐藏技术不再有效的问题,提出了一种基于信息隐藏技术的应用保护方法和系统。该方法能够使现有使用信息隐藏技术的防御机制不需要任何修改,就可以直接使用新技术保护其安全区域,并且性能开销非常低。
关键点1,采用运行时持续随机移动安全区域并遗留陷阱的方法来保护安全区域;技术效果:本发明运行时监控进程虚拟地址空间内攻击者所有可能的试探行为。当潜在的试探行为发生后,本发明立即随机移动安全区域的位置,并在原有位置遗留相同大小的陷阱(无任何访问权限)区域用来捕获攻击者后来的试探行为;
关键点2,利用硬件虚拟化的二维页表技术实现了一种全新的线程私有内存技术;技术效果:受保护进程运行在一个硬件虚拟化环境下,本发明为受保护进程的每个线程维护一张扩展页表EPT(Extended Page Table),所有线程仍然共享原有的进程页表。每当一个线程被调度运行时,它的客户机虚拟地址会经过共享的进程页表和私有EPT两个表转换得到最终的宿主机物理地址。本发明会配置每个线程的私有EPT,使得其他线程的私有内存区域在该表中是不可访问的。当客户机中的一个受保护进程的线程访问其他线程的私有内存区域时,会触发EPT异常被本发明所捕获;
关键点3,本发明将线程局部的安全区域放置到线程私有内存区域中进行隔离;技术效果:当线程局部的安全区域(线程局部是从线程局部存储(thread local storage)引申过来的,线程局部的安全区域内的数据只会被当前线程使用,一个线程不会访问其他线程的局部区域)利用线程私有内存技术隔离后,任何线程对其他线程的线程局部安全区域的访问都会被本发明所捕获;
本发明运行时捕获攻击者来自受保护进程(应用启动后的运行实体便是该受保护进程,应用的一部分数据存放在该安全区域内)空间内的所有可能试探行为。为了避免过于频繁的随机,每当这些试探行为被检测到后,本发明会立即随机移动安全区域的位置,并在原有位置遗留相同大小的陷阱区域。图1所示为安全区域持续随机的示意图。在图中,可以看到随着攻击者不停地试探,受保护进程虚拟内存空间布局会持续发生变化,内存区域变得越来越碎片化。如此不稳定的动态内存布局阻断了来自渠道1的攻击。
基于本发明的持续随机策略,随着攻击者试探次数越多,受保护进程虚拟地址空间内会产生越多的陷阱区域,这些陷阱区域会使得攻击者的下次试探被捕获的概率增大。如果攻击者触碰到这些陷阱区域或安全区域,本发明会触发安全警告并中断受保护进程的运行。这些陷阱的设置能够阻止攻击者大量持续试探的能力,进而阻断来自渠道2的攻击。
为了阻断来自渠道3的攻击,本发明使用线程私有内存技术来隔离线程局部的安全区域。当线程局部安全区域被保护后,安全区域的随机熵将不会受线程喷射技术的影响。这是因为攻击者在一个线程内发动试探攻击时,他只能访问该线程自身的局部安全区域。
接下来,首先详细介绍本发明是如何识别和捕获攻击者可能的试探行为并采取何种的应对动作,然后介绍本发明是如何利用硬件虚拟化技术实现线程私有内存。
试探行为的识别与捕获步骤。为了检测攻击者所有可能的试探行为,本发明分析了用户空间所有针对内存的操作。攻击者也只能通过这些操作进行内存试探(恶意试探可以隐藏到正常的操作中,但是正常操作是不会通过系统调用直接访问安全区域的。由于无法准确界定恶意试探还是正常操作,所以本发明在一些情况下只是随机了安全区域的位置,并没有报警告)。本发明将这些操作进行了归类,并将所有可能作为试探行为的操作总结到如图3所示的表格中,试探对象是数据区域时,本发明直接忽略。这是因为数据区域非常小,该区域内没有指向安全区域的指针。即使攻击者拿到数据区域全部的内容,对他们来讲对推测安全区域的位置几乎没用。
图3中第一行列出了所有和内存管理相关的系统调用。攻击者能够通过这些系统调用申请、释放和移动内存区域,甚至更改内存区域访问权限,来检测到所操作的内存目标区域是否存在,进而推断出受保护进程内存布局。第二行列出了能够返回EFAULT(错误地址)错误的系统调用,例如write系统调用原型“ssize t write(int fd,void*buf,size tcount)”。这些系统调用中都至少一个参数指向用户空间的某个地址。如果目标地址所在的内存区域没有分配,系统调用会失败并返回EFAULT错误码,但是该操作不会引起进程崩溃。因此,攻击者可以利用该类系统调用隐蔽的试探内存布局。第三行的是能够克隆虚拟内存空间的系统调用。攻击者可以利用这些系统调用,从子进程中进行试探,进而推断出父进程的内存布局情况。第四行列出的是普通的访存指令。攻击者可以利用这些指令直接访问地址来判断某一地址所指向的内存区域是否分配。如果该地址没有对应的已分配内存区域,该访存指令会触发页面异常(page fault exception),最终导致进程崩溃。但是,攻击者可以注册信号处理函数来避免这类崩溃。
由于安全区域经常隐藏到巨大的未分配虚拟地址空间中,并且其他已分配的代码和数据区域并没有指向安全区域的指针,因此试探代码和数据区域对推断安全区域的位置帮助极少。为此,当攻击者试探到这些区域时(如图3中的其他区域),本发明不做任何操作。但是当本发明截获到试探行为针对未分配区域(空区域)、安全区域和陷阱区域的操作时,它会采取以下动作:
1、如果是利用访存指令和系统调用访问陷阱区域,或者是调用系统调用指令访问安全区域时,本发明会直接报出安全警告并中断受保护进程的运行;
2、如果是利用访存指令和系统调用访问到未分配区域时,本发明会随机移动安全区域的位置并遗留陷阱。值得注意的是陷阱区域不会被程序再次分配使用;
3、如果程序调用了内存克隆系统调用,本发明会随机父进程中的安全区域(内存克隆系统调用执行后,一个进程会产生另一个进程,原始进程称之为父进程,新生成的进程称之为父进程。父进程和子进程此时的内存空间布局完全一样。也就是说,父进程安全区域和子进程安全区域位置相同)位置并遗留陷阱区域;
为了避免对虚拟内存空间的过度消耗,本发明会设置陷阱区域总大小的上限。一旦陷阱区域达到上限后,本发明会对安全区域进行随机时随机回收一些之前的陷阱区域。
具体实现上,本发明会修改Linux内核的系统调用表使其指向其新创建的系统调用入口(本发明被设计成一个内核模块,在该内核模块中创建了很多新的系统调用,作为该系统调用入口)来截获如图3中提到所有系统调用。类似的,为了截获系统调用指令和访存指令引起的页面异常(page fault exception。访存指令访问的目标内存页所在的页表项如果没有映射或者访问权限不正确,会触发页面异常进入操作系统处理),本发明修改了中断描述符表,每当截获到相应的系统调用和页面异常,本发明会解析系统调用参数或页面异常地址来判定访问区域是否与安全区域和陷阱区域等有交叠,进而推断出是否访问这些区域。初始安全区域的初始位置是通过解析独占寄存器中的值获得的。本发明调用do_mremap()(将一个已分配的内存区域从一个位置映射到另一个位置)配合一个随机产生的地址来随机移动安全区域的位置。每次随机完安全区域的位置,本发明负责更新独占寄存器中的值使其指向随机后的安全区域,并调用do_mmap()在原有位置申请一个没有任何访问权限(禁止一切访问)的陷阱区域。
线程私有内存技术的实现。通过配置每个线程(应用程序创建的线程)一个页表是可以直接实现线程私有内存的。但是由于该方法无法监控页表项中访问位和脏位的更新,会破坏操作系统正常的物理内存回收功能。为此,本发明提出一种新的线程私有内存技术。
目前绝大部分处理器都提出了硬件辅助的二维页表技术来支持内存虚拟化,如Intel和AMD。通常来讲,一个客户机的访存操作需要经历两层地址转换:客户机虚拟地址到客户机物理地址和客户机物理地址到宿主机(举个简单例子来描述一下客户机和宿主机。在一台win7的电脑上安装了一个vmware软件,vmware软件能够虚拟化一个全新的硬件环境,上面运行着一个win10操作系统。在这里win7是宿主机,win10是客户机)物理地址的转换。第一层地址转换是通过硬件遍历客户机页表完成的,第二层地址转换是通过硬件遍历一个Hypervisor(超级监督者,也就是宿主机)维护的页表(Intel称之为EPT,AMD称之为NPT)完成的。为了介绍起来方便,Hypervisor(即前述的vmware软件)维护的页表统称为EPT。
传统虚拟化场景中,一个拥有多个虚拟处理器核心的客户机会使用一个EPT。假设一个多线程程序运行在拥有2个虚拟处理器核心的客户机上,此时客户机每个虚拟核心中虚拟的页表基址寄存器均指向多线程的页表基地址。同时,这两个虚拟核心的EPTP(EPTpointer,EPT指针)均指向一个EPT,需要注意的是,EPTP是虚拟化领域的专业术语,它类似于页表基址寄存器,只不过它指向的不是客户机页表,而是宿主机维护的EPT。虚拟核心中EPTP指向哪个EPT,那么虚拟核心就会使用哪个EPT进行第二级地址转换。
虽然一个进程的所有线程共享一张客户机页表,但是每个客户机的虚拟核心拥有自己的EPTP。因此,通过配置每个虚拟核心的EPTP指向不同的EPT来实现线程私有内存技术。在该技术中,每个线程会拥有自己的一个EPT(每个线程拥有唯一一个EPT。每个虚拟核心拥有唯一一个EPTP。一个虚拟核心会被客户机操作系统调度运行非常多的应用(包括线程)。每当一个虚拟核心运行一个受保护进程的线程时,本发明需要将该虚拟核心的EPTP指向该线程的EPT),其他线程的线程私有内存区域所对应的客户机物理页面在当前线程私有的EPT中被配置成不可访问的权限。每当一个线程访问其他线程的线程私有内存区域时,就会触发EPT违反异常,进而被Hypervisor所捕获。图2所示的是一个使用本发明线程私有内存技术的例子。当线程1尝试访问自己的私有内存页面P1时,硬件会同时遍历虚拟核心1指向的客户机页表和EPT1,最终访问到宿主机物理页面P3。如果线程0访问线程1的私有内存页面P1(也就是P0)时,由于EPT0中并不存在P2到P3的页面映射,该访问会触发EPT违反异常被Hypervisor所捕获。同时,每当客户机操作系统调度一个受保护的线程运行在某个虚拟核心时,Hypervisor会将该虚拟核心的EPTP指向该线程独有的EPT。每当客户机操作系统调度一个无关的进程运行时,Hypervisor会将当前虚拟核心指向默认的一个EPT中。
当线程局部安全区域存放在该技术所支持的线程私有内存区域中时,即使攻击者进行线程喷射,任何一个线程也只能访问到自己的安全区域,不能起到降低安全区域随机熵的作用。另外,由于线程私有内存技术的存在,线程喷射会在线程中喷射出非常多的不可访问区域(其他线程的线程局部安全区域),攻击者的内存试探行为更容易被本发明所捕获。
具体实现上,为了能够在没有虚拟化环境的硬件上运行起来,本发明在其内核模块中集成了一个非常小的Hypervisor。每当本发明被装载进当前正在运行的操作系统中时,会首先启动Hypervisor,将当前运行环境虚拟成客户机。为了监控线程切换并调度对应的EPT,本发明利用Linux系统中提供的preemptionnotifier机制。每当一个线程被调度运行时,本发明会被通知到该事件。为了配置每个线程的EPT表项,本发明会遍历受保护进程中所有的线程局部安全区域对应的页表项,找到对应的物理页面(也就是客户机物理页面)。本发明会根据这些客户机物理页面配置EPT中这些项,使得一个线程的EPT中其他线程的线程局部安全区域所对应的客户机物理页面是不可以访问的。
以下为与上述方法实施例对应的系统实施例,本实施系统可与上述实施方式互相配合实施。上述施方式中提到的相关技术细节在本实施系统中依然有效,为了减少重复,这里不再赘述。相应地,本实施系统中提到的相关技术细节也可应用在上述实施方式中。
本发明还公开了一种应用的保护系统,其中包括:
获取应用模块,用于获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
随机放置模块,用于将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
陷阱遗留模块,用于当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
告警模块,用于当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
该应用的保护系统,其中该系统还包括:
私有内存启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
该应用的保护系统,其中通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
综上,本发明能够有效地克服MemSentry的两个重大缺点。本发明的技术使得现有使用信息隐藏技术的防御机制不需要任何修改,就可以直接使用新技术,并且性能开销非常低。
信息隐藏技术已经被很多防御机制采用用来保护其关键数据。很多防御机制和很多受保护的应用程序是没有源代码的。因此,为了让这些防御机制能够依然有效。本发明需要开发一种全新的信息隐藏技术。为了使得该技术具有实用性、实际性和安全性,本发明提出的数据保护技术具有三种特性:1)透明性和自包含特性。该技术应当与现有的防御机制和其保护的对象相互独立,并且能够被直接集成到这些防御机制中;2)能够有效对抗现有的所有试探攻击;3)低开销特性。该技术应当比现有直接的内存保护技术(设置访问权限)更加高效。
虽然本发明以上述实施例公开,但具体实施例仅用以解释本发明,并不用于限定本发明,任何本技术领域技术人员,在不脱离本发明的构思和范围内,可作一些的变更和完善,故本发明的权利保护范围以权利要求书为准。
Claims (10)
1.一种应用的保护方法,其特征在于,包括:
步骤1、获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
步骤2、将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
步骤3、当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
步骤4、当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
2.如权利要求1所述的应用的保护方法,其特征在于,该方法还包括:
启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
3.如权利要求2所述的应用的保护方法,其特征在于,通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
4.如权利要求1所述的应用的保护方法,其特征在于,该步骤2包括:
每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。
5.如权利要求1所述的应用的保护方法,其特征在于,该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。
6.一种应用的保护系统,其特征在于,包括:
获取应用模块,用于获取该应用,该应用包括第一部分应用和第二部分应用,内存空间包括安全区域;
随机放置模块,用于将应用该第一部分应用存放至该安全区域,应用第二部分应用存放至该安全区域外的该内存空间,将指向该安全区域的地址随机放置到虚拟地址空间中;
陷阱遗留模块,用于当该虚拟地址空间内发生试探行为时,在该内存空间中随机移动该安全区域的位置,并在该安全区域原有位置遗留一个禁止访问的陷阱区域;
告警模块,用于当检测到任何对该陷阱区域的访问时,报出访问陷阱区域的警告信息给用户。
7.如权利要求6所述的应用的保护系统,其特征在于,该系统还包括:
私有内存启动该应用第一部分,生成受保护第一进程,为该第一进程的每个线程分配私有内存区域;启动该应用第二部分,生成受保护第二进程,为该第二进程的每个线程分配私有内存区域;
当某一线程访问其他线程的私有内存区域时,报出访问私有内存区域的警告信息给用户。
8.如权利要求7所述的应用的保护系统,其特征在于,通过为每个线程分别维护各自独立的一张私有扩展页表,每一张私有扩展页表分别对应一个私有内存区域。
9.如权利要求6所述的应用的保护系统,其特征在于,该随机放置模块包括:
每次随机移动完安全区域的位置,更新独占寄存器中的值使其指向随机移动后的该安全区域,并在该安全区域原有位置遗留一个于该安全区域相同大小的该陷阱区域。
10.如权利要求6所述的应用的保护系统,其特征在于,该试探行为包括内存分配、内存权限设置、内存克隆和内存访问。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810164759.1A CN109840411B (zh) | 2018-02-27 | 2018-02-27 | 一种应用的保护方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810164759.1A CN109840411B (zh) | 2018-02-27 | 2018-02-27 | 一种应用的保护方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109840411A true CN109840411A (zh) | 2019-06-04 |
CN109840411B CN109840411B (zh) | 2021-01-08 |
Family
ID=66882904
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810164759.1A Active CN109840411B (zh) | 2018-02-27 | 2018-02-27 | 一种应用的保护方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109840411B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182580A (zh) * | 2019-09-19 | 2021-01-05 | 中国科学院信息工程研究所 | 一种基于处理器芯片的内存漏洞检测方法及电子装置 |
CN113569231A (zh) * | 2021-09-27 | 2021-10-29 | 北京智芯微电子科技有限公司 | 多进程的mpu保护方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308475A (zh) * | 2008-07-15 | 2008-11-19 | 中兴通讯股份有限公司 | 安全移动存储系统及其使用方法 |
CN102804153A (zh) * | 2010-02-17 | 2012-11-28 | Arm有限公司 | 在安全与非安全存储器区域内存储安全模式页表数据 |
KR20130101646A (ko) * | 2012-02-22 | 2013-09-16 | 주식회사 팬택 | 휴대용 단말의 메모리 보안 시스템 |
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
CN106919521A (zh) * | 2015-12-28 | 2017-07-04 | 三星电子株式会社 | 片上系统及包括片上系统的系统及移动装置 |
-
2018
- 2018-02-27 CN CN201810164759.1A patent/CN109840411B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308475A (zh) * | 2008-07-15 | 2008-11-19 | 中兴通讯股份有限公司 | 安全移动存储系统及其使用方法 |
CN102804153A (zh) * | 2010-02-17 | 2012-11-28 | Arm有限公司 | 在安全与非安全存储器区域内存储安全模式页表数据 |
KR20130101646A (ko) * | 2012-02-22 | 2013-09-16 | 주식회사 팬택 | 휴대용 단말의 메모리 보안 시스템 |
CN106919521A (zh) * | 2015-12-28 | 2017-07-04 | 三星电子株式会社 | 片上系统及包括片上系统的系统及移动装置 |
CN105677879A (zh) * | 2016-01-12 | 2016-06-15 | 诸葛晴凤 | 内存关系数据库的数据组织及访问方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112182580A (zh) * | 2019-09-19 | 2021-01-05 | 中国科学院信息工程研究所 | 一种基于处理器芯片的内存漏洞检测方法及电子装置 |
CN112182580B (zh) * | 2019-09-19 | 2024-04-09 | 中国科学院信息工程研究所 | 一种基于处理器芯片的内存漏洞检测方法及电子装置 |
CN113569231A (zh) * | 2021-09-27 | 2021-10-29 | 北京智芯微电子科技有限公司 | 多进程的mpu保护方法、装置及电子设备 |
CN113569231B (zh) * | 2021-09-27 | 2022-01-25 | 北京智芯微电子科技有限公司 | 多进程的mpu保护方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109840411B (zh) | 2021-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Payne et al. | Lares: An architecture for secure active monitoring using virtualization | |
CN103907098B (zh) | 用于管理程序环境中的关键地址空间保护的系统和方法 | |
US20160232347A1 (en) | Mitigating malware code injections using stack unwinding | |
CN105593870B (zh) | 用于恶意软件检测的复杂评分 | |
US8732824B2 (en) | Method and system for monitoring integrity of running computer system | |
Gu et al. | Process implanting: A new active introspection framework for virtualization | |
EP3341879B1 (en) | System and method for monitoring and protecting an untrusted operating system by means of a trusted operating system | |
KR20190096959A (ko) | 가상 머신 보안 어플리케이션을 위한 이벤트 필터링 | |
KR20080030543A (ko) | 무단 변경 방지 방법, 무단 변경 방지 프로세서, 무단 변경방지 제품, 무단 변경 방지 시스템 | |
CN101278260A (zh) | 使软件程序免于弱点和攻击的约束注入系统 | |
CN105393255A (zh) | 用于虚拟机中的恶意软件检测的过程评估 | |
CN103858129A (zh) | 用于在系统管理程序环境中进行内核rootkit保护的系统和方法 | |
CN101589364A (zh) | 保护代理和特权模式 | |
CN101589365A (zh) | 保护操作系统资源 | |
WO2015199568A1 (en) | Systems and methods for dynamically protecting a stack from below the operating system | |
Wang et al. | {SafeHidden}: An Efficient and Secure Information Hiding Technique Using Re-randomization | |
CN109840411A (zh) | 一种应用的保护方法及系统 | |
Zhu et al. | HA-VMSI: A lightweight virtual machine isolation approach with commodity hardware for ARM | |
Wang et al. | Making information hiding effective again | |
Park et al. | Libmpk: software abstraction for Intel memory protection keys | |
WO2017213643A1 (en) | Executing services in containers | |
CN110069920A (zh) | 基于虚拟化保证sgx安全性的方法和系统 | |
Hua et al. | Barrier: a lightweight hypervisor for protecting kernel integrity via memory isolation | |
US11556645B2 (en) | Monitoring control-flow integrity | |
Yan et al. | MOSKG: countering kernel rootkits with a secure paging mechanism |
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 |