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