[发明专利]一种防止堆栈溢出攻击的保护方法及系统在审
申请号: | 202110228765.0 | 申请日: | 2021-03-02 |
公开(公告)号: | CN112948818A | 公开(公告)日: | 2021-06-11 |
发明(设计)人: | 朱黎;刘远;郭镔 | 申请(专利权)人: | 北京明略昭辉科技有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52;G06F9/448 |
代理公司: | 青岛清泰联信知识产权代理有限公司 37256 | 代理人: | 赵燕 |
地址: | 100089 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 防止 堆栈 溢出 攻击 保护 方法 系统 | ||
1.一种防止堆栈溢出攻击的保护方法,其特征在于,包括:
构造canary值步骤:发生函数调用时,构造任一canary值;
插入步骤:在被调用的子函数栈空间插入所述canary值进行数据填充;
记录步骤:在被调用的子函数的前后各添加一代码,通过两个所述代码分别计算所述canary值和返回值的异或结果;
比较步骤:对比两个所述canary值和返回值的异或结果;
输出步骤:若所述异或结果相等,所述函数正常跳转并将跳转结果返回;若所述异或结果不相等,则阻止程序的跳转。
2.如权利要求1所述的防止堆栈溢出攻击的保护方法,其特征在于,所述canary值是由任一固定值和任一随机值拼接而成。
3.如权利要求1所述的防止堆栈溢出攻击的保护方法,其特征在于,所述记录步骤包括:
在被调用的所述子函数的之前添加开头代码及在被调用的所述子函数之后添加前尾端代码,通过所述开头代码计算所述canary值和返回值的第一异或结果,通过所述尾端代码计算所述canary值和返回值的第二异或结果。
4.如权利要求3所述的防止堆栈溢出攻击的保护方法,其特征在于,所述输出步骤包括:
若所述第一异或结果和所述第二异或结果相等,所述函数正常跳转并将所述跳转结果返回。
5.如权利要求3所述的防止堆栈溢出攻击的保护方法,其特征在于,所述输出步骤还包括:
若所述第一异或结果和所述第二异或结果不相等,则阻止所述程序跳转。
6.一种防止堆栈溢出攻击的保护系统,其特征在于,包括:
构造canary值模块,所述构造canary值模块在发生函数调用时,构造任一canary值;
插入模块,所述插入模块在被调用的子函数栈空间插入所述canary值进行数据填充;
记录模块,所述记录模块在被调用的子函数的前后各添加一代码,通过两个所述代码分别计算所述canary值和返回值的异或结果;
比较模块,所述比较模块对比两个所述canary值和返回值的异或结果;
输出模块,若所述异或结果相等,所述函数正常跳转并将跳转结果返回;若所述异或结果不相等,所述输出模块阻止程序的跳转。
7.如权利要求6所述的防止堆栈溢出攻击的保护系统,其特征在于,所述canary值是由任一固定值和任一随机值拼接而成。
8.如权利要求6所述的防止堆栈溢出攻击的保护系统,其特征在于,所述记录模块在被调用的所述子函数的之前添加开头代码及在被调用的所述子函数之后添加前尾端代码,通过所述开头代码计算所述canary值和返回值的第一异或结果,通过所述尾端代码计算所述canary值和返回值的第二异或结果。
9.如权利要求8所述的防止堆栈溢出攻击的保护系统,其特征在于,若所述第一异或结果和所述第二异或结果相等,所述输出模块将所述函数正常跳转并将所述跳转结果返回。
10.如权利要求8所述的防止堆栈溢出攻击的保护系统,其特征在于,若所述第一异或结果和所述第二异或结果不相等,所述输出模块阻止所述程序跳转。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京明略昭辉科技有限公司,未经北京明略昭辉科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110228765.0/1.html,转载请声明来源钻瓜专利网。