内存安全:Arm 内存标记扩展如何应对业内安全挑战

发布时间:2023-05-09  

计算的未来将由我们日常生活各个方面的日益数字化所驱动,这也将导致软件和系统复杂性的不断增加。据相关数据报告称,2022 年报告的漏洞数量超过 23,000 个 (其中超过 17,000 个被归类为严重漏洞),连续六年创下新高。

利用构建于最新 Armv9 架构的 Arm CPU,我们可提供内存标记扩展 (Memory Tagging Extension, MTE) 等安全功能,以降低上述复杂性,并为软件开发者、芯片供应商和设备制造商提供影响深远的信息安全、功能安全、成本和上市时间优势。Armv9 安全性改进可将某些类别的漏洞减少高达 95%,例如在所有严重安全漏洞中占比最大的内存安全违规。

Arm 的 MTE 作为 Armv8.5 指令集的组成部分于 2019 年八月首次推出,而后 Arm 于 2021 年五月宣布将其内置于首款兼容 Armv9 的 CPU 中。早在 Armv9 架构推出之前,谷歌就宣布在安卓中采用 Arm 的 MTE,并致力于在整个安卓堆栈中支持 MTE。2022 年年底,荣耀在其开发者大会上宣布,将通过荣耀天网并在未来的 DiagnosisKit 工具中向开发者提供支持 MTE 的 MagicOS 6.x 和 MagicOS 7 设备。未来,这可能搭载在荣耀的移动设备中。

在本文中,我们将回答有关 MTE 的关键问题,包括什么是 MTE,它如何应对诸如内存安全之类的安全挑战,它的优势是什么,以及我们的合作伙伴对该功能做了哪些努力。

MTE 的作用是什么?它如何在 Arm 生态系统中带来更出色的软件?

利用 MTE,开发者可以快速找到内存相关漏洞,加快应用调试和开发流程。此外,该功能支持动态更改配置,这意味着在现场可通过漏洞报告和遥测系统,向开发者回传有关访问故障位置的准确信息。

值得注意的是,许多开发者首次使用 MTE 时可能会发现更多漏洞,远超过他们所能够修复的数量。但是,开发者可决定在产品发布之前先修复最严重的漏洞,然后在更新过程中解决不太严重的漏洞。此外,随着时间推移,开发者的代码将变得越来越清晰,因为在随后的全局扫描中捕捉出的漏洞数量会减少,使这一流程更加省时。崩溃、投诉和演习的频率也会随之降低。

借助 MTE,开发者可在部署前后进行检测并避免内存安全漏洞,从而有利于更广泛的移动生态系统。在部署之前找到并修复漏洞对于确保安全至关重要,因为这可以减少已部署代码的攻击面。在部署之后检测漏洞可以在漏洞被大范围利用之前对漏洞进行反应性修复,而 MTE 可协助开发者进行此类检测。这样就能够有力地抵御试图破坏安全代码的攻击。

解决内存安全违规为什么如此重要?

数十年以来,内存安全一直都是安全漏洞的主要来源。据操作系统供应商 (OSV) 报告,其产品中的大多数安全问题都源于内存安全违规导致的漏洞。谷歌的 Chromium 项目团队表示,内存安全问题在所有严重安全漏洞中占到了 70%。

内存安全违规可能会对用户产生巨大影响。恶意应用可通过不安全的内存来访问敏感数据,比如:用户凭证和密码,这样不法分子就能够访问机密数据。除了安全方面,由未解决的内存安全漏洞导致的中断会降低用户满意度,不仅增加软件开发成本,并且将来要耗费更多时间来解决此类问题。

内存管理问题已经存在了几十年,今天仍非常普遍。相关安全机构近期发布了一项指南[6],旨在帮助软件开发者和运营商防止和减少软件内存安全问题。该机构的“软件内存安全”网络安全信息表重点介绍了恶意网络行为者如何利用内存管理不善的问题来访问敏感数据,发布未获授权的代码执行,以及所造成的其他负面影响。

什么是内存安全违规?

内存安全违规有两种主要类型:空间安全违规和时间安全违规。MTE 可提供在生产代码中检测这两种违规的机制,且无需使用任何仪器。

当在某个对象的真实边界之外访问该对象时,就违反了空间安全。例如:将数据写入缓冲区或其他对象之外时。这可能会被用来改变函数指针、保存寄存器或类似对象的目标地址。

