[发明专利]用于检测调用堆栈篡改的系统有效

专利信息
申请号: 201380041553.5 申请日: 2013-07-31
公开(公告)号: CN104520868B 公开(公告)日: 2017-08-08
发明(设计)人: F·加尔多 申请(专利权)人: 英赛瑟库尔公司
主分类号: G06F21/52 分类号: G06F21/52;G06F21/71;G06F11/28
代理公司: 北京市中咨律师事务所11247 代理人: 杨晓光,于静
地址: 法国*** 国省代码: 暂无信息
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 用于 检测 调用 堆栈 篡改 系统
【说明书】:

技术领域

本发明涉及处理器系统中的子例程调用堆栈内容的意外变更的检测,特别涉及检测欺诈尝试。

背景技术

子例程调用堆栈是处理器系统中的用于存储所谓“返回”地址(即,当子例程的执行结束时,在该“返回”地址处继续程序的执行)的保留存储区。术语“堆栈”反映存储区的后进先出(LIFO)管理方式,其特别好地适合于处理嵌套的子例程。将在下文中使用关于堆栈的管理的常用术语,诸如“推入”到堆栈上和从堆栈“弹出”,应理解为底层操作实际上是通过管理存储区的读和写指针来获得的。

调用堆栈的意外变更可以在子例程结束时导致程序执行跳到由堆栈中的变更后的值标识的任意位置。该变更可能是由于欺诈尝试引起的,在所述欺诈尝试中,欺诈者试图将执行转移到一条海盗代码(pirate code)或绕过安全检查。

堆栈的修改可以通过激光攻击来实现,即,在与堆栈进行的读事务期间将脉冲激光束指引到存储器的堆栈区上或数据总线上。在总线上传送的值也可以通过在读事务期间在电源电压中产生脉冲而被变更。

为了更好地说明此问题,考虑用C语言编写的以下伪代码:

图1示出该伪代码的执行。调用堆栈的内容被显示在每个块的上方,其中每个块示出子例程或函数的执行。假定在该表示中堆栈是从底部填充的。

在其执行期间,函数main()调用函数func1();当函数func1()被执行时,相应的返回地址@1被推入到堆栈上。函数func1()调用函数func2();相应的返回地址@2被推入到堆栈上。函数func2()调用函数func3();另一返回地址@3被推入到堆栈上。

函数func3()的执行的结束是通过专用的“返回”指令的执行来识别的。该指令导致地址@3从堆栈中被弹出、以及导致执行从该地址继续,在这种情况下,函数func2()的执行继续。函数func2()然后调用VerifyPIN()函数,该函数的作用是例如验证PIN码的输入。相应的返回地址@4被推入到堆栈上。

当VerifyPIN()函数的执行结束时,地址@4从堆栈中被弹出,并且执行从该地址继续,在这种情况下,在函数func2()中继续。

当各函数结束其执行时,返回地址从堆栈中被弹出,并且执行最后返回到main()函数内的地址@1。

在图2中,在函数func3()的执行期间,欺诈者改变堆栈的最后地址@3。欺诈者设法将该地址替换为@4,该@4是VerifyPIN()函数的返回地址。因此,当函数func3()的执行结束时,执行在地址@4继续。用于验证PIN代码的输入的VerifyPIN()函数由此被绕过。

欺诈者不需要知道他想要绕过的函数的确切返回地址@4。通过反复试验,他可以简单地找到除返回地址之外的任意地址,其在没有执行位于返回地址和该任意地址之间的代码部分之后不会引起错误。

已知有用于避免这种类型的欺诈的各种解决方案。例如,美国专利7,581,089建议使用两个冗余调用堆栈。当调用子例程时,每个返回地址被推入到两个堆栈上。在子例程的执行结束时,系统检查返回地址存在于两个堆栈中。即使欺诈者能够改变两个堆栈中的地址,这种变更的成功机会是随机的:以相同的方式同时改变两个堆栈是特别困难的。

尽管这种解决方案是有效的,但是它要求额外的复杂性,这增加了电路表面积并降低了电路的性能。

发明内容

因此,需要一种低复杂性的解决方案来检测子例程调用堆栈内容的变更。

该需要可以通过用于检测子例程调用堆栈修改的方法来解决,所述方法包括以下步骤:当调用子例程时,将返回地址放置在堆栈的顶部;在子例程结束时,使用堆栈顶部的地址作为返回地址,并从堆栈中移除该地址;当调用子例程时,利用第一运算将返回地址积累在存储单元(memory location)中;在子例程结束时,利用与第一运算相反的第二运算将来自堆栈顶部的地址积累在存储单元中;以及当存储单元的内容与其初始值不同时检测到变更。

第一和第二运算可以是按位异或(bitwise exclusive-OR)。

第一和第二运算可以是加法和减法。

返回地址和堆栈顶部的地址可以是在对堆栈的访问事务期间取自存储器总线的值。

初始值可以是随机的。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于英赛瑟库尔公司,未经英赛瑟库尔公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201380041553.5/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top