[发明专利]基于栈随机化的溢出攻击防御方法及系统在审
申请号: | 202111568507.3 | 申请日: | 2021-12-21 |
公开(公告)号: | CN114238942A | 公开(公告)日: | 2022-03-25 |
发明(设计)人: | 原锦辉;周洪伟;单芳芳;文坤 | 申请(专利权)人: | 中原工学院 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 周艳巧 |
地址: | 450000 河南*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 随机化 溢出 攻击 防御 方法 系统 | ||
1.一种基于栈随机化的溢出攻击防御方法,其特征在于,包含如下内容:
随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;
依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度的数据片段插入返回地址后并生成返回地址随机化处理的内嵌成分内容;
通过编译器将所述内嵌成分内容重编译生成功能相同且增加安全机制的程序,该安全机制中利用返回地址随机化处理使程序函数调用发生时返回地址在栈中的位置随机不确定化。
2.根据权利要求1所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器通过采集处理器内部数据来生成随机种子;随机数发生器利用随机种子作为加密算法明文、密钥和初始向量,对明文进行加密生成密文,将该密文作为用于表示返回地址和数据溢出点相对距离的随机数。
3.根据权利要求1或2所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器利用处理器性能监控计数器来获取处理器内部预设类型事件当前时间所发生的次数来生成随机种子。
4.根据权利要求3所述的基于栈随机化的溢出攻击防御方法,其特征在于,随机种子发生器采集每个类型事件当前时间所发生的次数作为输出数据,并将输出数据的最低两位比特作为随机种子组成成分。
5.根据权利要求1所述的基于栈随机化的溢出攻击防御方法,其特征在于,采用环形结构的随机数缓冲池来缓存随机数发生器生成用于确定插入数据片段长度的随机数,该随机数缓冲池的环形结构具有用于从随机数缓冲池中取走随机数的头指针和用于供随机数发生器使用来向随机数缓冲池写入随机数的尾指针。
6.根据权利要求5所述的基于栈随机化的溢出攻击防御方法,其特征在于,采用封锁机制对随机数缓冲池中多线程并发访问进行并发控制,并定时检测随机数缓冲池中的数据量,依据预设的随机数缓冲池大小、溢阈值和空阈值来对随机数缓冲池实施空溢检测唤醒线程,其中,该封锁机制中,任何线程访问随机数缓冲池头指针时,首先向随机数缓冲池申请锁,申请成功后获取随机数,头指针后移并释放锁。
7.根据权利要求1所述的基于栈随机化的溢出攻击防御方法,其特征在于,将随机数作为数据片段的长度随机因子,利用函数调用填充数据长度因子=函数调用填充数据片段的实际长度⊕长度随机因子来将数据片段插入函数调用目的地址和返回地址之间。
8.根据权利要求1或7所述的基于栈随机化的溢出攻击防御方法,其特征在于,返回地址压栈操作中,利用push指令将返回地址压栈,并向栈中持续写入随机数长度的数据片段,利用jmp指令跳转到函数调用的目的地址。
9.一种基于栈随机化的溢出攻击防御系统,其特征在于,包含:随机数生成模块、随机数内嵌模块和进程编译模块,其中,
随机数生成模块,用于随机种子发生器根据服务例程提供的控制参数产生随机种子;随机数发生器依据随机种子产生用于表示返回地址和数据溢出点相对距离的随机数;
随机数内嵌模块,用于依据随机数确定用于随机动态插入返回地址的数据片段长度,将该随机数确定长度下的数据片段插入返回地址中并生成返回地址随机化处理的内嵌成分内容;
进程编译模块,用于通过编译器将所述内嵌成分内容重编译生成功能相同但增加本发明安全机制的程序,使程序函数调用发生时返回地址在栈中的位置随机不确定化。
10.根据权利要求9所述的基于栈随机化的溢出攻击防御系统,其特征在于,还包含:多软件共享的用户控制接口模块,用于通过用户输入来设置控制参数及相关阈值数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中原工学院,未经中原工学院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202111568507.3/1.html,转载请声明来源钻瓜专利网。