用于硬件流控制的代码指针验证制造技术

技术编号:15529753 阅读:97 留言:0更新日期:2017-06-04 17:02
本发明专利技术提供用于在处理器中强制执行软件程序的流控制的技术。根据这些技术的实例方法包含:分析所述软件程序的程序代码以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针。

Code pointer validation for hardware flow control

The present invention provides techniques for enforcing flow control of software programs in a processor. According to the examples of these techniques include: analysis of the software program code to identify the code in the code pointer; verification code pointer based on the mark; and the code pointer with the authentication mark to modify the program code to generate a tagged pointer code.

【技术实现步骤摘要】
【国外来华专利技术】用于硬件流控制的代码指针验证
技术介绍
软件实施错误,例如遗漏或不正确输入验证,可导致越界缓冲区存取和存储器损坏。这些实施错误可导致软件在正常条件下变得不稳定或最终失效。然而,当输入被意图攻击计算机系统的恶意方操控时,攻击者可利用这些存储器损坏和溢出错误来改变软件代码的预期行为,并执行由攻击者确定的代码或功能性。攻击者通常通过盖写存储器中的数据结构(例如返回地址、函数指针或虚表指针)取得对执行的控制。在大型和传统的代码库中寻找和修理全部可利用的存储器损坏错误并不总是可能的。因此,许多计算机系统含有被称作“利用减轻机制”的一般防御特征,其有效地对抗攻击者用来利用这些错误取得对目标计算机系统的控制和/或破坏目标计算机系统的众所周知的技术。通常包含于计算机系统中的利用减轻机制的一些实例包含:数据执行防止(DEP)、堆栈保护(SP)和地址空间布局随机化(ASLR)。在DEP技术中,全部代码区被标记为只读,并且全部可写入区是不可执行的。通常,代码区的只读特性和可写入区的不可执行特性是通过处理器的存储器管理单元(MMU)强制执行。此技术可防止攻击者将其自己的代码放入数据区中并将执行流引导到所述代码。在SP方法中,编译程序实施用于检测堆栈上的缓冲区溢出的功能。由于就在本地阵列后的堆栈上经常存在返回地址或所保存的链接寄存器,所以基于堆栈的缓冲区溢出会很容易被利用。攻击者可致使本地阵列溢出并盖写返回地址/链接寄存器,且重新引导软件的执行流。许多常规堆栈保护实施方案将保护值插入到函数序言中的堆栈上,并且在从所述函数返回之前,检查所述值的修改。如果已发生缓冲区溢出,那么保护值连同返回地址将已经被盖写,因为保护值位于缓冲区与返回地址之间的堆栈中。保护值必须是随机和/或不可预测的值,以确保SP方法的安全。在ASLR方法中,应用程序的存储器布局可在每次执行时随机化。举例来说,可随机确定用于代码、静态数据、堆栈和堆的基地址。此方法使得利用难以进行,因为攻击者需要预测他们需要瞄准/操控以进行成功攻击的代码/数据/指针的位置。
技术实现思路
根据本专利技术的用于强制执行处理器中的软件程序的流控制的实例方法包含:分析所述软件程序的程序代码,以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的代码指针,以产生带标记的代码指针。此类方法的实施方案可包含以下特征中的一或多者。用所述验证标记来修改程序代码中的代码指针以产生带标记的代码指针进一步包含通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。通过将掩码应用于所述验证标记和所述代码指针来产生带标记的代码指针进一步包含:使用所述掩码从所述验证标记选择第一组位;以及用所述第一组位来代替所述代码指针的对应于所述第一组位的第二组位,以产生带标记的代码指针。识别所述程序代码中的多个,且识别所述程序代码中的所述多个代码指针共用的标记位以确定掩码。验证所述带标记的代码指针,响应于所述验证标记已更改而执行错误处置,且响应于验证标记尚未更改而执行与所述代码指针相关联的地址处的程序指令。验证所述带标记的代码指针包含使用所述掩码从所述带标记的代码指针确定经恢复的代码指针值。使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。至少部分地基于所述经恢复的代码指针和上下文值来产生经恢复的验证标记。使用所述掩码从所述经恢复的验证标记提取带掩码的标记值。将所述带掩码的标记值与所述嵌入的验证标记值进行比较,以确定所述带标记的代码指针是否已更改。根据本专利技术的用于强制执行处理器中的软件程序的流控制的实例设备包含:用于分析所述软件程序的程序代码来识别所述程序代码中的代码指针的装置;用于基于所述代码指针来产生验证的装置;以及用于用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针的装置。此设备的实施方案可包含以下特征中的一或多者。所述用于用所述验证标记来修改程序代码中的代码指针以产生带标记的代码指针的装置包含用于通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置。所述用于通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置进一步包含:用于使用所述掩码从所述验证标记选择第一组位的装置;以及用于用所述第一组位来代替所述代码指针的对应于所述第一组位的第二组位以产生所述带标记的代码指针的装置。用于识别程序代码中的多个代码指针的装置;以及用于识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码的装置。用于验证所述带标记的代码指针的装置;用于响应于所述验证标记已更改而执行错误处置的装置;以及用于响应于所述验证标记尚未更改而执行与所述代码指针相关联的地址处的程序指令的装置。用于使用所述掩码从所述带标记的代码指针确定经恢复的代码指针值的装置。根据本专利技术的用于强制执行处理器中的软件程序的流控制的实例设备包含处理器,其经配置以:分析所述软件程序的程序代码,以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的代码指针,以产生带标记的代码指针。此设备的实施方案可包含以下特征中的一或多者。经配置以用所述验证标记来修改所述程序代码中的代码指针以产生所述带标记的代码指针的所述处理器进一步经配置以通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。经配置以通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的所述处理器进一步经配置以:使用所述掩码从所述验证标记选择第一组位;且用所述第一组位来代替所述代码指针的对应于所述第一组位的第二组位,以产生所述带标记的代码指针。所述处理器进一步经配置以识别所述程序代码中的多个代码指针,且识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码。所述处理器进一步经配置以验证所述带标记的代码指针;响应于所述验证标记已更改而执行错误处置;以及响应于所述验证标记尚未更改而执行与所述代码指针相关联的地址处的程序指令。经配置以验证所述带标记的代码指针的所述处理器进一步经配置以使用所述掩码从所述带标记的代码指针确定经恢复的代码指针值。所述处理器进一步经配置以使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。根据本专利技术的一种在其上储存有用于强制执行处理器中的软件程序的流控制的计算机可读指令的非暂时性计算机可读媒体包含经配置以致使计算机进行以下操作的指令:分析所述软件程序的程序代码以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的代码指针,以产生带标记的代码指针。经配置以致使所述计算机用所述验证标记来修改所述程序代码中的代码指针以产生带标记的代码指针的所述指令进一步包括:经配置以致使所述计算机通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。经配置以致使所述计算机通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的所述指令进一步包括经配置以致使所述计算机进行以下操作的指令:使用所述掩码从所述验证标记选择第一组位;以及用所述第一组位来代替所述代码指针的对应于所述第一组位的第二组位,以产生带标记的代码指针。经配置以致本文档来自技高网
...
用于硬件流控制的代码指针验证

