本发明专利技术属于计算机系统安全领域,具体涉及针对Cache攻击方式FLUSH+RELOAD,提出了一种基于动态随机化的系统级别的防御方法,能够重复随机化代码、栈、堆。Cache攻击FLUSH+RELOAD是基于共享内存实现的,过程如图1所示。本发明专利技术的方法包括:在代码随机化方面,以函数为单位随机化代码,细化随机化粒度;在栈随机化方面,通过填充空间的大小、填充空间的位置和随机化时刻的设计来确保栈的充分随机化;在堆随机化方面,使用一种新的堆空间随机化技术使得运行时堆空间的分布不再有规律。该方法能够动态随机化防御Cache攻击。
A dynamic randomization method for defending Cache attacks
The invention belongs to the field of computer system security, and specifically relates to a system level defense method based on dynamic randomization for the Cache attack mode FLUSH + RELOAD, which can repeat randomized codes, stacks and heaps. Cache attack FLUSH+RELOAD is based on shared memory implementation, as shown in Figure 1. The method of the invention includes: in the code randomization aspect, randomizing the code in terms of functions to refine the randomization granularity; in the stack randomization aspect, the full randomization of the stack is ensured by the size of the filling space, the position of the filling space and the design of the randomization time; and in the stack randomization aspect, a new stack empty is used. The randomization technology makes the distribution of heap space no longer regular. This method can dynamically and randomize defense against Cache attacks.
【技术实现步骤摘要】
一种动态随机化防御Cache攻击的方法
本专利技术属于计算机系统安全领域,具体涉及针对Cache攻击进行动态随机化防御的方法。
技术介绍
随着网络技术的发展,计算机的安全性已经越来越受到人们的重视,如系统入侵、信息窃取、病毒等各种安全漏洞会对个人及社会造成重大损失。近年来,研究人员提出了一种利用密码设备在运行过程中所泄露的物理信息,例如电磁辐射、功率、时间等作为密码分析渠道,而这种攻击方法我们称之为旁道攻击,也叫侧信道攻击。Cache攻击是一种严重威胁到系统安全的旁道攻击,涉及到服务器、桌面以及嵌入式等各种领域的主流计算机系统。目前基于Last-levelcache(LLC)的旁道攻击具有高带宽、低噪声的特点,同时,由于最后一级缓存具有包容性和多核共享性,所以可以在不需要中断程序的情况下实现对整个或者特定的Cache行进行攻击。在该环境下,Cache攻击呈现上升的趋势并且攻击者所使用的攻击技术更加的“精湛”。随着云服务和虚拟化的大规模普及,将来Cache攻击会更具有杀伤力。同时,缓存攻击正在逐渐渗透到我们的日常应用中,比如扩展到智能手机的可信环境中,对操作系统的安全构成了极大的威胁。现代CPU的缓存结构一般分为三层,分别是L1、L2和L3缓存,L1cache为每个核单独占有,是最接近CPU的,它容量最小,速度最快,一般分为DataCache(数据缓存)和InstructionCache(指令缓存)。L2cache更大一些,速度要慢一些,一般情况下每个核上都有一个独立的L2cache。L3cache是三级缓存中最大的一级,同时也是最慢的一级,一般在多核CPU中是所有核心共有的。在CPU开始执行任务的时候,它首先去L1中寻找它所需的数据,之后去L2,然后去L3。如果存在(命中),则不经内存直接返回该数据;如果不存在(失效),则先把内存中的相应数据载入缓存,再将其返回处理器。为方便阐述攻击过程,以下为操作系统相关内容的一些基本定义:共享内存:为两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常为同一段物理内存。进程可以将同一段共享内存映射到他们自己的地址空间中。在操作系统中存在一种内存优化机制:对于共享库,操作系统会将存储该库的同一段物理内存映射到每一个应用的地址空间中。mmaps:为内存映射函数,使得进程之间通过映射同一个普通文件实现共享内存。迄今为止,主要有FLUSH+RELOAD,EVICT+RELOAD,PRIME+PROBE,FLUSH+FLUSH这四种缓存攻击方式。其中,FLUSH+RELOAD是基于共享内存实现的,分为三个阶段。过程如图1,在Flush阶段,目标进程和攻击者进程进行页面共享,即攻击者诱使目标进程将内存映射函数mmaps应用到目标可执行程序,令其进入到攻击者进程的虚拟地址空间,完成映射文件的内存共享。然后,攻击者进程监控某个特定的Cache行,并将其内容从Cache中擦除。在Wait阶段等待受害者访问共享内存,之后,在Reload阶段,攻击者重新载入特定的共享内存块。如果在Wait阶段,目标进程访问了指定的内存块,那么这个内存空间就会在Cache中有记录,因为访问Cache中数据很快,所以在Reload阶段的重新载入过程只需要很短的时间。否则,如果目标进程没有访问指定的内存空间,那么攻击者就需要从主内存中获取数据,因为访问主内存中数据很慢,所以在Reload阶段得花费更多的时间。因此,攻击者可以根据二次访问时间的长短,确定观察期间受害者是否访问了特定的内存块。这种方法使攻击者确定目标程序使用了哪些具体的指令和访问了哪些数据。目前针对缓存攻击FLUSH+RELOAD提出的防御措施,例如删除clflush指令、禁用共享内存、Cache与主存采用全相联地址映射等方式都不尽如人意。因此,本专利技术提出一个动态随机化系统来充分随机化代码、栈、堆,尽可能地使攻击者所获得的信息失效。
技术实现思路
本专利技术针对Cache攻击方式FLUSH+RELOAD,提出了一种基于动态随机化的系统级别的防御方法,能够动态随机化程序函数、栈帧和堆。一个进程的地址空间组成包括:ELF的ExecutableFile和SharedObjectFile生成的对象:代码段、静态数据段、动态共享库等,和动态对象:运行时刻产生和变化的堆和栈。对地址空间比较大的对象进行整体随机化称之为基址随机化,而对比较细粒度的地址空间对象进行随机化,例如代码段中的单个函数、栈帧等,随机化效果更强。目前的地址空间随机化技术(addressspacerandomization)就是使得进程虚拟空间的布局位于随机的位置,以此来降低被攻击的可能性,这种方案存在随机化粒度太大、随机性不高、只能随机化虚拟地址等缺陷。通过细化随机化粒度、将随机化时刻推迟到运行时、随机化物理地址这些方法,消除了现有随机化方案的缺陷。本方法从三个方面增强了防御能力:第一,针对随机化粒度粗的问题,本专利技术的代码随机化以函数为粒度、栈空间随机化以函数栈帧为单位进行。第二,考虑到随机化时刻问题,当前的随机化机制的一个特点是:当系统启动时,随机化会生效,而我们将随机化时刻推迟到各个函数运行时。随机化的时机越靠近运行时刻,所能获得的随机效果越好。但是,要在运行时刻随机化一个地址空间对象,首先要分析这个对象在地址空间内被引用的情况。对于在运行时刻才建立的地址空间对象堆和栈而言,其中的引用都是通过绝对地址进行的。如果在运行时刻移动这些对象的位置,就需要修改这些引用,在实现中,系统使用迁移表去记录这些信息,使得这种随机化具有可行性。第三,通过随机化物理地址来降低攻击者成功猜测空间位置的可能性。以下为该随机化系统的一些基本定义:符号表:在编译程序中,符号表用于存放程序语言中出现的有关标识符的属性信息。构造函数:是一种方法,主要用于在创建对象时初始化对象,即为对象成员变量赋值。编译器一般会提供一个默认的构造函数,不过此默认构造函数是不带参数的。libc:是Linux下的ANSIC的函数库,ANSIC是基本的C语言函数库,包含了C语言最基本的库函数。构造器:用于在创建对象时执行初始化,当创建一个对象时,系统会为这个对象的实例进行默认的初始化,如果想改变这种默认的初始化,就可以通过自定义构造器来实现。栈帧:CPU以函数为单位动态分配内存,每次子函数的调用都会在栈中分配一定空间以存储其运行信息,这段空间称为该函数的栈帧。一个函数的栈帧通常包含:函数参数、返回地址、前一个函数的基址寄存器(前帧指针)、局部变量等。位图:是一个单Bit的简单向量,每一Bit对应内存的一个字或者一个特定的大小。动态随机化系统能运行在x86,x86_64和PowerPC架构上,大部分的实现细节都是相同的。该系统能够高效地重复随机化代码、栈、堆,使得攻击者在Reload阶段重新加载共享内存的数据时,该数据的空间位置已经发生变化,最后达到的效果如图2所示,设计的具体细节包含以下内容:1.代码随机化该方法以函数为粒度随机化代码,体现在以下四个方面:第一,函数采用malloc、calloc、realloc这种分配内存的函数在堆上随机分配地址空间。第二,每一个转换函数有一个迁移表,里面放置的是一些迁移本文档来自技高网...
【技术保护点】
1.动态随机化防御Cache攻击的实现方法,其特征在于实施步骤为:(1)以函数为粒度随机化代码,在函数不断迁移和重复随机化过程中,使得函数地址变得不可猜测;(2)在函数进行调用时启用栈帧布局随机化策略,在帧初始化阶段向栈中加入随机大小的填充空间;(3)在堆随机化方面,通过在洗牌层包裹基础分配器,使得运行时堆空间的分布不再有规律。
【技术特征摘要】
1.动态随机化防御Cache攻击的实现方法,其特征在于实施步骤为:(1)以函数为粒度随机化代码,在函数不断迁移和重复随机化过程中,使得函数地址变得不可猜测;(2)在函数进行调用时启用栈帧布局随机化策略,在帧初始化阶段向栈中加入随机大小的填充空间;(3)在堆随机化方面,通过在洗牌层包裹基础分配器,使得运行时堆空间的分布不再有规律。2.根据权利要求1所述的动态随机化防御Cache攻击的实现方法,其特征在于本方法能够以函数为粒度随机化代码:(1)在初始化阶段,在每个函数的开头放置了一个陷阱指令,用于触发迁移表工作;(2)在函数迁移阶段,当陷阱函数执行的时候,动态随机化系统在运行时接收一个SIGTRAP信号并迁移函数;(3)系统每隔一个固定时间段重复随机化函数;(4)在重复随机化完成之后,释放内存。3.根据权利要求1所述的动态随机化防御Cache攻击的实现方法,其特征在于本方法能够控制栈填充空间的大小、填充空间...
【专利技术属性】
技术研发人员:陈浩,唐文娟,孙建华,
申请(专利权)人:湖南大学,
类型:发明
国别省市:湖南,43
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。