计算机装置及其访存方法、处理装置和存储介质制造方法及图纸

技术编号:37113359 阅读:15 留言:0更新日期:2023-04-01 05:10
本公开的实施例提供了一种计算机装置及其访存方法、处理装置和存储介质。该计算机装置包括内存,该访存方法包括:接收访存请求,其中,访存请求用于将对象数据存储到访存请求涉及的访存地址指向的内存中的目标地址,目标地址与第一内存标记具有映射关系,访存地址包括第二内存标记;使用访存地址获取第一内存标记;比较获取的第一内存标记和从访存地址获取的第二内存标记;响应于比较的结果指示第一内存标记和第二内存标记匹配,将对象数据存储到目标地址,否则触发异常。该访存方法可以改善系统的内存安全性。系统的内存安全性。系统的内存安全性。

【技术实现步骤摘要】
计算机装置及其访存方法、处理装置和存储介质


[0001]本公开的实施例涉及计算机装置及其访存方法、处理装置和存储介质。

技术介绍

[0002]随着计算机科学技术高速发展,人们不仅期望计算机系统能精准、快速的执行程序运算,更对计算机系统的安全性能提出了一定的要求。近些年C/C++语言已被广泛采用在现代系统编程中,但是目前主流的编译器以及运行时环境(Runtime)对C/C++程序指针不会做静态或者动态的安全检查,使得使用C/C++编程的程序很容易受到攻击。
[0003]目前解决内存安全问题的方法一方面是通过修改硬件、编译器以及运行时环境(Runtime)这三个手段进行保护,另一方面是对于某些类型的攻击,硬件架构上无法进行直接处理,这种情况下最好的解决方法是使用一些通用的安全手段,比如通过虚拟化分区进行内存保护。
[0004]内存漏洞攻击可利用攻击者构造的违规行为构成攻击的第一阶段,然后通过漏洞将程序导向攻击者事先准备好的恶意程序进行执行,以获得系统的控制权或者泄漏系统特权信息。根据非法指针访问的类型,内存细粒度安全违例主要分为两大类:空间安全违例(spatial safety violation)和时间安全违例(temporal safety violation)。
[0005]空间安全违例:当指针访问对象是该程序范围外的内容,内存空间安全就会受到侵犯。最常见的例子就是利用堆栈上的缓冲区溢出,使用攻击者设计好的值覆盖函数的返回地址,引导程序的执行流方向;或者直接利用溢出改写重要变量或重要信息。<br/>[0006]时间安全违例:当对对象的引用在规定时间范围外使用,内存时间安全就会受到侵犯,通常是在实例化对象的内存被重新分配之后,未进行严格的内存初始化。例如,由于对指向无效(通常是未分配或释放的)内存的指针进行解引用而导致的时间安全违例。
[0007]为了缓解内存安全违例带来的威胁,已经有一些相应的防御技术被研究出来,较为典型的就是数据执行保护(DEP)机制,其基本原理就是将数据所在内存页标识为不可执行,当程序溢出成功转入壳代码(shellcode)时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。通过启用DEP,可以有效阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码。
[0008]另一种有效的防御机制是Stack Canary机制,其原理为在函数执行时向栈底插入cookie(缓存)信息,当函数返回时会验证cookie信息是否合法,若不合法就会停止程序运行。
[0009]通过虚拟内存系统实现的ASLR机制、DEP(NX/XD)或者Stack Canary机制都使得攻击者不再能够随意的注入和执行任意的攻击代码,因此这些预防机制在一定程度上保护了程序的安全运行。
[0010]但是,面对更加复杂的攻击代码以及手段,这些保护机制就会面临着失效的结果。例如,在面向返回的编程(ROP)攻击中,通过破坏代码指针(如返回地址)和将多个工具(gadget)的执行链接在一起来实现任意代码执行。这些原始二进制代码中的序列被组合起
来实现攻击者设想的恶意攻击代码。

技术实现思路

