当前位置: 首页 > 专利查询>ARM有限公司专利>正文

验证堆栈指针制造技术

技术编号:28448833 阅读:40 留言:0更新日期:2021-05-15 21:10
一种装置,包括:处理电路(4),用于在多个安全性域的一个安全性域中执行数据处理,这多个安全性域至少包括安全域和不太安全域;以及存储器访问检查电路(22),用于根据安全性属性数据来检查是否允许存储器访问,安全性属性数据指示哪个域与目标地址相关联。响应于程序流从不太安全域中的处理向具有与安全域相关联的地址的目标指令的给定改变,当目标指令是指示到安全域的有效进入点的网关指令以外的指令时,触发故障。当目标指令是网关指令时,触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。存器中存储的选定堆栈指针是否安全。存器中存储的选定堆栈指针是否安全。

【技术实现步骤摘要】
【国外来华专利技术】验证堆栈指针


[0001]本技术涉及数据处理领域。

技术介绍

[0002]处理电路可支持在多个安全性域的一个安全性域中执行数据处理,这多个安全性域至少包括安全域和不太安全(less secure)域。这可允许保护与安全域相关联的敏感数据或代码免受在不太安全域中操作的不太安全代码的不适当访问。

技术实现思路

[0003]至少一些示例提供了一种装置,该装置包括:处理电路,用于在多个安全性域的一个安全性域中执行数据处理,这多个安全性域至少包括安全域和不太安全域;存储器访问检查电路,用于根据安全性属性数据来检查是否允许存储器访问,该安全性属性数据指示多个安全性域中的哪个安全性域与存储器访问的目标地址相关联;以及至少一个堆栈指针寄存器,用于存储指示存储器中的堆栈数据结构的堆栈指针;其中:响应于程序流从不太安全域中的处理向具有与安全域相关联的指令地址的目标指令的给定改变:当目标指令是指示到安全域的有效进入点的网关指令以外的指令时,处理电路被配置为触发故障;并且当目标指令是网关指令时,处理电路被配置为触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。
[0004]至少一些示例提供了一种用于处理电路的数据处理方法,该处理电路能够在多个安全性域的一个安全性域中执行数据处理,这多个安全性域至少包括安全域和不太安全域,对于这些安全性域,根据安全性属性数据来检查是否允许存储器访问,安全性属性数据指示这多个安全性域中的哪个安全性域与存储器访问的目标地址相关联;该方法包括:响应于程序流从不太安全域中的处理向具有与安全域相关联的指令地址的目标指令的给定改变:确定目标指令是否是指示到安全域的有效进入点的网关指令;当目标指令是网关指令以外的指令时,触发故障;以及当目标指令是网关指令时,触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。
[0005]至少一些示例提供了一种计算机程序,用于控制主机数据处理装置以提供用于指令执行的指令执行环境,该计算机程序包括:处理程序逻辑,该处理程序逻辑用于支持在多个安全性域的一个安全性域中的数据处理,这多个安全性域至少包括安全域和不太安全域;存储器访问检查程序逻辑,该存储器访问检查程序逻辑用于根据安全性属性数据检查是否允许存储器访问,安全性属性数据指示这多个安全性域中的哪个安全性域与存储器访问的目标地址相关联;以及缓存器仿真程序逻辑,用于控制对主机数据处理装置的存储器的访问,以模拟对由计算机程序所模拟的目标架构的模拟架构寄存器的访问,这些模拟架构寄存器包括至少一个堆栈指针寄存器,此堆栈指针寄存器包括用于存储指示存储器中的堆栈数据结构的堆栈指针;其中:响应于程序流从不太安全域中的处理向具有与安全域相关联的指令地址的目标指令的给定改变:当目标指令是指示到安全域的有效进入点的网关
指令以外的指令时,处理程序逻辑被配置为触发故障;以及当目标指令是网关指令时,处理程序逻辑被配置为触发堆栈指针验证动作以验证使用与这些模拟架构寄存器中的选定堆栈指针寄存器相关联的选定堆栈指针是否安全。
[0006]一种计算机可读存储介质可存储上述计算机程序。该存储介质可为非暂态存储介质。
附图说明
[0007]本技术的其他方面、特征和优点将从以下结合附图来阅读的对示例的描述中变得显而易见,其中:
[0008]图1示意性地图示出具有支持安全域和不太安全域的处理电路的数据处理系统的示例;
[0009]图2示出处理电路的不同域和操作模式的示例;
[0010]图3示出处理电路的寄存器的示例;
[0011]图4示出第一异常堆栈帧的多个示例,第一异常堆栈帧省去了与被调用者寄存器相关联的架构状态并省去了完整性签名;
[0012]图5示出第二异常堆栈帧的示例,第二异常堆栈帧包括来自被调用者寄存器的附加架构状态并包括完整性签名;
[0013]图6是图示出由数据处理装置所支持的不同异常进入转换的表;
[0014]图7是示出由数据处理装置所支持的众多不同异常返回转换的表;
[0015]图8示出可能希望检测的潜在的不适当域/模式转换序列;
[0016]图9图示出重入情境的示例,其中函数被首次调用、中途中断、并且随后再次调用,而未完成函数代码的从函数被首次调用起的剩余部分;
[0017]图10是示出包括响应于网关指令而触发堆栈指针验证动作的数据处理的方法的流程图;
[0018]图11示出可使用的模拟器示例。
具体实施方式
[0019]一种数据处理装置可具有处理电路,该处理电路支持在多个安全性域的一个安全性域中执行数据处理,这多个安全性域至少包括安全域和不太安全域。可提供存储器访问检查电路以根据安全性属性数据来检查是否允许存储器访问,安全性属性数据指示这些域中的哪个域与存储器访问的目标地址相关联。例如,当在不太安全域中操作时,存储器访问检查电路可防止对与安全域相关联的地址的存储器访问,而当在安全域中操作时,可允许处理电路访问与安全域相关联的地址以及与不太安全域相关联的地址。可提供至少一个堆栈指针寄存器,以存储指示存储器中的堆栈数据结构的堆栈指针。例如,当处置异常时,堆栈数据结构可用于保存和恢复架构状态。
[0020]在下文论述的技术中,响应于程序流从不太安全域中的处理向具有与安全域相关联的指令地址的目标指令的给定改变:当目标指令是与指示到安全域的有效进入点的网关指令以外指令时,处理电路触发故障;以及当目标指令是网关指令时,处理电路触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。
[0021]网关指令可用于标记到安全域的有效进入点。藉由在程序流从不太安全域向具有与安全域相关联的指令地址的目标指令的改变之后,若目标指令不是网关指令则触发故障,这通过触发分支到在存储器的安全区域中存储的安全代码内的任意点而防止能控制在不太安全域中处理的代码的攻击者违反安全性。触发检查目标指令是否是网关指令的程序流的给定改变可以是程序流的连续改变(其中执行一连串指令而不跨被指定为不太安全的地址和被指定为安全的地址之间的边界分支,无分支)或程序流的不连续改变(例如,因分支或其他指令导致的,或因异常进入或返回事件导致的,异常进入或返回事件导致对指示表示当前执行点的指令地址的程序计数器进行更新)。
[0022]另一方面,在程序流的给定改变之后,当目标指令是网关指令时,处理电路可触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。这可防范某些攻击,这些攻击可能试图操纵在安全域内使用的堆栈指针以试图允许在不太安全域中操作的不安全代码影响在安全域中执行哪些指令。通过响应于网关指令而触发堆栈指针验证动作,这可以确保每当从不太安全域进入安全域时触发堆栈指针验证动作。因为在程序流的给定改变之后,若所执行的下一指令是网关指令以外的任何指令,将发生故障,这意味着可以信任网关指令以实施额外的安全性检查,即使在网关指令之后待在安全域中执行的代码的剩余部分是已经由本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种装置,包括:处理电路,用于在多个安全性域的一个安全性域中执行数据处理,所述多个安全性域至少包括安全域和不太安全域;存储器访问检查电路,用于根据安全性属性数据来检查是否允许存储器访问,所述安全性属性数据指示所述多个安全性域中的哪个安全性域与所述存储器访问的目标地址相关联;以及至少一个堆栈指针寄存器,用于存储堆栈指针,所述堆栈指针指示存储器中的堆栈数据结构;其中:响应于程序流从所述不太安全域中的处理向具有与所述安全域相关联的指令地址的目标指令的给定改变:当所述目标指令是指示到所述安全域的有效进入点的网关指令以外的指令时,所述处理电路被配置为触发故障;以及当所述目标指令是所述网关指令时,所述处理电路被配置为触发堆栈指针验证动作以验证使用选定堆栈指针寄存器中存储的选定堆栈指针是否安全。2.根据权利要求1所述的装置,其中所述堆栈指针验证动作包括:触发许可检查以检查是否允许加载请求,所述加载请求请求从所述选定堆栈指针寄存器中存储的选定堆栈指针导出的目标地址加载值。3.根据权利要求2所述的装置,其中所述处理电路被配置为以多个特权等级的一个特权等级操作;并且所述存储器访问检查电路被配置为:若能应用于所述目标地址的选定访问许可集合指定禁止选定特权等级访问所述目标地址,则触发故障。4.根据权利要求3所述的装置,其中:所述处理电路被配置为在多个操作模式的一个操作模式中执行数据处理;并且所述选定特权等级包括与一处理相关联的特权等级,该处理是在程序流的所述给定改变时所述处理电路的当前操作模式和所述安全域的组合中。5.根据权利要求3和4中任一项所述的装置,其中所述选定访问许可集合包括当所述处理电路的当前域是所述安全域时能应用于所述目标地址的访问许可集合。6.根据权利要求2至5中任一项所述的装置,其中所述目标地址等于所述选定堆栈指针。7.根据权利要求2至6中任一项所述的装置,其中响应于程序流的所述给定改变,当所述目标指令是所述网关指令时,所述处理电路被配置为响应于所述网关指令而执行重入检查;所述重入检查包括:当从所述目标地址加载的值是至少一个完整性签名值之一时,触发故障。8.根据权利要求7所述的装置,其中响应于程序流的所述给定改变,当所述目标指令是所述网关指令时:所述处理电路被配置为基于重入检查使能值来确定是否响应于所述网关指令而执行所述重入检查,所述重入检查使能值指定所述重入检查是被启用还是被禁用。9.根据权利要求7所述的装置,其中响应于程序流的所述给定改变,当所述目标指令是
所述网关指令时:所述处理电路被配置为:即使当所述重入检查使能值指定重入检查被禁用,也触发针对所述目标地址的所述许可检查。10.根据权利要求7至9中任一项所述的装置,包括异常控制电路,所述异常控制电路响应于异常条件而执行多个异常进入转换的一个异常进入转换,该异常进入转换是至少基于所述处理电路的当前安全性域而选择的,其中对于所述多个异常进入转换的至少一子集,所述异常控制电路被配置为触发将包括至少一个完整性签名值中所述一个完整性签名值的堆栈帧保存到由所述至少一个堆栈指针寄存器之一中存储的堆栈指针所识别的堆栈数据结构。11.根据权利要求7至10中任一项所述的装置,包括异常控制电路,所述异常控制电路响应于异常返回条件而执行多个异常返回转换的一个异常返回转换,该异常返回转换是至少基于与所述异常返回条件相关联的安全性域而选择的,其中对于所述多个异常返回转换的至少一子集,所述异常控制电路被配置为执行完整性签名检查,所述完整性签名检查包括:从给定堆栈数据结构访问针对所述异常返回转换而选择的堆栈帧,并且当所访问的堆栈帧中的预定位置处的值与所述至少一个完整性签名值中至少一个完整性签名值之间检测到不匹配时,触发故障。12.根据权利要求7至11中任一项所述的装置,其中所述重入检查还包括:当用于确定将哪个堆栈指针寄存器用于架构状态的入栈或出栈的堆栈指针选择值具有预定值时,触发故障。13.根据权利要求12所述的装置,其中:在给定安全性域内,所述处理电路被配置为在多个模式的一个模式中执行数据处理,所述多个模式包括用于异常处理的处理者模式和用于背景处理的线程模式;所述装置包括异常控制电路,所述异常控制电路响应于异常条件而触发将架构状态数据存储到如下数据结构:当所述异常条件在所述线程模式中发生并且所述堆栈指针选择值具有第一值时,存储到由进程堆栈指针寄存器中存储的堆栈指针所识别的进程...

【专利技术属性】
技术研发人员:托马斯
申请(专利权)人:ARM有限公司
类型:发明
国别省市:

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

1