防止无效的存储器引用制造技术

技术编号:33139538 阅读:29 留言:0更新日期:2022-04-22 13:48
促进针对堆对象的基于硬件的存储器错误减轻的技术。一种系统可以包括执行被存储在非暂时性计算机可读介质中的计算机可执行组件的处理器。计算机可执行组件包括:条目组件;以及重新利用组件。当在存储器中分配对象时,条目组件可以在表中分配条目以存储界限信息。重新利用组件可以重新利用对象地址的未使用位以存储对该表条目的索引。以存储对该表条目的索引。以存储对该表条目的索引。

【技术实现步骤摘要】
防止无效的存储器引用

技术介绍

[0001]本公开涉及计算设备,并且更具体地,涉及促进针对堆对象的基于硬件的存储器错误减轻的技术。

技术实现思路

[0002]以下给出了概述以提供对本专利技术的一个或多个实施例的基本理解。本概述并不旨在标识关键或重要元素,或描绘特定实施例的任何范围或权利要求的任何范围。其唯一目的是以简化形式呈现概念,作为稍后呈现的更详细描述的序言。在本文描述的一个或多个实施例中,描述了促进针对堆对象的基于硬件的存储器错误减轻的系统、设备、计算机实现的方法和/或计算机程序产品。
[0003]根据实施例,一种系统可以包括执行被存储在非暂时性计算机可读介质中的计算机可执行组件的处理器。计算机可执行组件包括:条目组件;以及重新利用(re

purpose)组件。当在存储器中分配对象时,条目组件可以在表中分配条目以存储界限信息。重新利用组件可以重新利用对象地址的未使用位以存储对表条目的索引。
[0004]根据另一个实施例,一种计算机实现的方法可包括:当在存储器中分配对象时,使用处理器在表中分配条目以存储界限信息。计算机实现的方法还可以包括:使用处理器重新利用对象地址的未使用位以存储对表条目的索引。
[0005]根据另一个实施例,一种计算机程序产品可以包括具有程序指令的计算机可读存储介质。程序指令可由处理器执行以使处理器执行操作。所述操作包括:当分配对象时,在表中分配条目以存储界限信息。所述操作还包括重新利用对象地址的未使用位以存储对表条目的索引。
附图说明
[0006]图1示出根据本文描述的一个或多个实施例的示例非限制性的基于各自的界限元数据的位置而对基于界限检查的技术进行分组。
[0007]图2示出根据本文描述的一个或多个实施例的可促进针对堆对象的基于硬件的存储器错误减轻的示例非限制性系统的框图。
[0008]图3示出根据本文描述的一个或多个实施例的重新利用对象指针的未使用位以执行针对堆对象的空间和时间安全的示例非限制性高级概念概览。
[0009]图4示出根据本文描述的一个或多个实施例的在程序运行时期间指针的生命周期的示例非限制性高级概念概览。
[0010]图5示出根据本文描述的一个或多个实施例的界限检查框架的示例非限制性组织布局。
[0011]图6示出根据本文描述的一个或多个实施例的示例非限制性BITable。
[0012]图7示出根据本文描述的一个或多个实施例的用于程序的64位虚拟地址空间的示例非限制性布局。
[0013]图8示出根据本文描述的一个或多个实施例的用于实现基于硬件的界限检查的示例非限制性硬件组织。
[0014]图9示出根据本文描述的一个或多个实施例的用于涉及基于硬件的界限检查的减速的示例非限制性场景。
[0015]图10示出根据本文描述的一个或多个实施例的描绘其中用基于硬件的界限检查框架检测越界(out

of

bounds)访问的功能的示例非限制性图表。
[0016]图11示出根据本文描述的一个或多个实施例的描绘SPEC

CPU2017应用程序中的导致越界的指令的示例非限制性图表。
[0017]图12示出根据本文描述的一个或者多个实施例的描绘用于BITable管理的软件插桩(instrumentation)的性能影响的示例非限制性图表。
[0018]图13示出根据本文描述的一个或多个实施例的描绘硬件界限检查的性能影响的示例非限制性图表。
[0019]图14示出根据本文描述的一个或多个实施例的描绘具有BICache缺失(miss)的每1000个指令的加载的示例非限制性图表。
[0020]图15示出根据本文描述的一个或多个实施例的描绘具有BICache缺失的加载的百分比的示例非限制性图表。
[0021]图16示出根据本文描述的一个或多个实施例的描绘在BICache大小变化时与界限检查相关联的平均减速的示例非限制性图表。
[0022]图17示出根据本文描述的一个或多个实施例的描绘在BICache大小变化时的BICache缺失率的示例非限制性图表。
[0023]图18示出根据本文描述的一个或多个实施例的描绘与界限检查相关联的存储器带宽开销的示例非限制性图表。
[0024]图19示出根据本文描述的一个或者多个实施例的描绘与BITable相关联的存储器带宽开销的示例非限制性图表。
[0025]图20A

