当前位置: 首页 > 专利查询>中原工学院专利>正文

基于栈随机化的溢出攻击防御方法及系统技术方案

技术编号:32833335 阅读:24 留言:0更新日期:2022-03-26 20:49
本发明专利技术属于计算机安全技术领域,特别涉及一种基于栈随机化的溢出攻击防御方法及系统,包含:随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度的数据片段插入返回地址后并生成返回地址随机化处理的内嵌成分内容;通过编译器将所述内嵌成分内容重编译生成功能相同且增加安全机制的程序,该安全机制中利用返回地址随机化处理使程序函数调用发生时返回地址在栈中的位置随机不确定化,使栈缓冲区溢出攻击难度增加,避免返回地址完整性检测等工作,提高返回地址保护整体效率。保护整体效率。保护整体效率。

【技术实现步骤摘要】
基于栈随机化的溢出攻击防御方法及系统


[0001]本专利技术属于计算机安全
,特别涉及一种基于栈随机化的溢出攻击防御方法及系统。

技术介绍

[0002]栈缓冲区溢出攻击是通过持续往栈内写入数据,从而覆盖返回地址,从而使软件控制流发生变化。栈缓冲区溢出攻击成功的关键在于攻击者能够准确判断返回地址所在的位置。在现实攻击场景中,攻击者一旦发现软件存在栈缓冲区溢出攻击漏洞,往往可以通过有限次的测试,就判断出返回地址所在的位置。对于栈缓冲区溢出攻击,最为经典的防御方法是StackGuard。简单来说,StackGuard是在栈中插入一个标志字作为“哨兵”,当攻击者通过持续注入非法地址篡改返回地址时,会覆盖“哨兵”。这样,当程序从子函数中返回时,会首先检查“哨兵”是否正常,如果“哨兵”被覆盖,那么就意味着发生攻击。为了防止“哨兵”被攻击者猜测,还需要对“哨兵”进行必要的处理,典型的方法是随机化。由于非法输入的数据通常都是字符串,那么也可以使“哨兵”包含字符串结束字符,使其无法覆盖“哨兵”。StackShield采用的是备份的方法来保护栈中的返回地址,即“影子栈”。当函数被调用时,它的返回地址会被写入影子栈,然后执行函数主体:当函数即将返回时,会将栈项的返回地址和影子栈中的返回地址作比较,如果两个地址完全相同,那么就能够正常返回,否则程序就会停止执行。当然,在函数即将返回时,也可直接将影子栈中的返回地址直接拷贝到运行时栈项,作为函数返回地址。对于传统的影子栈实现方式,由于内存与寄存器之间多次的值拷贝严重影响了它的性能,以至于防御者们不能在防御功效和性能开销之间找到平衡点。
[0003]现有防御栈缓冲区溢出攻击的方法往往存在被绕开的可能,同时因为完整性检查的原因导致性能开销较大。从攻击原理上来讲,栈缓冲区溢出攻击就是利用诸如数组之类不安全变量与返回地址之间的相对距离固定,通过反复测试就可以准确覆盖返回地址。现有若干工作都是围绕如何检测返回地址完整性来实施,并没有从根本上打破上述这一规律,这使得这些工作往往都无法真正解决栈缓冲区溢出攻击或者存在较大的代价。例如哨兵策略:攻击者在精确了解到返回地址所在位置后,可以跳过哨兵对返回地址进行覆盖,这样就可以在保证哨兵完整性的前提下实施攻击。例如影子栈策略:有的影子栈仍与返回地址存在一定地址映射关系,所以攻击者在覆盖返回地址后仍然可以继续覆盖影子栈中的返回地址,同时由于影子栈和检测的开销,导致影子栈会给软件运行带来一定性能损失。上述方法围绕着返回地址做必要的检查和防护,但是并没有对返回地址本身做处理。

技术实现思路