当在某个对象已过期后使用了该对象的参考时,就违反了时间安全,通常是在该对象的内存已释放后——利用现有的“内存释放后使用”漏洞。凭借对分配器的了解,攻击者可以放置新的恶意对象来替代预期版本。

MTE 的工作原理是什么?

Arm 实现的 MTE 为两阶段系统,即“锁”和“密钥”。如果密钥匹配,则允许访问锁内存;否则,访问可能会被记录下来或出错。这样就可以更轻松地检测到难以捕获的内存安全错误,也有助于进行常规调试。

在锁和密钥两阶段系统中,存在两种类型的标记:

地址标记,用作密钥。这将在进程中每个指针的最高位增加四位。地址标记仅适用于 64 位应用,因为它使用了“高字节忽略”功能,这是 Arm 64 位的一个功能。

内存标记,用作锁。内存标记也由四位组成,与应用内存空间中每个对齐的 16 字节区域相连接。Arm 将这些 16 字节区域称为标记颗粒。这四位并不用于应用数据,而且是分开存储。

移动设备为什么需要 MTE?

未来市场上的移动设备将具有更先进的计算能力,因此攻击面也更大。与此同时,通过这些设备获得的个人内容和数据的数量和价值也在不断增加。因此,需要实现一种安全性功能,为终端用户提供安全生态系统和安全的数字体验。

MTE 非常灵活,可在产品开发和部署的各个阶段部署在不同配置中。例如:MTE 可根据进程配置为异步和同步模式。异步模式的运行开销非常低,并且可用于确定存在内存问题的代码区域,而同步模式会在遇到导致安全违规的指令时出错,并在检测到漏洞时产生大量的调试信息。这种灵活性对大规模部署尤其有用,因为 MTE 具有高度的可扩展性,能够在数百万甚至数十亿台设备上运行,为系统和应用软件提供可靠的错误检测功能。

Arm 在 MTE 方面的合作伙伴是谁?

2019 年八月,谷歌宣布在安卓系统中采用 Arm 的 MTE,承诺在安卓堆栈中支持 MTE,并表示通过使用该技术,“哪怕有内存漏洞可利用,也将变得非常困难。”

Arm 与谷歌在 MTE 技术方面的合作旨在检测现有代码库和写入的新代码中存在的内存安全漏洞。以下是谷歌的 Kostya Serebryany 和 Sudhi Herle 的评论:

我们相信,内存标记将能够检测到环境中最常见的几种内存安全漏洞,同时帮助供应商识别并修复这些漏洞,并阻止恶意行为者利用这些漏洞。

安卓 12 添加了一个 MTE 初始实现,可检测到“内存释放后使用”漏洞和“缓冲区溢出”漏洞,而这些都是谷歌代码库中最常见的内存安全漏洞来源。在安卓 13 中,谷歌添加了一个开发者模式启动开关,以便在具有硬件支持但未永久开启 MTE 功能的设备上启用 MTE。对于未来的安卓版本,Arm 和谷歌将重点关注降低 MTE 使用的内存。

芯片供应商和设备制造商如何看待?

MTE 是所有 Armv9 CPU 的固有功能。为了解决软件生态系统中的内存安全漏洞,很多 Arm 合作伙伴已经在其芯片组中构建并启用该功能。其中一家率先使用 MTE 的设备制造商就是荣耀,该公司宣布,将通过荣耀天网并在未来的 DiagnosisKit 工具中向开发者提供支持 MTE 的 MagicOS 6.x 和 MagicOS 7 设备。这有力表明,在即将进入消费市场、基于 Armv9 技术的移动设备上,都可开启 MTE。

这项成果已经开始产生积极影响。快手是一家领先的内容社区及社交平台。快手 App 是中国目前最广泛使用的短视频和直播手机应用之一,根据 2022 年第三季度财报数据,快手应用的平均日活跃用户为 3.63 亿,平均月活跃用户为 6.26 亿,快手的海外产品 (Kwai 和 SnackVideo) 拥有超 1.6 亿用户。该公司目前正与荣耀天网合作,在大型项目中使用 Arm MTE提高内存安全,90% 的内存安全问题可以在 App 正式发布之前就在线下被检测出来,取得了以下收益:

- 相较于 ASan,内存安全问题检测速度提高了三倍,内存消耗降低一半

- 发现了十几个潜在问题,如果没有 MTE,这些隐蔽问题将难以被发现

以下是快手对 MTE 的评价:

