基于硬件的堆栈控制信息保护制造技术

技术编号:14047403 阅读:112 留言:0更新日期:2016-11-23 09:17
本发明专利技术提供用于保护与处理器相关的堆栈的内容的技术。所述技术包含一种方法,所述方法包含:从正通过所述处理器执行的软件程序接收存储指令,所述存储指令包含与子例程相关的控制信息;响应于从所述软件程序接收所述存储指令,更改所述控制信息以产生受保护的控制信息;在所述堆栈上存储所述受保护的控制信息;从所述软件程序接收加载指令;以及响应于从所述软件程序接收所述加载指令,从所述堆栈加载所述受保护的控制信息,更改所述受保护的控制信息以恢复所述控制信息,和将所述控制信息返回到所述软件程序。

【技术实现步骤摘要】
【国外来华专利技术】
技术介绍
软件实施错误,例如遗漏或不正确输入验证,可导致越界缓冲区存取和内存损坏。这些实施错误可导致软件在正常条件下变得不稳定或最终失效。然而,当输入由意图攻击计算机系统的恶意方操控时,攻击者可利用这些内存损坏和溢出错误来改变软件代码的预期行为,并执行由攻击者确定的代码或功能。攻击者通常通过覆写在存储器中的数据结构(例如返回解决、函数指针或虚表指针)取得对执行的控制。在大型和传统的代码库中发现和修理全部可利用的内存损坏错误并不总是可能的。因此,许多计算机系统含有被称作“攻击缓解机制”的一般防御特征,其有效地对抗攻击者用来利用这些错误取得对目标计算机系统的控制和/或破坏目标计算机系统的熟知技术。通常包含于计算机系统中的攻击缓解机制的一些实例包含:数据执行防止(DEP)、堆栈保护(SP)和地址空间布局随机化(ASLR)。在DEP技术中,全部代码区被标记为只读,并且全部可写入区域不可执行。通常,代码区的只读特性和可写入区的不可执行特性通过处理器的内存管理单元(MMU)强制执行。此技术可防止攻击者将其自己的代码放置到数据区中并引导执行流到那一代码。在SP方法中,编译程序实施用于检测堆栈上的缓冲区溢出。由于就在局部数组后的堆栈上经常存在返回地址或所保存的链接寄存器,所以基于堆栈的缓冲区溢出会很容易被利用。攻击者可使局部数组溢出并覆写返回地址/链接寄存器,且重新引导软件的执行流。许多常规堆栈保护实施方案插入保护值到函数序言中的堆栈上,并且在从那个函数返回之前,检查那个值的修改。如果已发生缓冲区溢出,那么保护值连同返回地址将已经被覆写,因为保护值位于缓冲区和返回地址之间的堆栈中。保护值必须是随机和/或不可预测的值,以确保SP方法的安全。在ASLR方法中,应用程序的内存布局可在每次执行时随机化。例如,可随机确定用于代码、静态数据、堆栈和堆的基地址。此方法使得利用难以进行,因为攻击者需要预测他们需要瞄准/操控以进行成功攻击的代码/数据/指针的位置。
技术实现思路
根据本专利技术的用于保护与处理器相关的堆栈的内容的实例方法包含:从通过处理器执行的软件程序接收存储指令,所述存储指令包含与子例程相关的控制信息;响应于从软件程序接收存储指令,更改控制信息以产生受保护的控制信息;在堆栈上存储受保护的控制信息;从软件程序接收加载指令;以及响应于从软件程序接收加载指令,从堆栈加载受保护的控制信息,更改受保护的控制信息以恢复控制信息,和将控制信息返回到软件程序。这种方法的实施方案可包含以下特征中的一或多者。更改控制信息以产生受保护的控制信息包含加密控制信息以产生受保护的控制信息。加密控制信息以产生受保护的控制信息包含使用基于分块密码的消息认证码算法加密控制信息。加密控制信息以产生受保护的控制信息包含使用与当前堆栈帧相关的密钥加密控制信息,所述当前堆栈帧与子例程相关。更改受保护的控制信息以恢复控制信息包含解密受保护的控制信息以恢复控制信息。更改控制信息以产生受保护的控制信息包含添加认证标签到控制信息以产生受保护的控制信息。认证标签与当前堆栈帧相关,所述当前堆栈帧与子例程相关。更改受保护的控制信息以恢复控制信息包含从受保护的控制信息导出帧指针和返回地址。更改受保护的控制信息以恢复控制信息包含应用消息认证码到帧指针和返回地址以产生标签值,以及比较标签值与包含于受保护的控制信息中的认证标签来验证控制信息在堆栈上时未被更改。根据本专利技术的用于保护与处理器相关的堆栈的内容的实例处理器包含用于从正通过处理器执行的软件程序接收存储指令的装置,所述存储指令包含与子例程相关的控制信息,用于更改控制信息以响应于从软件程序接收存储指令产生受保护的控制信息的装置、用于在在堆栈上存储受保护的控制信息的装置、用于从软件程序接收加载指令的装置;以及响应于从软件程序接收加载指令,用于从堆栈加载受保护的控制信息的装置、用于更改受保护的控制信息以恢复控制信息的装置,和用于将控制信息返回到软件程序的装置。这种处理器的实施方案可包含以下特点中的一或多者。用于更改控制信息以产生受保护的控制信息的装置包含用于加密控制信息以产生受保护的控制信息的装置。用于加密控制信息以产生受保护的控制信息的装置包含用于使用基于分块密码的消息认证码算法加密控制信息的装置。用于加密控制信息以产生受保护的控制信息的装置包含用于使用与当前堆栈帧相关的密钥加密控制信息的装置,所述当前堆栈帧与子例程相关。用于更改受保护的控制信息以恢复控制信息的装置包含用于解密受保护的控制信息以恢复控制信息的装置。用于更改控制信息以产生受保护的控制信息的装置包含用于添加认证标签到控制信息以产生受保护的控制信息的装置。认证标签与当前堆栈帧相关,所述当前堆栈帧与子例程相关。用于更改受保护的控制信息以恢复控制信息的装置包含用于从受保护的控制信息导出帧指针和返回地址的装置。用于更改受保护的控制信息以恢复控制信息的装置包含用于应用消息认证码到帧指针和返回地址以产生标签值的装置,以及用于比较标签值与包含于受保护的控制信息中的认证标签来验证控制信息在堆栈上时未被更改的装置。根据本专利技术的实例系统包含存储器、用于存储与一或多个子例程相关的数据的存储器中的堆栈,以及耦合到存储器的处理器。处理器经配置以执行处理器可执行指令,所述处理器可执行指令经配置以使处理器进行以下操作:从正通过处理器执行的软件程序接收存储指令,所述存储指令包含与子例程相关的控制信息;响应于从软件程序接收存储指令,更改控制信息以产生受保护的控制信息;在堆栈上存储受保护的控制信息;从软件程序接收加载指令;以及响应于从软件程序接收加载指令,处理器经配置以从堆栈加载受保护的控制信息,更改受保护的控制信息以恢复控制信息,和将控制信息返回到软件程序。这种系统的实施方案可包含以下特征中的一或多者。经配置以更改控制信息以产生受保护的控制信息的处理器进一步经配置以加密控制信息以产生受保护的控制信息。处理器经配置以使用基于分块密码的消息认证码算法加密控制信息。处理器经配置以使用与当前堆栈帧相关的密钥加密控制信息,所述当前堆栈帧与子例程相关。处理器经配置以解密受保护的控制信息,从而恢复控制信息。经配置以更改控制信息以产生受保护的控制信息的处理器进一步经配置以添加认证标签到控制信息以产生受保护的控制信息。认证标签与当前堆栈帧相关,所述当前堆栈帧与子例程相关。经配置以更改受保护的控制信息以恢复控制信息的处理器进一步经配置以从受保护的控制信息导出帧指针和返回地址。经配置以更改受保护的控制信息以恢复控制信息的处理器进一步经配置以应用消息认证码到帧指针和返回地址以产生标签值,以及比较标签值与包含于受保护的控制信息中的认证标签来验证控制信息在堆栈上时未被更改。附图说明图1是其中可实施本文中所论述的基于硬件的堆栈控制信息保护技术的实例计算机系统的功能框图。图2是来自图1的实例计算机系统的功能框图,示出了可用于实施本文所揭示的基于硬件的堆栈控制信息技术的控制数据认证技术的实施方案。图3是来自图1的实例计算机系统的功能框图,示出了可用于实施本文所揭示的基于硬件的堆栈控制信息技术的控制数据加密技术的实施方案。图4是用于保护与处理器相关的堆栈的内容的过程的流程图,所述处理器可用于实施本文所揭示的基于硬件的堆栈本文档来自技高网
...
基于硬件的堆栈控制信息保护

