[发明专利]用于硬件流控制的代码指针验证有效
申请号: | 201580055470.0 | 申请日: | 2015-09-24 |
公开(公告)号: | CN106796634B | 公开(公告)日: | 2018-07-20 |
发明(设计)人: | 詹·阿恰尔;阿尔温德·克里希纳斯瓦米;罗伯特·图尔纳 | 申请(专利权)人: | 高通股份有限公司 |
主分类号: | G06F21/52 | 分类号: | G06F21/52 |
代理公司: | 北京律盟知识产权代理有限责任公司 11287 | 代理人: | 杨林勋 |
地址: | 美国加利*** | 国省代码: | 美国;US |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 硬件 控制 代码 指针 验证 | ||
本发明提供用于在处理器中强制执行软件程序的流控制的技术。根据这些技术的实例方法包含:分析所述软件程序的程序代码以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针。
背景技术
软件实施错误,例如遗漏或不正确输入验证,可导致越界缓冲区存取和存储器损坏。这些实施错误可导致软件在正常条件下变得不稳定或最终失效。然而,当输入被意图攻击计算机系统的恶意方操控时,攻击者可利用这些存储器损坏和溢出错误来改变软件代码的预期行为,并执行由攻击者确定的代码或功能性。
攻击者通常通过改写存储器中的数据结构(例如返回地址、函数指针或虚表指针)取得对执行的控制。在大型和传统的代码库中寻找和修理全部可利用的存储器损坏错误并不总是可能的。因此,许多计算机系统含有被称作“利用减轻机制”的一般防御特征,其有效地对抗攻击者用来利用这些错误取得对目标计算机系统的控制和/或破坏目标计算机系统的众所周知的技术。
通常包含于计算机系统中的利用减轻机制的一些实例包含:数据执行防止(DEP)、堆栈保护(SP)和地址空间布局随机化(ASLR)。在DEP技术中,全部代码区被标记为只读,并且全部可写入区是不可执行的。通常,代码区的只读特性和可写入区的不可执行特性是通过处理器的存储器管理单元(MMU)强制执行。此技术可防止攻击者将其自己的代码放入数据区中并将执行流引导到所述代码。在SP方法中,编译程序实施用于检测堆栈上的缓冲区溢出的功能。由于就在本地阵列后的堆栈上经常存在返回地址或所保存的链接寄存器,所以基于堆栈的缓冲区溢出会很容易被利用。攻击者可致使本地阵列溢出并改写返回地址/链接寄存器,且重新引导软件的执行流。许多常规堆栈保护实施方案将保护值插入到函数序言中的堆栈上,并且在从所述函数返回之前,检查所述值的修改。如果已发生缓冲区溢出,那么保护值连同返回地址将已经被改写,因为保护值位于缓冲区与返回地址之间的堆栈中。保护值必须是随机和/或不可预测的值,以确保SP方法的安全。在ASLR方法中,应用程序的存储器布局可在每次执行时随机化。举例来说,可随机确定用于代码、静态数据、堆栈和堆的基地址。此方法使得利用难以进行,因为攻击者需要预测他们需要瞄准/操控以进行成功攻击的代码/数据/指针的位置。
发明内容
根据本发明的用于强制执行处理器中的软件程序的流控制的实例方法包含:分析所述软件程序的程序代码,以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的代码指针,以产生带标记的代码指针。
此类方法的实施方案可包含以下特征中的一或多者。用所述验证标记来修改程序代码中的代码指针以产生带标记的代码指针进一步包含通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。通过将掩码应用于所述验证标记和所述代码指针来产生带标记的代码指针进一步包含:使用所述掩码从所述验证标记选择第一组位;以及用所述第一组位来代替所述代码指针的对应于所述第一组位的第二组位,以产生带标记的代码指针。识别所述程序代码中的多个,且识别所述程序代码中的所述多个代码指针共用的标记位以确定掩码。验证所述带标记的代码指针,响应于所述验证标记已更改而执行错误处置,且响应于验证标记尚未更改而执行与所述代码指针相关联的地址处的程序指令。验证所述带标记的代码指针包含使用所述掩码从所述带标记的代码指针确定经恢复的代码指针值。使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。至少部分地基于所述经恢复的代码指针和上下文值来产生经恢复的验证标记。使用所述掩码从所述经恢复的验证标记提取带掩码的标记值。将所述带掩码的标记值与所述嵌入的验证标记值进行比较,以确定所述带标记的代码指针是否已更改。
根据本发明的用于强制执行处理器中的软件程序的流控制的实例设备包含:用于分析所述软件程序的程序代码来识别所述程序代码中的代码指针的装置;用于基于所述代码指针来产生验证的装置;以及用于用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针的装置。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于高通股份有限公司,未经高通股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201580055470.0/2.html,转载请声明来源钻瓜专利网。
- 上一篇:对存储数据的远程访问控制
- 下一篇:使用飞地认证进行数据验证