[发明专利]基于栈随机化的溢出攻击防御方法及系统在审
申请号: | 202111568507.3 | 申请日: | 2021-12-21 |
公开(公告)号: | CN114238942A | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 原锦辉;周洪伟;单芳芳;文坤 | 申请(专利权)人: | 中原工学院 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 周艳巧 |
地址: | 450000 河南*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 随机化 溢出 攻击 防御 方法 系统 | ||
本发明属于计算机安全技术领域,特别涉及一种基于栈随机化的溢出攻击防御方法及系统,包含:随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度的数据片段插入返回地址后并生成返回地址随机化处理的内嵌成分内容;通过编译器将所述内嵌成分内容重编译生成功能相同且增加安全机制的程序,该安全机制中利用返回地址随机化处理使程序函数调用发生时返回地址在栈中的位置随机不确定化,使栈缓冲区溢出攻击难度增加,避免返回地址完整性检测等工作,提高返回地址保护整体效率。
技术领域
本发明属于计算机安全技术领域,特别涉及一种基于栈随机化的溢出攻击防御方法及系统。
背景技术
栈缓冲区溢出攻击是通过持续往栈内写入数据,从而覆盖返回地址,从而使软件控制流发生变化。栈缓冲区溢出攻击成功的关键在于攻击者能够准确判断返回地址所在的位置。在现实攻击场景中,攻击者一旦发现软件存在栈缓冲区溢出攻击漏洞,往往可以通过有限次的测试,就判断出返回地址所在的位置。对于栈缓冲区溢出攻击,最为经典的防御方法是StackGuard。简单来说,StackGuard是在栈中插入一个标志字作为“哨兵”,当攻击者通过持续注入非法地址篡改返回地址时,会覆盖“哨兵”。这样,当程序从子函数中返回时,会首先检查“哨兵”是否正常,如果“哨兵”被覆盖,那么就意味着发生攻击。为了防止“哨兵”被攻击者猜测,还需要对“哨兵”进行必要的处理,典型的方法是随机化。由于非法输入的数据通常都是字符串,那么也可以使“哨兵”包含字符串结束字符,使其无法覆盖“哨兵”。StackShield采用的是备份的方法来保护栈中的返回地址,即“影子栈”。当函数被调用时,它的返回地址会被写入影子栈,然后执行函数主体:当函数即将返回时,会将栈项的返回地址和影子栈中的返回地址作比较,如果两个地址完全相同,那么就能够正常返回,否则程序就会停止执行。当然,在函数即将返回时,也可直接将影子栈中的返回地址直接拷贝到运行时栈项,作为函数返回地址。对于传统的影子栈实现方式,由于内存与寄存器之间多次的值拷贝严重影响了它的性能,以至于防御者们不能在防御功效和性能开销之间找到平衡点。
现有防御栈缓冲区溢出攻击的方法往往存在被绕开的可能,同时因为完整性检查的原因导致性能开销较大。从攻击原理上来讲,栈缓冲区溢出攻击就是利用诸如数组之类不安全变量与返回地址之间的相对距离固定,通过反复测试就可以准确覆盖返回地址。现有若干工作都是围绕如何检测返回地址完整性来实施,并没有从根本上打破上述这一规律,这使得这些工作往往都无法真正解决栈缓冲区溢出攻击或者存在较大的代价。例如哨兵策略:攻击者在精确了解到返回地址所在位置后,可以跳过哨兵对返回地址进行覆盖,这样就可以在保证哨兵完整性的前提下实施攻击。例如影子栈策略:有的影子栈仍与返回地址存在一定地址映射关系,所以攻击者在覆盖返回地址后仍然可以继续覆盖影子栈中的返回地址,同时由于影子栈和检测的开销,导致影子栈会给软件运行带来一定性能损失。上述方法围绕着返回地址做必要的检查和防护,但是并没有对返回地址本身做处理。
发明内容
为此,本发明提供一种基于栈随机化的溢出攻击防御方法及系统,通过动态插入长度随机变化的数据片段,使栈中返回地址与攻击者溢出的起点(即变量,例如字符数组)之间的相对距离发生变化,以空间换时间策略来增加栈中存储空间的大小,达到减少返回地址完整性检测等时间开销的目的,使栈缓冲区溢出攻击难度增加,通过一定的存储空间浪费来避免返回地址完整性检测等繁琐工作,提高返回地址保护的整体效率。
按照本发明所提供的设计方案,一种基于栈随机化的溢出攻击防御方法,包含如下内容:
随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示填充在返回地址和数据溢出点(攻击者可能利用的局部变量)之间数据片段长度的随机数;
依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度下的数据片段插入返回地址中并生成返回地址随机化处理的内嵌成分内容;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中原工学院,未经中原工学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111568507.3/2.html,转载请声明来源钻瓜专利网。