“快手的使命是成为全球最痴迷于为客户创造价值的公司,为了给用户提供极致体验,快手非常重视保护用户隐私和信息安全,快手研发团队长期以来为了保证内存安全付出了巨大努力。但由于传统内存检测工具的性能开销较高,且需要重新编译所有源代码,所以几乎无法在快手移动端大型 C++ 代码库的日常开发实践中使用这些工具,MTE 解决了这些问题,在保证内存安全方面发挥着重要作。”

Arm 为什么将 MTE 内置于其产品和解决方案中?

MTE 是 Armv9 架构中一系列新的及现有安全功能的组成部分,旨在提高所有细分消费品市场的安全性。这意味着,我们的合作伙伴可通过自己在安全措施方面的软件投资来获取更高价值,从而形成一个标准化程度更高且更具扩展性的解决方案,以应对各种安全挑战。

Arm 近期的 MTE 开发成果是什么?

随着 2022 年六月发布的第二代 Armv9 CPU,我们推出了全新的非对称 MTE,在安全漏洞检测速度、精度和针对性之间实现了更高的灵活性。这可提高应用的稳定性,有利于软件开发,同时有助于在整个生态系统中更广泛地推广 MTE。采用 Arm Cortex-X3、Cortex-A715 和 Cortex-A510 最新版本 (A510-r1) CPU 的芯片组都将内置非对称 MTE。

Arm 架构是安全的数字体验的基石

Arm 正在重新定义计算的未来,而 MTE 是提供安全移动体验的一个关键功能。Arm 正在与移动生态系统中的所有合作伙伴(包括芯片供应商、设备制造商、操作系统供应商和开发者)携手推动实现 MTE 功能,以减少开发时间和成本,同时提供安全可靠的用户体验。对于我们的生态系统来说,最重要的是 MTE 可以轻松地进行大规模部署。通过 Armv9 架构——这是全球数十亿移动设备的计算基础,MTE 现已广泛普及,Arm 架构正在成为全球数字化安全的基石。

文章来源于:21IC    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    引来一大波网友吐槽: “8G内存怎么拿得出手!不够看了” “only Apple can do(只有苹果能做到)” “Mac OS+8GB>16GB” “重点是我的破电脑内存买到64G我也......
    被水冲去或者漱掉,只能由机械方法清除。” 如何优雅的清理牙齿卫生?用力?轻抚?究竟怎么刷才能真正呵护它们? #强行科普#可恶的牙菌斑恰恰就容易长在牙齿的中下三分之一,甚至......
    我们写的驱动必须能使硬件“跑”起来,即与硬件紧密相连。 就拿最简单的LED驱动来说,我们的驱动程序是在虚拟的内存上面跑的,但是最终,LED的点亮还是必须靠GPIO管脚的高低电平来控制。那么,我们的虚拟的内存怎么......
    加湿器的工作原理是什么_加湿器的水垢怎么清除;  加湿器的工作原理是什么   1、超声波加湿器   目前市场上的家用加湿器一般采用超声波方式将水雾化,通过风机将雾化的水汽吹出壳体,从而......
    相机和对Google DayDream虚拟现实的支持,但让硬件控注意的是,华硕ZenFone AR成为全球首台拥有8GB运行内存的手机。 当下许多用户还用着4GB运存的电脑的时候,智能手机怎么......
    物理内存过高怎么办;以下内容中,小编将对物理内存的相关内容进行着重介绍和阐述,希望本文能帮您增进对物理内存的了解,和小编一起来看看吧。 一、物理内存过高怎么办 物理内存过高怎么办?这里我们主要讨论电脑物理内存过高怎么......
    我们重定位完代码后需要进行清除sdram上.bss段的数据,因为我们知道bss是未初始化和初始值为0的全局变量。 2.怎么清bss 当然只需要往bss段写入全0就ok了,我们编写链接脚本如下:  SECTIONS......
    初始化和初始值为0的全局变量。 2.怎么清bss 当然只需要往bss段写入全0就ok了,我们编写链接脚本如下: SECTIONS  {      . = 0x30000000......
    游戏内存怎么选?科赋BOLT X电竞内存超频测试;前言 电脑内存只看容量?容量当然重要,但只是选择内存的第一步。虽然普通的办公电脑对于内存的主频和时序的要求并不高,但是......
    STM32F1_ 外部SRAM作为运行内存;前言 今天总结“STM32F103外部SRAM作为运行内存”。对于运行内存应该都知道它的意思,主要是程序运行时所使用的RAM,比如我们定义的全局变量、局部变量这些在程序运行......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>