【技术保护点】
一种用于保护与处理器相关的堆栈的内容的方法,所述方法包括:从正通过所述处理器执行的软件程序接收存储指令,所述存储指令包含与子例程相关的控制信息;响应于从所述软件程序接收所述存储指令,更改所述控制信息以产生受保护的控制信息;在所述堆栈上存储所述受保护的控制信息;从所述软件程序接收加载指令;以及响应于从所述软件程序接收所述加载指令,从所述堆栈加载所述受保护的控制信息,更改所述受保护的控制信息以恢复所述控制信息,以及将所述控制信息返回到所述软件程序。

【技术特征摘要】
【国外来华专利技术】2014.04.18 US 14/256,6811.一种用于保护与处理器相关的堆栈的内容的方法,所述方法包括:从正通过所述处理器执行的软件程序接收存储指令,所述存储指令包含与子例程相关的控制信息;响应于从所述软件程序接收所述存储指令,更改所述控制信息以产生受保护的控制信息;在所述堆栈上存储所述受保护的控制信息;从所述软件程序接收加载指令;以及响应于从所述软件程序接收所述加载指令,从所述堆栈加载所述受保护的控制信息,更改所述受保护的控制信息以恢复所述控制信息,以及将所述控制信息返回到所述软件程序。2.根据权利要求1所述的方法,其中更改所述控制信息以产生所述受保护的控制信息包括:加密所述控制信息以产生所述受保护的控制信息。3.根据权利要求2所述的方法,其中所述加密所述控制信息以产生所述受保护的控制信息包括使用基于分块密码的消息认证码算法加密所述控制信息。4.根据权利要求2所述的方法,其中所述加密所述控制信息以产生所述受保护的控制信息包括使用与当前堆栈帧相关的密钥加密所述控制信息,所述当前堆栈帧与所述子例程相关。5.根据权利要求2所述的方法,其中更改所述受保护的控制信息以恢复所述控制信息包括:解密所述受保护的控制信息以恢复所述控制信息。6.根据权利要求1所述的方法,其中更改所述控制信息以产生所述受保护的控制信息包括:添加认证标签到所述控制信息以产生所述受保护的控制信息。7.根据权利要求6所述的方法,其中所述认证标签与当前堆栈帧相关,所述当前堆栈帧与所述子例程相关。8.根据权利要求6所述的方法,其中更改所述受保护的控制信息以恢复所述控制信息包括从所述受保护的控制信息导出帧指针和返回地址。9.根据权利要求8所述的方法,其中更改所述受保护的控制信息以恢复所述控制信息包括:应用消息认证码到所述帧指针和所述返回地址以产生标签值;以及比较所述标签值与包含于所述受保护的控制信息中的所述认证标签来验证所述控制信息在所述堆栈上时未被更改。10.一种处理器,其用于保护与所述处理器相关的堆栈的内容,所述处理器包括:用于从正通过所述处理器执行的软件程序接收存储指令的装置,所述存储指令包含与子例程相关的控制信息;用于响应于从所述软件程序接收所述存储指令,更改所述控制信息以产生受保护的控制信息的装置;用于在所述堆栈上存储所述受保护的控制信息的装置;用于从所述软件程序接收加载指令的装置;以及响应于从所述软件程序接收所述加载指令,用于从所述堆栈加载所述受保护的控制信息的装置,用于更改所述受保护的控制信息以恢复所述控制信息的装置,以及用于将所述控制信息返回到所述软件程序的装置。11.根据权利要求10所述的处理器,其中用于更改所述控制信息以产生所述受保护的控制信息的所述装置包括:用于加密所述控制信息以产生所述受保护的控制信息的装置。12.根据权利要求11所述的处理器,其中用于加密所述控制信息以产生所述受保护的控制信息的所述装置包括用于使用基于分块密码的消息认证码算法加密所述控制信息的装置。13.根据权利要求11所述的处理器,其中用于加密所述控制信息以产生所述受保护的控制信息的所述装置包括用于使用与当前堆栈帧相关的密钥加密所述控制信息的装置,所述当前堆...

【专利技术属性】
技术研发人员:C·E·阿卡尔埃里希·詹姆士·普罗恩德克罗伯特·J·图尔纳B·B·布伦利
申请(专利权)人:高通股份有限公司
类型:发明
国别省市:美国;US

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

1