[发明专利]基于LBR的栈缓冲区溢出攻击防御方法有效
申请号: | 201910015121.6 | 申请日: | 2019-01-08 |
公开(公告)号: | CN109858253B | 公开(公告)日: | 2021-04-20 |
发明(设计)人: | 周洪伟;原锦辉;朱旭华;张玉臣;孙怡峰;吴彊 | 申请(专利权)人: | 中国人民解放军战略支援部队信息工程大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56 |
代理公司: | 郑州大通专利商标代理有限公司 41111 | 代理人: | 陈勇 |
地址: | 450000 河*** | 国省代码: | 河南;41 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 lbr 缓冲区 溢出 攻击 防御 方法 | ||
1.一种基于LBR的栈缓冲区溢出攻击防御方法,其特征在于,包括:入栈操作和出栈操作;
所述入栈操作包括:
步骤11、在进程初始化时随机生成随机参数,将所述随机参数作为所述进程当前整个生命周期的随机因子;
步骤12、当父函数调用子函数时,获取返回地址;
步骤13、当确定待调用子函数时,获取返回父函数指令的地址,将所述返回父函数指令的地址作为硬因子;所述返回父函数指令的地址是指子函数内部,执行完相应指令集后,执行返回父函数的那条指令的地址,返回父函数指令在子函数地址范围内;
步骤14、根据所述随机因子、返回地址和硬因子计算软因子,并将所述软因子替代返回地址存储在栈中;所述软因子具体为:软因子=硬因子⊕返回地址⊕随机因子;
步骤15、使用jmp指令替代call指令,从父函数跳转至子函数;
所述出栈操作包括:
步骤21、使用jmp指令从子函数跳转至设定的跳板函数;
步骤22、在跳板函数内从处理器LBR硬件特性中获取硬因子,所述硬因子指返回父函数指令的地址;其中,从处理器LBR硬件特性中获取硬因子包括:读取两次LBR寄存器:首先确定最新的控制转移记录,然后根据最新的控制转移记录获取返回父函数指令的地址;
步骤23、在跳板函数内获取随机因子,所述随机因子指在进程初始化时随机生成的随机参数;
步骤24、使用pop指令使软因子出栈,所述软因子指替代返回地址存储在栈中的参数;
步骤25、根据所述硬因子、随机因子和软因子计算返回地址;所述返回地址具体为:返回地址=软因子⊕硬因子⊕随机因子;
步骤26、根据所述返回地址,使用jmp指令从跳板函数跳转至父函数。
2.根据权利要求1所述的方法,其特征在于,在步骤11之前还包括:
在由源代码初步编译得到的RTL指令集中插入随机因子发生函数,得到新的RTL指令集;
通过修改指令模板,使用设定的指令集替代call指令,并采用修改后的指令模板将新的RTL指令集转换为汇编指令;
其中,所述设定的指令集用于执行所述步骤11至步骤15。
3.根据权利要求1所述的方法,其特征在于,在步骤21之前还包括:
在由源代码初步编译得到的RTL指令集中插入跳板函数,得到新的RTL指令集;
通过修改指令模板,使用设定的指令集替代ret指令,并采用修改后的指令模板将新的RTL指令集转换为汇编指令;
其中,所述设定的指令集用于执行步骤21至步骤26。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军战略支援部队信息工程大学,未经中国人民解放军战略支援部队信息工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910015121.6/1.html,转载请声明来源钻瓜专利网。