20G示出根据本文描述的一个或者多个实施例的用于在存储器中初始化BITable的示例非限制操作流程。
[0026]图21A

21E示出根据本文描述的一个或多个实施例的用于处理存储器分配函数的示例非限制性操作流程。
[0027]图22A

22K示出根据本文描述的一个或多个实施例的用于处理加载指令的示例非限制性操作流程。
[0028]图23示出根据本文描述的一个或多个实施例的示例非限制性指针。
[0029]图24示出根据本文描述的一个或多个实施例的示例非限制性指针。
[0030]图25示出对图24的指针执行的示例非限制性的添加操作。
[0031]图26示出根据本文描述的一个或多个实施例的可促进针对堆对象的基于硬件的存储器错误减轻的示例非限制性计算机实现的方法的流程图。
[0032]图27示出其中可促进本文所描述的一个或多个实施例的示例非限制性操作环境的框图。
具体实施方式
[0033]以下详细描述仅是说明性的,并且不旨在限制实施例和/或实施例的应用或使用。此外,没有意图受到前面的
技术介绍

技术实现思路
部分或具体实施方式部分中呈现的任何明示或暗示的信息的约束。
[0034]现在参考附图描述一个或多个实施例,其中相同的附图标记始终用于表示相同的元件。在以下描述中,出于解释的目的,阐述了许多具体细节以便提供对一个或多个实施例的更透彻理解。然而,在各种情况下,显然可在没有这些特定细节的情况下实践该一个或多个实施例。
[0035]用存储器不安全语言(如C或C++)编写的利用用户代码以显式管理存储器的应用程序易于受到存储器安全错误(如缓冲器溢出、释放后使用(use

after

free)等)的攻击。这种错误以前已经在许多攻击(包括高调攻击(high

profile attack),诸如Morris蠕虫和Heartbleed(心脏出血))中利用。此外,这种错误被MITRE分级为一些最危险的软件缺陷。一个技术公司最近的研究揭示这种错误仍然是在其生产软件中识别的大约70%的通用漏洞披露(CVE)的根本原因。特别地,特定于堆对象的错误(包括堆损坏、越界访问和释放后使用)在2019年引起了几乎50%的CVE。
[0036]迄今为止,已经提出了许多解决方案来检测或防止这样的错误,这些解决方案可以被广义地分本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种系统,包括:处理器,其执行被存储在非暂时性计算机可读介质中的以下计算机可执行组件:条目组件,当在存储器中分配对象时,所述条目组件在表中分配条目以存储界限信息;以及重新利用组件,其重新利用对象地址的未使用位以存储对所述表条目的索引。2.根据权利要求1所述的系统,还包括:检查组件,所述检查组件通过使用地址中的索引位以访问界限信息来在硬件中对加载和存储指令执行界限检查。3.根据权利要求1所述的系统,还包括:传播组件,所述传播组件在经由赋值语句或指针算术导出后续对象地址时自动传播所述索引。4.根据权利要求2所述的系统,其中,所述检查组件检查数组界限。5.根据权利要求2所述的系统,其中,所述检查组件确定数组引用是在界内还是越界,并减轻越界数组引用的发生。6.根据权利要求1所述的系统,其中,所述重新利用组件利用所述对象地址中的未使用位来跟踪能够被访问的存储器地址的范围。7.根据权利要求1所述的系统,其中,当所述对象地址被复制在赋值语句中时,所述传播组件在未使用位中传播额外信息。8.根据权利要求1所述的系统,其中,当所述对象地址作为函数调用中的自变量被传递时,所述传播组件在未使用位中传播额外信息。9.根据权利要求1所述的系统,其中,当所述对象地址被用于计算地址时,所述传播组件在未使用位中传播额外信息。10.根据权利要求1所述的系统,其中,保护位在地址中介于索引位与地址位之间。11.根据权利要求1所述的系统,其中,管理被存储在所述表中的所述界限信息包括对存储器分配函数或释放库函数的修改。12.根据权利要求1所述的系统,其中,当应用程序包括超过所述表的大小的活动对象数量时,或者当支持所述活动对象数量所需的索引位数量超过已被分配的索引位数量时,所述界限信息的子集被存储在溢出表中。13.根据权利要求12所述的系统,还包括:检查组件,当地址...

【专利技术属性】
技术研发人员:R
申请(专利权)人:国际商业机器公司
类型:发明
国别省市:

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

1