寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置的制作方法

文档序号:6649754阅读:163来源:国知局
专利名称:寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置的制作方法
技术领域
本发明提供一种保护寄信人地址免受缓冲器溢出(Buffer Overflow)进攻的存储器堆栈分离方法及装置,尤其是提供为了防御以裂化或是病毒为主要进攻手段的缓冲器溢出(Buffer Overflow)进攻而在存储器的一部分设置有分离堆栈(SplitStack),通过利用变换索引缓冲器(TLBTranslate Look_aside Buffer)的分离堆栈保护分离寄信人地址免受其他数据影响的保护机械装置,利用保留位锁定变换索引缓冲器的一个块进行防御的一种寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置。
背景技术
最近,因特网发展很快,对因特网的进攻仍然急剧增加。在多样的进攻方法中占比例最大的就是缓冲器溢出进攻。1988年最初蠕虫莫里斯蠕虫中利用缓冲器溢出最弱点开始到最近的红代码、爆破工蠕虫为止在许多地方持续着利用缓冲器溢出的进攻。
缓冲器溢出输入大于分配在存储器中的缓冲器的量的数据,操作程序的寄信人地址(Return Address),最终实行黑客想要的代码。在这里存储器的堆栈(Stack)区和堆(Heap)区属于称作″缓冲器(Buffer)″的程序处理过程中必要的数据一时存储的空间,根据″缓冲器溢出″是利用这两个区中的哪一个区可以分成两类。
但是,缓冲器溢出进攻中最一般的类型是通过溢出变更存储在堆栈的寄信人地址的堆栈粉碎。大部分的时候缓冲器和寄信人地址由于是邻接的所以只要做小小的努力就很容易引起缓冲器溢出。接着,为了阻挡堆栈粉碎就必须要保护寄信人地址。
保护寄信人地址的方法包括在寄信人地址和缓冲器之间插入称作金丝雀(Canary)的任意值,进攻者引起缓冲器溢出时可以感知金丝雀值的变化的方法和把寄信人地址与现在一样不存储在堆栈中而是存储在另外的空间后切断进攻的可能性的方法。前者的情况,由于简单地修改硅编译器可以看到好的效果,内务操作少在″Stack Guard″,″Pro Police″等现有的许多软件的技法中被使用。后者的情况,由于从开头就阻挡寄信人地址的滥用,虽然具有更好的优点,但是保护准备的另外空间的附加费用就变得很必要,因此主要被利用在利用硬件的防御法中。
利用硬件的现有技术Xu,et al或是Lee,et al及Smash Guard防御法等是从论文中得知的。图1a是保护寄信人地址免受缓冲器溢出进攻的Xu,et al的方案图,图1b是Lee,et al的方案图,图1c是Smash Guard的方案图。
改善现有技术的大部分的软件方法的低下的性能,为了提高安全性提出的硬件技法应用的是为了共同保护寄信人地址与现有的数据一起不存储寄信人地址,而是在设置有另外的硬件堆栈中存储寄信人地址的后者的方式。
Xu,et al首先在它的论文中提出的是利用为了存储寄信人地址的另外的场所接受硬件的支援的存储器的一部分或是利用为了提高传递途径的性能而使用的返回地址堆栈(RASReturn Address Stack)的方案。Lee,et al或是Smash Guard防御法提出的方案是代替现有的硬件应用,设置有为了存储寄信人地址的新的存储装置。但是这样的方法存在着如下的问题。
Xu,et al时,存在着这样的问题只是提出了大的模式的概念,并没有提出怎么确保另外的存储空间的具体方法。另外不顾寄信人地址存储在存储器中,没有提出可以保护免受缓冲器溢出进攻的机械装置。另外,Lee,et al时或是Smash Guard时存在着这样的问题要存储寄信人地址的另外的空间与兑现的相同设置有新的存储空间,因此存在着增加很大费用的缺点和没有明确新的存储空间的定义。

