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

用于控制对有界指针的使用的装置和方法制造方法及图纸

技术编号:27261867 阅读:40 留言:0更新日期:2021-02-06 11:21
提供了用于控制对有界指针得使用的装置和方法。该装置具有:存储器分配电路,用于分配存储器中的存储器区域;以及有界指针生成电路,用于生成有界指针,这些有界指针至少包括用于访问存储器区域的可撤销有界指针。该可撤销有界指针提供指针值以及标识该存储器区域的地址范围的范围信息。该存储器分配电路被布置为在存储器中的头部位置处提供存储器区域的头部,该头部具有第一令牌字段,其被初始化为与存储器区域相关联的第一令牌值。该头部位置从可撤销有界指针所提供的范围信息中导出。存储器分配电路响应于存储器区域的解除分配,修改头部的第一令牌字段中的存储值。作为上述步骤的结果,响应于对使用可撤销有界指针来生成存储器地址的请求,使用认证检查可以被布置为在确定第一令牌字段中的存储值已被改变时,防止生成存储器地址。这提供了一种用于试图防止释放后使用场景的强健机制,在释放后使用场景中,在相关联的存储器区域被解除分配之后尝试使用有界指针。试使用有界指针。试使用有界指针。

【技术实现步骤摘要】
【国外来华专利技术】用于控制对有界指针的使用的装置和方法


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

技术介绍

[0002]一些数据处理装置可以支持有界指针,其中,指示特定地址的指针与指示该指针的允许地址范围的范围信息相关联。例如,这样的指针可以被称为“胖指针”。
[0003]除了范围信息之外,这样的有界指针还可以具有其他相关联的属性,其定义对指针的使用的一个或多个限制/许可。因此,通过对如何使用由边界指针指定的指针值施加约束,使用此类有界指针可以提供强大的安全性。
[0004]当在存储器中分配存储器区域时,例如,以使得该存储器区域能够被特定处理使用,可以建立一个或多个有界指针以与所分配的存储器区域关联使用。这样的有界指针可以包括范围信息,其标识所分配的存储器区域的地址范围。当处理试图使用有界指针生成存储器储器地址时,它将被限制为仅生成落入所分配的存储器区域的地址范围内的存储器地址。
[0005]可能出现的问题是,当稍后解除分配存储器区域时,释放了该存储器空间以用于重新分配,有界指针可能仍可用于处理电路。在相关联的存储器区域已被解除分配之后对这种有界指针的潜在使用被称为“释放后使用(use-after-free)”问题。具体地,如果由于编程错误而发生在解除分配相关联的存储器区域之后使用有界指针,则可能引起软件的未定义行为。此外,当有界指针的这种使用作为由安全攻击者有意引起的动作而发生时,这可能潜在地导致信息的安全性泄漏、和/或远程代码执行。
[0006]因此,期望提供一种减轻释放后使用问题的技术。

技术实现思路

