用于防止越界存储器引用的专用边界信息寄存器文件制造技术

技术编号:34004281 阅读:21 留言:0更新日期:2022-07-02 12:57
一种用于防止越界引用的方法、系统和装置,包括:将缓冲器的地址存储在通用寄存器中,并将针对缓冲器的边界信息(BI)存储在边界信息寄存器中,当通用寄存器的内容在加载或存储操作中被用作地址时,使用边界信息寄存器的内容来确定加载或存储是否越界。容来确定加载或存储是否越界。容来确定加载或存储是否越界。

【技术实现步骤摘要】
用于防止越界存储器引用的专用边界信息寄存器文件


[0001]本专利技术涉及用于边界信息寄存器文件的方法、装置和系统的实施例,更具体地,但不作为限制,涉及使用专用边界信息寄存器文件来防止越界存储器引用的方法、装置和系统。

技术介绍

[0002]当软件偶然或有意地以超过其被分配的大小和存储器地址的方式访问系统存储器时,发生存储器安全漏洞(例如,缓冲区溢出、空指针、堆损坏、释放后使用、或双重释放等)。
[0003]诸如C和C++等在某些操作系统和其它程序中已广泛使用的程序可导致攻击者可以利用的多个存储器安全错误,带来危险和侵入性后果,诸如远程代码执行或特权缺陷的提升等。例如,通过读取越界存储器,攻击者可能能够绕过存储器保护并获得秘密值。
[0004]因此,需要有能够以有效的方式减少或消除存储器安全漏洞的技术。

技术实现思路