发明内容
本发明是为了解决上述问题而提出来的,它的目的就是提供为了防御以裂化或是病毒为主要进攻手段的缓冲器溢出进攻而在存储器的一部分上设置分离堆栈,通过利用变换索引缓冲器(TLB)的分离堆栈保护分离寄信人地址免受其他数据影响的保护机械装置,利用保留位锁定变换索引缓冲器的一个块从而进行防御的一种寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置。
为了实现上述目的,本发明的寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法中包括以下几个步骤,其特征在于第1步骤,把存储器的堆栈区分离成缓冲器区和分离堆栈区;第2步骤,根据变换索引缓冲器把上述分离堆栈区以一个块的锁住状态来保护;及第3步骤,恢复上述分离堆栈区的最上部中存在的寄信人地址。
另外,为了实现上述目的,本发明的寄信人地址免受缓冲器溢出进攻的存储器堆栈分离装置,其特征在于为了保护寄信人地址免受缓冲器溢出进攻,把堆栈区分离成为了存储数据的缓冲器区和为了存储寄信人地址的分离堆栈区。
本发明的效果如上所述的本发明的寄信人地址免受缓冲器溢出的存储器堆栈分离方法及装置有如下效果由于用硬件防御缓冲器溢出进攻,与利用软件的方法相比可以改善性能低下的问题,可以最大限度地改善新硬件的使用,由于利用修改的现有的硬件,因此可以降低实现的费用。另外,现有技术支持使用的软件的互换性,因此可以很容易地使用,增加了用户的便利性。
为进一步说明本发明的上述目的、结构特点和效果,以下将结合附图对本发明进行详细的描述。