【技术保护点】
一种用于在处理器中强制执行软件程序的流控制的方法,所述方法包括:分析所述软件程序的程序代码以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的所述代码指针,以产生带标记的代码指针。

【技术特征摘要】
【国外来华专利技术】2014.10.17 US 14/517,5721.一种用于在处理器中强制执行软件程序的流控制的方法,所述方法包括:分析所述软件程序的程序代码以识别所述程序代码中的代码指针;基于所述代码指针产生验证标记;以及用所述验证标记来修改所述程序代码中的所述代码指针,以产生带标记的代码指针。2.根据权利要求1所述的方法,其中用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针进一步包括:通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针。3.根据权利要求2所述的方法,其中通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针进一步包括:使用所述掩码从所述验证标记选择第一位集合;以及用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合,以产生所述带标记的代码指针。4.根据权利要求2所述的方法,其进一步包括:识别所述程序代码中的多个代码指针;以及识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码。5.根据权利要求1所述的方法,其进一步包括:验证所述带标记的代码指针;响应于所述验证标记已经更改而执行错误处置;以及响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令。6.根据权利要求5所述的方法,其中验证所述带标记的代码指针包括:使用掩码从所述带标记的代码指针确定经恢复的代码指针值。7.根据权利要求6所述的方法,其进一步包括:使用所述掩码从所述带标记的代码指针提取嵌入的验证标记值。8.根据权利要求7所述的方法,其进一步包括:至少部分地基于所述经恢复的代码指针值和上下文值来产生经恢复的验证标记。9.根据权利要求8所述的方法,其进一步包括:使用所述掩码从所述经恢复的验证标记提取带掩码的标记值。10.根据权利要求9所述的方法,其进一步包括:将所述带掩码的标记值与所述嵌入的验证标记值进行比较,以确定所述带标记的代码指针是否已更改。11.一种用于在处理器中强制执行软件程序的流控制的设备,所述设备包括:用于分析所述软件程序的程序代码以识别所述程序代码中的代码指针的装置;用于基于所述代码指针产生验证标记的装置;以及用于用所述验证标记来修改所述程序代码中的所述代码指针以产生带标记的代码指针的装置。12.根据权利要求11所述的设备,其中所述用于用所述验证标记来修改所述程序代码中的所述代码指针以产生所述带标记的代码指针的装置进一步包括:用于通过将掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置。13.根据权利要求12所述的设备,其中所述用于通过将所述掩码应用于所述验证标记和所述代码指针来产生所述带标记的代码指针的装置进一步包括:用于使用所述掩码从所述验证标记选择第一位集合的装置;以及用于用所述第一位集合来代替所述代码指针的对应于所述第一位集合的第二位集合以产生所述带标记的代码指针的装置。14.根据权利要求12所述的设备,其进一步包括:用于识别所述程序代码中的多个代码指针的装置;以及用于识别所述程序代码中的所述多个代码指针共用的标记位以确定所述掩码的装置。15.根据权利要求11所述的设备,其进一步包括:用于验证所述带标记的代码指针的装置;用于响应于所述验证标记已经更改而执行错误处置的装置;以及用于响应于所述验证标记尚未更改而执行与所述代码指针相关联的所述地址处的程序指令的装置。16.根据权利要求15所述的设备,其中验证所述带标记的代码指针包括:用于使用掩码从所述带标记的代码指针确定经恢复的代码指针值的装置。17.一种用于在处理器中强制执行软件程序的流控制的设备,所述设备包括:处理器,其经配置以:分析所述软件程...

【专利技术属性】
技术研发人员:詹·阿恰尔阿尔温德·克里希纳斯瓦米罗伯特·图尔纳
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国,US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1