[发明专利]控制存储器访问中的守卫标签检查在审
申请号: | 201980007414.8 | 申请日: | 2019-01-25 |
公开(公告)号: | CN111556996A | 公开(公告)日: | 2020-08-18 |
发明(设计)人: | 格雷姆·巴恩斯 | 申请(专利权)人: | ARM有限公司 |
主分类号: | G06F12/1009 | 分类号: | G06F12/1009;G06F12/14 |
代理公司: | 北京东方亿思知识产权代理有限责任公司 11258 | 代理人: | 郭妍 |
地址: | 英国*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 控制 存储器 访问 中的 守卫 标签 检查 | ||
一种设备,该设备包括地址转换电路,该地址转换电路用以根据所存储的虚拟地址与物理地址之间的页表映射来执行虚拟地址到物理地址的转换。所存储的页表映射包括标签守卫控制信息。该设备包括存储器访问电路,该存储器访问电路响应于目标物理地址而执行标签守卫的存储器访问,该标签守卫的存储器访问包括守卫标签检查,该守卫标签检查将以下二者进行比较:与目标物理地址相关联的地址标签、与一个或更多个存储器位置构成的区块相关联地存储的守卫标签,所述区块包括由目标物理地址标识的寻址位置。存储器访问电路被布置为根据标签守卫控制信息,响应于目标物理地址而对寻址位置执行非标签守卫的存储器访问,而不执行守卫标签检查。
技术领域
本技术涉及数据处理领域。
背景技术
将由数据处理设备执行的软件通常可以利用高级程序语言来编写,然后根据其上将执行该软件的设备所支持的指令集架构编译成代码。例如,软件最初可以利用更高级的语言(例如,Java、C、或C++)来编写,然后编译成本地支持的指令集架构(例如,x86或)。
因为一些更高级的程序语言(例如,Java)包括用于检查与存储器访问相关的某些错误的运行时错误检测检查,所以这些程序语言被认为是存储器安全的语言。相比之下,存储器不安全的语言(例如,C和C++)并未包括这样的运行时错误检查。使用存储器不安全的语言的持续流行意味着在根据给定指令集架构的编译代码中,可能存在大量与存储器相关的错误,而可能容易受到攻击者或其他恶意方的攻击。这样的错误可能包括:
·边界违反,其中代码所供应的数组索引超出数组的合法边界;
·释放后使用错误,其中在存储器位置已解分配或已释放之后访问存储器位置;
·返回后使用,其中在从函数返回之后,对函数内使用的变量(例如,堆栈上的值)相关联的地址进行存储器访问;
·使用超出范围错误,其中变量在声明范围之外被访问;以及
·初始化前使用错误,其中在初始化变量之前访问与该变量相关联的存储器地址。
这些只是可能导致无法预测的行为并且可能为攻击者提供利用的途径的与存储器相关的错误的一些示例,因此期望在给定处理设备所支持的指令集架构内提供架构支持,以协助对某些类别的存储器错误的运行时检测。
发明内容
至少一些示例提供一种设备,包括:
地址转换电路,该地址转换电路用以根据所存储的虚拟地址与物理地址之间的页表映射来执行虚拟地址到物理地址的转换,其中,所存储的页表映射包括标签守卫控制信息;以及
存储器访问电路,该存储器访问电路用以响应于目标物理地址而执行标签守卫的存储器访问,该标签守卫的存储器访问包括守卫标签检查,该守卫标签检查将以下二者进行比较:与目标物理地址相关联的地址标签、与一个或更多个存储器位置构成的区块相关联地存储的守卫标签,该区块包括由目标物理地址标识的寻址位置,
其中,存储器访问电路被布置为根据标签守卫控制信息来响应于目标物理地址而针对寻址位置执行非标签守卫的存储器访问,而不执行守卫标签检查。
至少一些示例提供一种方法,包括:
根据所存储的虚拟地址与物理地址之间的页表映射来执行虚拟地址到物理地址的转换,其中,所存储的页表映射包括标签守卫控制信息;并且
根据标签守卫控制信息,来执行以下各项中的一者:
响应于目标物理地址而执行标签守卫的存储器访问,该标签守卫的存储器访问包括守卫标签检查,该守卫标签检查将以下二者进行比较:与目标物理地址相关联的地址标签、与一个或更多个存储器位置构成的区块相关联地存储的守卫标签,该区块包括由目标物理地址标识的寻址位置;以及
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于ARM有限公司,未经ARM有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201980007414.8/2.html,转载请声明来源钻瓜专利网。