[发明专利]一种检测堆栈中返回地址被篡改的堆栈结构在审
申请号: | 201811108317.1 | 申请日: | 2018-09-21 |
公开(公告)号: | CN109508538A | 公开(公告)日: | 2019-03-22 |
发明(设计)人: | 陈李维;李锦峰;史岗;孟丹 | 申请(专利权)人: | 中国科学院信息工程研究所 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;吴欢燕 |
地址: | 100093 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 返回地址 堆栈结构 种检测 堆栈 篡改 设计复杂度 链式结构 性能损耗 哈希 存储 验证 | ||
本发明上述实施例提供一种检测堆栈中返回地址被篡改的堆栈结构,本发明将返回地址和哈希值都通过一个链式结构来存储并验证,本发明实施例具有安全性高、性能损耗小、设计复杂度低等有益效果。
技术领域
本发明涉及计算机技术领域,更具体地,涉及一种检测堆栈中返回地址被篡改的堆栈结构。
背景技术
计算机技术和互联网的建设和发展,对整个社会的经济、文化、科技等各方面带来了巨大的推动和冲击,大量电信、电子商务、金融网络等信息化系统已经成为国家和政府的关键基础设施,因此如何确保计算机系统的安全已成为摆在我们面前迫切需要解决的难题。
堆栈溢出漏洞是一个极其严重的系统安全漏洞,它是通过向一个有限的内存空间写入过长的数据,破坏系统的内存空间,导致系统运行异常、死机或重启。通过堆栈溢出攻击,使用攻击代码的地址覆盖函数指针,可以让攻击者获取部分或全部的系统控制权,这是一种极具威胁的安全隐患。
现有技术中,对于堆栈溢出攻击主要的阻止和防御方式为通过影子栈和栈保护技术,保证返回地址不被恶意篡改。但影子栈和栈保护的安全性都不够,攻击者仍能找到一些办法来绕过上述两种防御技术进行攻击。
发明内容
为了解决上述问题,本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的检测堆栈中返回地址被篡改的堆栈结构。
根据本发明实施例的第一方面,提供了一种检测堆栈中返回地址被篡改的堆栈结构,所述堆栈中的第i帧中存储了第i个返回地址和一个随机数;所述堆栈中第i+1帧至栈顶帧中的任一帧中存储了所述任一帧所对应的返回地址和返回地址所对应的hash值;其中,返回地址所对应的hash值根据栈中所述任一帧的前一帧中存储的返回地址和返回地址所对应的hash值,基于所述任一hash值生成算法,获得的hash值;j>i≥1,其中j为栈顶帧的序号。
进一步,所述堆栈中任一返回地址,和与所述任一返回地址所对应的hash值分别单独保存在所述堆栈中同一栈帧内的不同位置上。
进一步,在64位操作系统中,所述堆栈中任一返回地址和与所述任一返回地址所对应的hash值,以任意的组合方式保存在所述堆栈中的任一位置上。
进一步,在64位操作系统中,所述堆栈中任一返回地址正常保存在所述堆栈中的任一位置上,与所述任一返回地址所对应的hash值保存在所述任一位置的高位空间中。
本发明提供一种检测堆栈中返回地址被篡改的堆栈结构,本发明将返回地址和哈希值都通过一个链式结构来存储并验证,本发明具有安全性高、性能损耗小、设计复杂度低等有益效果。
附图说明
图1为利用本发明实施例的一种利用检测堆栈中返回地址被篡改的堆栈结构检测堆栈中返回地址被篡改的方法的方法的整体流程示意图;
图2为本发明实施例的一种检测堆栈中返回地址被篡改的堆栈结构的示意图;
图3为本发明实施例的一种检测堆栈中返回地址被篡改的堆栈结构的结构示意图;
图4为本发明实施例的现有技术中堆栈的结构示意图;
图5为本发明实施例的一种检测堆栈中返回地址被篡改的方法中调用指令执行与现有技术调用指令的区别示意图;
图6为本发明实施例的一种检测堆栈中返回地址被篡改的方法中返回指令执行与现有技术返回指令的区别示意图;
图7为本发明实施例的一种检测堆栈中返回地址被篡改的堆栈结构的非压缩结构和压缩存储结构的示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院信息工程研究所,未经中国科学院信息工程研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811108317.1/2.html,转载请声明来源钻瓜专利网。