14

修志龙_ZenonXiu · 2022年07月30日

Arm A-Profile构架发展: Armv8.5-A

本文翻译自 https://community.arm.com/dev...

原作者:Matthew Gretton-Dann 2018年9月17日

译者: Zenon Xiu

Arm和arm构架授权客户,生态伙伴一起,将arm构架持续演进,开发新的构架功能以满足新的和现存的市场需求。

这篇博客讨论在2018年增加的A-profile构架关键功能,也就是Armv8.5-A.

完整的指令集和系统寄存器信息可以在我们的技术网站上找到。完整的包含Armv8.5-A和更早功能的arm构架参考手册(ArmARM)会在2019年第一季度末公布。(译者:这篇翻译发布时,ArmARM已经包含了Armv8.5-A扩展,https://developer.arm.com/pro...

其他更早的A-Profile构架的详细信息可以在这里找到Armv8.1-A, Armv8.2-A, Armv8.3-A, and Armv8.4-A.

在讨论这些功能时,我们也在做相关开源软件项目,以便在新的硬件可用时,这些软件对这些必要的构架支持已经准备好了.

安全:漏洞检测
在过去的12个月里,Spectre和Meltdown的发现占据了安全相关的主要议题。 但是,它们不是我们当前面临的仅有的安全挑战,arm一直和合作伙伴一起开发硬件工具以帮助软件抵御攻击。

许多常见的软件漏洞是由缓冲区溢出(buffer overrun)和 释放后使用(use-after-free)编程错误导致的。buffer overrun指一个程序试图访问超过其本来边界的内存。use-after-free发生在一个程序访问和重用它已经释放的内存时。通常,这些错误是情景相关的,需要特定的环境才会发生。非常有名的发生在1988年的Morris的蠕虫是有记载的第一个使用buffer overrun来制造病毒的。

Memory Tagging(内存标签)
Armv8.5-A引进一个叫Memory Tagging 的新功能。 当使用Memory Tagging时,每个内存分配(memory allocation)都会分配一个标签(tag). 所有内存必须通过有正确标签的指针来访问。 错误的标签会被注意到,操作系统可以选择马上汇报这个问题给用户,或是通知进程发生过这个问题,以便后面去研究。

比如,在下面的图中,对0x8000的内存访问没有问题,因为用来访问的指针有和被访问的内存有相同的标签(用颜色来表示)。但是,对0x9000的访问会失败,因为指针和被访问的内存用不同标签。

1.png

内存标签技术可以用在很多场合。在开发阶段,它可以在测试环境中用来检测内存错误问题。在产品量产阶段,它可以在线检测问题,并将反馈提供给开发者。一旦受到反馈,可以分析这个漏洞,并在它被攻击者发现之前修复它。

安全:限制利用(Exploits)
一旦攻击者发现可以利用的漏洞,他们下一步的目标就是能执行代码来获取机器的控制权。攻击者可以使用ROP和JOP(Return- and Jump-Oriented Programming)的工具方式,这些技术通过发现有漏洞程序中一个个小段代码片段(叫做gadgets),并将它们连接起来形成攻击者想要的代码运行。这种方式可以被利用,因为构架没有限制跳转指令可以跳转的地址,也没有限制代码可以从哪里跳转过来。这使攻击者可以使用这些代码片段,做他们想做的事情。

在Armv8.3-A中,我们引入了指针鉴权(Pointer Authentication)功能,我们可以用这个功能保证函数返回到程序期望的地址。

在Armv8.5-A中,我们引入了Branch Target Indicators (BTI). 支持BTI的系统可以强制非直接跳转只能跳到一小部分允许的指令上(译者:BTI指令,和一些PAC Signing指令). 这可以减少攻击者执行任意代码的能力。

指针鉴权和BTI功能一起使用,可以显著减少攻击者能用的gadget的数量。剩下可用的gadget的代码大小就比较大,这使攻击者想去使用这些gadget更加困难,即使他们发现了一个可以获得机器控制的漏洞。

其他功能
Armv8.5-A也包含一些小功能:

Cache clean到Point of Deep Persistence – 用来支持新兴的Persistent Memory标准
细化的虚拟化trap控制 -用来提供虚拟机的性能
支持debug over power down -用来使机器在下电复位过程中可以做外部调试
随机数指令 – 提供符合各个国家和国际标准的确定性随机数和真随机数(Deterministic and True Random Number)
总结
这篇博客提供了简要的Armv8.5-A构架功能介绍。更多的信息可以在我们的开发者网站找到。下一步是和我们包括Linaro的生态伙伴一起,保证使能开源软件项目,以便当硬件可用时软件可以使用这些功能。更多的细节我们会在2018年9月17-21日的Linaro Connect in Vancouver 大会做演讲。(译者:该slide和video可以在https://connect.linaro.org/re... 浏览和下载)

推荐阅读
关注数
8629
内容数
51
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息