[0011]本公开的至少一实施例提供了一种用于计算机装置的访存方法,该计算机装置包括内存,访存方法包括:接收访存请求,其中,访存请求用于将对象数据存储到访存请求涉及的访存地址指向的内存中的目标地址,目标地址与第一内存标记具有映射关系,访存地址包括第二内存标记;使用访存地址获取第一内存标记;比较获取的第一内存标记和从访存地址获取的第二内存标记;响应于比较的结果指示第一内存标记和第二内存标记匹配,将对象数据存储到目标地址,否则触发异常。
[0012]本公开的至少一实施例还提供了一种计算机装置,该计算机装置包括处理器和内存,所述处理器包括访存单元。该访存单元配置为:接收访存请求,其中,访存请求用于将对象数据存储到访存请求涉及的访存地址指向的内存中的目标地址,目标地址与第一内存标记具有映射关系,访存地址包括第二内存标记;使用访存地址获取第一内存标记;比较获取的第一内存标记和从访存地址获取的第二内存标记;响应于比较的结果指示第一内存标记和第二内存标记匹配,将对象数据存储到目标地址,否则触发异常。
[0013]本公开的至少一实施例还提供了一种处理装置,该处理装置包括处理单元和存储器,该存储器上存储有一个或多个计算机程序模块;该一个或多个计算机程序模块被配置为由处理单元执行时实现如上述实施例的访存方法。
[0014]本公开的至少一实施例还提供了一种非瞬时可读存储介质,其中,该非瞬时可读存储介质上存储有计算机指令,其中,所述计算机指令被处理器执行时实现如上述实施例的访存方法。
附图说明
[0015]为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
[0016]图1示出了计算机系统中内存空间包括安全内存空间和非安全内存空间的示意图;
[0017]图2示出本公开的实施例中所使用的指针的示意图;
[0018]图3示出使用本公开实施例的内存标记对内存空间的访问进行保护的流程图;
[0019]图4示出根据本公开至少一实施例的包括内存标记的内存地址的示例;
[0020]图5示出6条示例性的标记内存指令的二进制编码格式;
[0021]图6A示出根据本公开至少一实施例的处理器的框架示意图;
[0022]图6B示出根据本公开至少一实施例的标记产生单元的示意图;
[0023]图6C示出根据本公开至少一实施例的硬件乱数生成器的示意图;
[0024]图7示出根据本公开至少一实施例的计算机装置的示意图;
[0025]图8示出根据本公开至少一实施例的缓存的示意图;
[0026]图9示出根据本公开至少一实施例的一种示例性缓存的结构;
[0027]图10示出根据本公开至少一实施例的另一示例性的缓存的示意图。
[0028]图11示出根据本公开至少一实施例的涉及内存标记的访存指令的流程图;
[0029]图12为本公开至少一个实施例提供的一种电子装置的示意框图。
具体实施方式
[0030]为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
[0031]除非另作定义,此处使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“包括”或者“包含”等类似的词语意指出现该词本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种用于计算机装置的访存方法,所述计算机装置包括内存,所述访存方法包括:接收访存请求,其中,所述访存请求用于将对象数据存储到所述访存请求涉及的访存地址指向的所述内存中的目标地址,所述目标地址与第一内存标记具有映射关系,所述访存地址包括第二内存标记;使用所述访存地址获取所述第一内存标记;比较获取的所述第一内存标记和从所述访存地址获取的所述第二内存标记;响应于所述比较的结果指示所述第一内存标记和所述第二内存标记匹配,将所述对象数据存储到所述目标地址,否则触发异常。2.根据权利要求1所述的访存方法,其中,所述访存地址由高位部分和低位部分组成,所述第二内存标记保存在所述高位部分,所述访存地址的有效地址保存在所述低位部分。3.根据权利要求1或2所述的访存方法,还包括:在接收所述访存请求之后,从所述访存地址中提取所述第二内存标记。4.根据权利要求1所述的访存方法,还包括:在接收所述访存请求之后,对所述访存地址进行地址翻译以得到访存物理地址;其中,使用所述访存物理地址获取所述第一内存标记。5.根据权利要求1或4所述的访存方法,其中,所述计算机装置还包括标记存储,所述标记存储包括多个内存标记,所述多个内存标记与所述内存中的多个标记存储单元项的内存地址具有所述映射关系,所述多个内存标记包括所述第一内存标记,所述使用所述访存地址获取所述第一内存标记,包括:根据所述访存地址从所述标记存储获取所述第一内存标记。6.根据权利要求4所述的访存方法,其中,所述计算机装置包括缓存,所述缓存配置为存储缓存数据和与所述缓存数据的内存地址对应的内存标记项;所述根据所述访存物理地址获取所述第一内存标记,包括:使用所述访存物理地址访问所述缓存,从所述缓存获取所述第一内存标记。7.根据权利要求4所述的访存方法,其中,所述根据所述访存物理地址获取所述第一内存标记,还包括:在使用所述访存物理地址访问所述缓存且产生缓存缺失的情形,使用所述访存物理地址从所述内存读取所述对象数据并获取所述第一内存标记,将所述对象数据和所述第一内存标记填充到所述缓存中。8.根据权利要求1所述的访存方法,其中,所述访存请求对应于第一指令,所述第一指令指示将所述对象数据存储到所述访存地址指向的所述内存中的目标地址,所述访存方法还包括:对所述第一指令进行译码以得到与所述第一指令对应的多个微操作。9.根据权利要求8所述的访存方法,其中,所述多个微操作包括:用于从所述访存地址中获取第二内存标记的一个或多个第一微操作;使用所述访存地址获取所述第一内存标记的一个或多个第二微操作;比较获取的所述第一内存标记和从所述访存地址获取的所述第二内存标记的一个或多个第三微操作;响应于所述比较的结果指示所述第一内存标记和所述第二内存标记匹配,将所述对象
数据存储到所述目标地址的一个或多个第四微操作;响应于所述比较的结果指示所述第一内存标记和所述第二内存标记不匹配,触发异常的一个或多个第五微操作。10.根据权利要求8所述的访存方法,其中,在对所述第一指令译码之后,将所述第一指令填入重排序缓冲器,将所述多个微操作发射到访存单元以用于执行所述多个微操作。11.根据权利要求10所述的访存方法,还包括:响应于所述比较的结果指示所述第一内存标记和所述第二内存标记匹配...

【专利技术属性】
技术研发人员:刘保光曹鎏马乐乐刘丹张珣张文娟杨贤帅刘斌秦心宇刘逸凡王凯旋韩军
申请(专利权)人:北京奕斯伟计算技术股份有限公司
类型:发明
国别省市:

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

1