[0004]为此,本专利技术提供一种基于栈随机化的溢出攻击防御方法及系统,通过动态插入长度随机变化的数据片段,使栈中返回地址与攻击者溢出的起点(即变量,例如字符数组)之间的相对距离发生变化,以空间换时间策略来增加栈中存储空间的大小,达到减少返回地址完整性检测等时间开销的目的,使栈缓冲区溢出攻击难度增加,通过一定的存储空间
浪费来避免返回地址完整性检测等繁琐工作,提高返回地址保护的整体效率。
[0005]按照本专利技术所提供的设计方案,一种基于栈随机化的溢出攻击防御方法,包含如下内容:
[0006]随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示填充在返回地址和数据溢出点(攻击者可能利用的局部变量)之间数据片段长度的随机数;
[0007]依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度下的数据片段插入返回地址中并生成返回地址随机化处理的内嵌成分内容;
[0008]通过编译器将所述内嵌成分内容重编译生成功能相同但增加本专利技术安全机制的程序,使程序函数调用发生时返回地址在栈中的位置随机不确定化。
[0009]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,随机种子发生器通过采集处理器内部数据来生成随机种子;随机数发生器利用随机种子作为加密算法明文、密钥和初始向量,对明文进行加密生成密文,将该密文作为用于表示返回地址和数据溢出点相对距离的随机数。
[0010]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,随机种子发生器利用处理器性能监控计数器来获取处理器内部预设类型事件当前时间所发生的次数来生成随机种子。
[0011]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,随机种子发生器采集每个类型事件当前时间所发生的次数作为输出数据,并将输出数据的最低两位比特作为随机种子组成成分。
[0012]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,采用环形结构的随机数缓冲池来缓存随机数发生器生成用于确定插入数据片段长度的随机数,该随机数缓冲池的环形结构具有用于从随机数缓冲池中取走随机数的头指针和用于供随机数发生器使用来向随机数缓冲池写入随机数的尾指针。
[0013]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,采用封锁机制对随机数缓冲池中多线程并发访问进行并发控制,并定时检测随机数缓冲池中的数据量,依据预设的随机数缓冲池大小、溢阈值和空阈值来对随机数缓冲池实施空溢检测唤醒线程,其中,该封锁机制中,任何线程访问随机数缓冲池头指针时,首先向随机数缓冲池申请锁,申请成功后获取随机数,头指针后移并释放锁。
[0014]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,将随机数作为数据片段的长度随机因子,利用函数调用填充数据长度因子=函数调用填充数据片段的实际长度

长度随机因子来将数据片段插入函数调用目的地址和返回地址之间。
[0015]作为本专利技术基于栈随机化的溢出攻击防御方法,进一步地,返回地址压栈操作中,利用push指令将返回地址压栈,并向栈中持续写入随机数长度的数据片段,利用jmp指令跳转到函数调用的目的地址。
[0016]进一步地,本专利技术还提供一种基于栈随机化的溢出攻击防御系统,包含:随机数生成模块、随机数内嵌模块和进程编译模块,其中,
[0017]随机数生成模块,用于随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;
[0018]随机数内嵌模块,用于依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度下的数据片段插入返回地址中并生成返回地址随机化处理的内嵌成分内容;
[0019]进程编译模块,用于通过编译器将所述内嵌成分内容重编译生成功能相同但增加本专利技术安全机制的程序,使程序函数调用发生时返回地址在栈中的位置随机不确定化。
[0020]作为本专利技术基于栈随机化的溢出攻击防御系统,进一步地,还包含:多软件共享的用户控制接口模块,用于通过用户输入来设置控制参数及相关阈值数据。
[0021]本专利技术的有益效果:
[0022]本专利技术针对产生的栈缓冲区溢出攻击产生的必要条件(即:数据溢出点与返回地址之间位置固定)进行防御,通过在每一次函数调用中改变数据溢出点与返回地址之间的相对本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于栈随机化的溢出攻击防御方法,其特征在于,包含如下内容:随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度的数据片段插入返回地址后并生成返回地址随机化处理的内嵌成分内容;通过编译器将所述内嵌成分内容重编译生成功能相同且增加安全机制的程序,该安全机制中利用返回地址随机化处理使程序函数调用发生时返回地址在栈中的位置随机不确定化。2.根据权利要求1所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器通过采集处理器内部数据来生成随机种子;随机数发生器利用随机种子作为加密算法明文、密钥和初始向量,对明文进行加密生成密文,将该密文作为用于表示返回地址和数据溢出点相对距离的随机数。3.根据权利要求1或2所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器利用处理器性能监控计数器来获取处理器内部预设类型事件当前时间所发生的次数来生成随机种子。4.根据权利要求3所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器采集每个类型事件当前时间所发生的次数作为输出数据,并将输出数据的最低两位比特作为随机种子组成成分。5.根据权利要求1所述的基于栈随机化的溢出攻击防御方法,其特征在于,采用环形结构的随机数缓冲池来缓存随机数发生器生成用于确定插入数据片段长度的随机数,该随机数缓冲池的环形结构具有用于从随机数缓冲池中取走随机数的头指针和用于供随机数发生器使用来向随机数缓冲池写入随机数的尾指针。6.根据权利要求5所述的基于栈随机化的溢出攻击防御方法,其特征在于,采用封锁机制对随机数缓冲...

【专利技术属性】
技术研发人员:原锦辉周洪伟单芳芳文坤
申请(专利权)人:中原工学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1