[0007]在一个示例配置中,提供了一种装置,包括:存储器分配电路,用于分配存储器中的存储器区域;以及有界指针生成电路,用于生成有界指针,该有界指针至少包括用于访问存储器区域的可撤销有界指针,该可撤销有界指针提供指针值以及标识该存储器区域的地址范围的范围信息;其中,该存储器分配电路被布置为在存储器中的头部位置处提供存储器区域的头部,该头部具有第一令牌字段,该第一令牌字段的存储值被初始化为与存储器区域相关联的第一令牌值,该头部位置是从可撤销有界指针所提供的范围信息中导出的,并且其中,存储器分配电路响应于存储器区域的后续解除分配,来修改头部的第一令牌字段中的存储值;并且响应于对使用可撤销有界指针来生成存储器地址的请求,使用认证检查被布置为在确定第一令牌字段中的存储值已被改变时,防止生成存储器地址。
[0008]在另一示例配置中,提供了一种控制在装置中对有界指针的使用的方法,该装置具有用于分配存储器中的存储器区域的存储器分配电路,以及用于生成有界指针的有界指针生成电路,该方法包括:布置该有界指针生成电路来至少生成用于访问存储器区域的可撤销有界指针,该可撤销有界指针提供指针值以及标识该存储器区域的地址范围的范围信
息;在存储器中的头部位置处提供存储器区域的头部,该头部具有第一令牌字段,该第一令牌字段的存储值被初始化为与存储器区域相关联的第一令牌值,该头部位置是从可撤销有界指针所提供的范围信息中导出的;使得存储器分配电路响应于存储器区域的后续解除分配,来修改头部的第一令牌字段中的存储值;以及响应于对使用可撤销有界指针来生成存储器地址的请求,使得使用认证检查在确定第一令牌字段中的存储值已被改变时,防止生成存储器地址。
[0009]在又一示例配置中,提供了一种装置,包括:存储器分配装置,用于分配存储器中的存储器区域;以及有界指针生成装置,用于生成有界指针,该有界指针至少包括用于访问存储器区域的可撤销有界指针,该可撤销有界指针提供指针值以及标识该存储器区域的地址范围的范围信息;其中,该存储器分配装置被布置为在存储器中的头部位置处提供存储器区域的头部,该头部具有第一令牌字段,该第一令牌字段的存储值被初始化为与存储器区域相关联的第一令牌值,该头部位置是从可撤销有界指针所提供的范围信息中导出的,并且其中,存储器分配装置响应于存储器区域的后续解除分配,来修改头部的第一令牌字段中的存储值;并且响应于对使用可撤销有界指针来生成存储器地址的请求,使用认证检查被布置为在确定第一令牌字段中的存储值已被改变时,防止生成存储器地址。
附图说明
[0010]将参考如附图中所示的示例仅以说明的方式来进一步描述本技术,在附图中:
[0011]图1是根据一个示例的装置的框图;
[0012]图2示出了这样的指令类型的示例,针对其如果尝试在一组有界指针存储元件内设置或访问指针值,其中,该指针值用于指定在相关联的范围信息所指示的范围之外的地址,则可能会触发错误;
[0013]图3示出了根据一个示例的对与有界指针相关联的标签位的使用;
[0014]图4是示出根据一个示例的存储器分配处理的流程图;
[0015]图5是示出根据一个示例的有界指针创建操作的流程图;
[0016]图6是示出根据一个示例的存储器解除分配处理的流程图;
[0017]图7A至图7C示意性地示出了根据一个示例布置的所分配的存储器区域、该存储器区域的示例头部格式、以及所生成的有界指针;
[0018]图8是示出在一个示例中执行的使用认证检查操作的流程图;
[0019]图9是示出可根据一个实例布置执行的编码操作的流程图;
[0020]图10是示出可根据一个实例布置执行的解码操作的流程图;
[0021]图11示意性地示出了根据一个示例布置的对有界指针的编码和解码;
[0022]图12A和图12B示意性地示出了可以执行的示例编码操作;以及
[0023]图13示出了根据一个示例布置的示例使用情况,其中,将由第一装置生成的可撤销有界指针传递给第二装置,以供该第二装置使用,直到相关联的存储器区域被解除分配为止。
具体实施方式
[0024]一些处理装置可以支持使用有界指针。例如,指针本身可以指向或用于确定要访
问的数据值或要执行的指令的地址。然而,指针还可以具有相关联的范围信息,该范围信息指示使用指针时的允许地址范围。例如,这可用于确保从指针确定的地址保持在一定界限内,以维护行为的安全性或功能正确性。例如,对于基于能力的(capability-based)架构的兴趣日益增加,其中,为给定处理定义了某些能力,并且如果尝试执行在所定义的能力之外的操作,则会触发错误。有界指针的范围信息可以是为这种架构定义的能力信息的一部分,并且在基于能力的架构中,这样的有界指针(包括其相关联的能力信息)可以称为能力。
[0025]因此,一种装置可以具有有界指针存储元件,用于存储具有相关联范围信息的指针,该相关联范围信息指示在使用指针时的允许地址范围。每个有界指针存储元件可以是寄存器,或者通用存储器中的存储器位置,例如,堆栈存储器上的位置。
[0026]某些指令可以用于引用这种有界指针存储元件以便获得指针,然后该指针用于导出在指令的操作期间所需的存储器地址。指针可以直接用于标识存储器地址,或者可以用于导出存储器地址,例如,通过对指针值添加偏移量。
[002本文档来自技高网
...

【技术保护点】

【技术特征摘要】
【国外来华专利技术】1.一种装置,包括:存储器分配电路,用于分配存储器中的存储器区域;以及有界指针生成电路,用于生成有界指针,所述有界指针至少包括用于访问所述存储器区域的可撤销有界指针,所述可撤销有界指针提供指针值以及标识所述存储器区域的地址范围的范围信息;其中,所述存储器分配电路被布置为在所述存储器中的头部位置处提供所述存储器区域的头部,所述头部具有第一令牌字段,所述第一令牌字段的存储值被初始化为与所述存储器区域相关联的第一令牌值,所述头部位置是从所述可撤销有界指针所提供的所述范围信息中导出的,并且其中,所述存储器分配电路响应于所述存储器区域的后续解除分配,来修改所述头部的所述第一令牌字段中的所述存储值;并且其中,响应于对使用所述可撤销有界指针来生成存储器地址的请求,使用认证检查被布置为在确定所述第一令牌字段中的所述存储值已被改变时,防止生成所述存储器地址。2.根据权利要求1所述的装置,其中,所述使用认证检查被布置为当确定所述第一令牌字段中的所述存储值已被改变时,使所述可撤销有界指针无效。3.根据权利要求2所述的装置,其中:所述可撤销有界指针被布置为存储所述第一令牌值;并且响应于对使用所述可撤销有界指针来生成存储器地址的请求,所述使用认证检查被布置为采用所述范围信息来确定所述头部位置,并且在存储在所述可撤销有界指针中的所述第一令牌值与所述头部的所述第一令牌字段中的所述存储值之间不匹配的情况下,使所述可撤销有界指针无效。4.根据权利要求1至3中任一项所述的装置,还包括令牌生成电路,用于生成所述第一令牌值。5.根据权利要求4所述的装置,其中,所述令牌生成电路是伪随机数生成器。6.根据任一前述权利要求所述的装置,其中,所述有界指针生成电路还被布置为在每个所生成的有界指针中提供可撤销字段,所述可撤销字段在所生成的有界指针是所述可撤销有界指针时被设置。7.根据任一前述权利要求所述的装置,还包括:一组有界指针寄存器,每个有界指针寄存器被布置为存储用于生成存储器地址的有界指针。8.根据权利要求7在引用权利要求3时所述的装置,其中:所述头部还包括第二令牌字段,所述第二令牌字段被布置为存储与所述存储器区域相关联的第二令牌值,所述第二令牌值不在由所述有界指针生成电路生成的所述可撤销有界指针中;并且所述使用认证检查还被布置为当确定所述第二令牌值已被改变时,使所述可撤销有界指针无效。9.根据权利要求8所述的装置,还包括:附加存储装置,所述附加存储装置与该组有界指针寄存器相关联地被提供,其中,当所述可撤销有界指针被存储在所选择的有界指针寄存器中时,所述附加存储装置被布置为与所述所选择的有界指针寄存器相关联地标识如在所述头部的所述第二令牌字段中初始化
的所述第二令牌值;其中,所述使用认证检查进一步响应于对使用如存储在所述所选择的有界指针寄存器中的所述可撤销有界指针来生成存储器地址的请求,来在存储在所述头部中的所述第二令牌值与存储在与所述所选择的有界指针寄存器相关联的所述附加存储器装置中的所述第二令牌值之间不存在匹配的情况下,使所述可撤销有界指针无效。10.根据权利要求9所述的装置,其中,所述附加存储装置对于在所述装置上执行的一种或多种类型的软件是不可访问的。11.根据权利要求8所述的装置,还包括通知机制,所述通知机制用于标识何时已经对所述头部的所述第一令牌字段和所述第二令牌字段中的至少一个进行了写入操作,从而使得所述使用认证检查能够在所述第一令牌值或所述第二令牌值已被改变的情况下,使所述可撤销有界指针无效。12.根据权利要求8至11中任一项所述的装置,其中,所述存储器分配电路响应于所述存储器区域的后续解除分配,修改存储在所述头部的所述第二令牌字段中的值。13.根据权利要求8至12中任一项在引用权利要求4时所述的装置,其中,所述令牌生成电路还被布置为生成所述第二令牌值。14.根据权利要求8至13中任一项所述的装置,其中:所述头部被布置为存储所述可撤销有界指针的一部分的副本;并且所述装置包括编码控制电路,所述编码控制电路被布置为当所述可撤销有界指针从所述所选择的有界指针寄存器被存储到所述存储器时,执行编码操作,以如下方式通过使用所述第二令牌值对所述可撤销有界指针的该部分进行编码来创建经编码的可撤销有界指针:所述方式允许使用所述第二令牌值和所述经编码的可撤销有界指针来重新创建所述可撤销有界指针的该部分,此后,所述经编码的可撤销有界指针被存储到所述存储器。15.根据权利要求14所述的装置,其...

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

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

1