[0005]鉴于
技术介绍
中的上述和其它问题、缺点和不足,所公开的专利技术的示例性方面提供了一种用于防止越界存储器引用的专用边界信息寄存器文件的方法、装置和系统。
[0006]根据本专利技术的实施例,一种用于防止越界引用的方法包括:将缓冲器的地址存储在通用寄存器中,并将针对缓冲器的边界信息(BI)存储在边界信息寄存器中,当通用寄存器的内容在加载或存储操作中被用作地址时,使用边界信息寄存器的内容来确定加载或存储是否越界。
[0007]根据本专利技术的实施例,一种用于防止越界引用的系统包括:将缓冲器的地址存储在通用寄存器中,并将针对缓冲器的边界信息(BI)存储在边界信息寄存器中,当通用寄存器的内容在加载或存储操作中被用作地址时,使用边界信息寄存器的内容来确定加载或存储是否越界。
[0008]根据本专利技术的另一个实施例,一种计算机程序产品包括具有随其体现的程序指令的计算机可读存储介质,程序指令可由计算机读取和执行以使计算机执行用于防止越界引用的方法,该方法包括:将缓冲器的地址存储在通用寄存器中,并将针对缓冲器的边界信息(BI)存储在边界信息寄存器中,当通用寄存器的内容在加载或存储操作中被用作地址时,使用边界信息寄存器的内容来确定加载或存储是否越界。
[0009]因此,已经相当广泛地概述了本专利技术的某些实施例,以便可以更好地理解本专利技术的详细描述,并且以便可以更好地理解本专利技术对现有技术的贡献。当然,本专利技术的附加实施例将在下面描述,并且其将形成所附的权利要求的主题。
[0010]应当理解,本专利技术在其应用中不限于以下描述中阐述的或在附图中示出的构造细节和部件布置。本专利技术能够具有除了所描述的那些实施例之外的实施例,并且能够以各种方式实践和执行。而且,应当理解,本文所使用的措辞和术语以及摘要是为了描述的目的,
而不应当被认为是限制。
[0011]因此,本领域技术人员将理解,本公开所基于的概念可以容易地用作设计用于执行本专利技术的若干目的其他结构、方法和系统的基础。因此,重要的是,权利要求被认为包括这些等同结构,只要它们不偏离本专利技术的精神和范围。
附图说明
[0012]通过以下参照附图对本专利技术的示例性实施例的详细描述,将更好地理解本专利技术的示例性方面。
[0013]图1示出了本专利技术的实施例的示例系统。
[0014]图2示出了边界信息表。
[0015]图3示出了用于边界信息表的方法。
[0016]图4示出了在本专利技术的实施例中如何在索引表与值/键表的两个BI表之间进行选择。
[0017]图5示出了本专利技术的实施例的BI指令的示例性创建。
[0018]图6示出了本专利技术的实施例的示例性加载指令。
[0019]图7A示出了根据本专利技术的实施例的如何修改应用程序以包括防止越界存储器引用。
[0020]图7B示出了如何使用INTEL MPX修改应用程序以包括防止越界存储器引用。
[0021]图8示出本专利技术的实施例的示例性存储指令。
[0022]图9示出映射的替代实现。
[0023]图10A示出了本专利技术的实施例的方法。
[0024]图10B示出了本专利技术的实施例的方法。
[0025]图11示出了用于在其中结合本专利技术的示例性实施例的示例性硬件/信息处理系统。
[0026]图12示出了用于存储实现根据本专利技术的示例性实施例的方法的程序的机器可读指令的信号承载存储介质。
[0027]图13描绘了根据本专利技术的示例实施例的云计算节点。
[0028]图14描绘了根据本专利技术的示例实施例的云计算环境。
[0029]图15描绘了根据本专利技术的示例实施例的抽象模型层。
具体实施方式
[0030]现在将参照附图描述本专利技术,其中相同的附图标记始终表示相同的部件。要强调的是,根据惯例,附图的各种特征不一定按比例绘制。相反,为了清楚起见,各种特征的尺寸可以任意地扩大或缩小。下面提供的示例性实施例用于说明的目的,而不是限制权利要求。此外,请注意,任何步骤可以不同的顺序执行、或组合执行、或同时执行。另外,所示的任何结构和实施例都可以被修改或组合。
[0031]超出其边界的存储器引用可能导致严重的安全问题。重要的是检查每个存储器引用(加载或存储)是否在其存储器边界内。一种现有的解决方案是INTEL的存储器保护(MPX)系统。MPX引入了新的ISA(指令集架构)和硬件支持以用于准确的边界检查。在存储器中,针
对每个缓冲器的边界信息(BI)按指针值作为键被存储/检索。在核中,指针及其BI在寄存器中,并且通过由编译器添加的额外指令来维持映射。原始的计算和边界保护操作共享相同的硬件资源。存在试图移除或减少存储器安全漏洞的其他方法。然而,所有这些其它解决方案有一个主要问题,即需要添加多个指令,并且还实现昂贵。结果,指令数量可以增加四倍或更多倍,并且即使在边界检查被关闭时,执行时间也可以增加到两倍或更多倍。
[0032]本专利技术解决了上述的存储器安全漏洞的问题,并且没有如先前解决方案那样的增加指令数量的问题。一般地,本专利技术引入专用寄存器文件以保存针对有效(active)指针的边界信息,而有效指针是在通用寄存器中。本技术还维持从通用寄存器到边界寄存器的映射,以使得可以用原始指令执行边界检查相关的操作。将大大减少要为边界检查而添加的指令的数量。此外,添加特殊硬件以针对指令执行边界检查相关的操作。另外,采用边界信息寄存器,当边界检查操作被添加到大多数指令时,这些指令的等待时间将不会增加。
[0033]本专利技术提供了准确的保护,其中它保护每个缓冲器并精确到字节。本系统可应用于其中存在任意指针算术的C/C++应用程序以及可能具有存储器问题的其它程序,并且在一个应用程序中要保护的缓冲器的数量可以在数千到数百万的范围内。
[0034]图1示出了本专利技术的实施例的示例系统。系统100包括CPU(中央处理单元)核10和存储器20。CPU核10包括取指令和解码12、ALU(算术逻辑单元)14、通用寄存器文件16、边界寄存器文件18、边界处理单元20。通用寄存器文件与数据高速缓存22通信,本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种防止越界引用的方法,包括:将缓冲器的地址存储在通用寄存器中,并将针对所述缓冲器的边界信息(BI)存储在边界信息寄存器中;以及当所述通用寄存器的内容在加载或存储操作中被用作地址时,使用所述边界信息寄存器的内容来确定所述加载或存储操作是否越界。2.根据权利要求1所述的方法,还包括:将所述边界信息存储在边界信息寄存器文件中的所述边界信息寄存器中;根据所述边界信息,在存储器中生成索引表;根据所述边界信息,在所述存储器中生成值和键表;以及使用所述索引表以及所述值和键表来防止所述越界引用。3.根据权利要求1所述的方法,包括:当在阵列索引或指针算术中使用所述通用寄存器中的第一地址来计算第二地址时,针对所述第一地址的边界信息被用作针对所述第二地址的边界信息。4.根据权利要求2所述的方法,其中,访问所述索引表或所述值和键表中的哪一个是基于启发式,其中,所述索引表通过索引来访问,其中,所述索引表的每个条目包括缓冲器的起始地址和长度,其中,所述边界信息与所述通用寄存器相映射。5.根据权利要求2...

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

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

1