图1a是保护寄信人地址免受缓冲器溢出进攻的Xu,et al的方案图。
图1b是保护寄信人地址免受缓冲器溢出进攻的Lee,et al的方案图。
图1c是保护寄信人地址免受缓冲器溢出进攻的Smash Guard的方案图.
图2是说明本发明的实施例的保护寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法的概念图。
附图中主要部分的符号说明dTLB(data Translation Look-aside Buffer)数据变换索引缓冲器TLB(Translation Look-aside Buffer)变换索引缓冲器具体实施方式
下面参照附图对本发明的寄信人地址免受缓冲器溢出的存储器堆栈分离方法及装置的实施例进行详细说明。
首先在各个图面的构成要素上附加参照符号,必须要留意即使相同的构成要素在不同的图面上显示的也可能是一个相同的符号。
另外,由于对本发明已经进行了说明,因此省略了判断有关的众所周知的构成或是技能的具体的说明。
图2是说明本发明的实施例的保护寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法的概念图。
首先,本发明中把存储器堆栈分离(Split)成缓冲器(Buffer)区和寄信人地址(Return Address)区。如图2中的(a)所示分成构成缓冲器1、缓冲器2、缓冲器3...等的堆栈区和构成寄信人地址1、寄信人地址2、寄信人地址3...等的分离堆栈区。
接着,为了保护分离堆栈区免受缓冲器溢出进攻呼出Dtlb(Data TranslationLook-aside Buffer)。在这里把称作TLB的假想地址变成物理的地址参照的一种表格,分成命令语的iTLB和数据的dTLB,本发明中使用频率是使用相对少的dTLB。
呼出dTLB函数后,根据如图2中的(b)所示的dTLB利用锁定位(Locking Bit)保护分离堆栈区。接着,由于锁定根据dTLB被保护的一个块,因此保留dTLB块是存储器区中存储的寄信人地址的堆栈。这里,锁定状态的分离堆栈区由于只能在dTLB的呼出和恢复时才可能写/读,因此保护那个存储器区。另外,根据代替运算法则(LRU,FIFO,Random)变化不变的构造。为了存储指出那以外新生成的堆栈的最上部的值附加称作通信顺序进程的寄存器。
在这里,锁定存储寄信人地址的分离堆栈区的方式有许多种。
一个动态方式是在整个TLB中附加锁定位把设定与否作为操作系统(OSOperating System)来控制的方式。这时,根据锁定位的设定与否没有附加费用,因而可以调整容易分离的堆栈大小,这是它所具有的优点。但是每一个TLB附加锁定位的费用会增加很多。
另外一个方式就是静态的,把一个块从最开始就锁定成一定容量大小。dTLB的一个块的大小如果假定为4K字节的话,由于可以存储1024个寄信人地址,因此几乎没有增加分离堆栈区大小的必要性。它虽然不能象动态分配那样调整被分离的堆栈的大小,但是可以减少附加整个TLB锁定位的费用,因此具有构造简单的优点。
一方面,保护分离堆栈区以后如图2中的(c)所示在分离堆栈区中根据dTLB返回最上部的寄信人地址3。接着,指出分离堆栈区的最上部的寄存器通信顺序进程的值就成为寄信人地址2。
虽然dTLB的分离堆栈区的一个块使用在其他用途与原来的dTLB中使用的相比增加了″Miss″,但这几乎可以算作没有。如图2中的(b)所示128个记录具有的块大小4K Bytes,4Way Associative dTLB的时″Miss″率只增加0.05%。
静态方式时,关于这个部分不需要另外的实现费用。但是动态的方式时,为了锁定dTLB的块每一个块都需要显示保留与否的锁定位。另外必须附加为了检查保留与否的程序。但是以块单位可以锁定的可能进行多样的应用,实际上与Arm协议栈相同可以在新开发的协议栈中采纳。
如上所述的本发明,提供为了防御以裂化或是病毒为主要进攻手段的缓冲器溢出进攻而在存储器的一部分上设置有分离堆栈,通过利用变换索引缓冲器(TLB)的分离堆栈保护分离寄信人地址免受其他数据的影响的保护机械装置,可以实现利用保留位锁定变换索引缓冲器的一个块来进行防御,保护寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置。
上述说明不过是把本发明的技术思想进行示例性的说明,在本发明所属的技术部门中本领域熟练技术人员在不脱离本发明的本质特性的范围内可以进行多样的修改及变形。
本技术领域中的普通技术人员应当认识到,以上的实施例仅是用来说明本发明,而并非用作为对本发明的限定,只要在本发明的实质精神范围内,对以上所述实施例的变化、变型都将落在本发明权利要求书的范围内。
权利要求
1.一种寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法,其特征在于包括以下几种步骤第1步骤,把存储器的堆栈区分离成缓冲器区和分离堆栈区;第2步骤,根据数据变换索引缓冲器把上述分离堆栈区以一个块的锁定状态来保护;第3步骤,恢复上述分离堆栈区的最上部的寄信人地址。
2.如权利要求1所述的存储器堆栈分离方法,其特征在于所述分离堆栈区只形成数个寄信人地址。
3.如权利要求1所述的存储器堆栈分离方法,其特征在于所述第3步骤中上述寄信人地址被恢复以后指出上述最上部的通信顺序进程的寄存器值变成下面一个的寄信人地址。
4.如权利要求1所述的存储器堆栈分离方法,其特征在于所述第2步骤中上述分离堆栈区只在上述变换索引缓冲器的呼出和恢复时保护可能的写/读。
5.如权利要求1所述的存储器堆栈分离方法,其特征在于所述第2步骤中以整个上述分离堆栈区内附加锁定位把设定与否作为操作系统来控制的动态方式来锁定。
6.如权利要求1所述的存储器堆栈分离方法,其特征在于所述第2步骤中最开始就以一定的容量大小来锁定上述一个块。
7.一种寄信人地址免受缓冲器溢出进攻的存储器堆栈分离装置,其特征在于保护寄信人地址免受缓冲器溢出进攻,把堆栈区分离成为了存储数据的缓冲器区和为了存储寄信人地址的分离堆栈区。
8.如权利要求7所述的存储器堆栈分离装置,其特征在于所述分离堆栈区根据数据变换索引缓冲器以锁定状态保护一个块,根据上述变换索引缓冲器恢复上述分离堆栈区的最上部中的寄信人地址。
9.如权利要求7或8所述的存储器堆栈分离装置,其特征在于所述分离堆栈区保护只在上述变换索引缓冲器的呼出和恢复时可能的写/读。
全文摘要
本发明提供一种寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置,为了防御以裂化或是病毒为主要进攻手段的缓冲器溢出进攻而在存储器的一部分设置有分离堆栈,通过利用变换索引缓冲器的分离堆栈分离保护寄信人地址免受其他数据影响的保护机械装置,利用保留位锁定变换索引缓冲器的一个块进行防御保护寄信人地址免受缓冲器溢出进攻的存储器堆栈分离方法及装置。依据本发明,由于是用硬件来防御缓冲器溢出进攻的,因此与利用软件的方法相比可以改善低下的性能,最大限度改善新硬件的使用,由于利用的是修改的现有的硬件,因此有降低实现费用的效果。另外,支持现有使用软件的互换性,可以很容易使用,有方便用户的效果。
文档编号G06F1/00GK1991852SQ20051011201
公开日2007年7月4日 申请日期2005年12月26日 优先权日2005年12月26日
发明者仁钟言 申请人:上海乐金广电电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1