见证双虹计算的未来将由我们日常生活各个方面的日益数字化所驱动,这也将导致软件和系统复杂性的不断增加。据相关数据报告称,2022年报告的漏洞数量超过23,000个(其中超过17,000个被归类为严重漏洞),连续六年创下新高。
利用构建于最新Armv9架构的ArmCPU,我们可提供内存标记扩展(MemoryTaggingExtension,MTE)等安全功能,以降低上述复杂性,并为软件开发者、芯片供应商和设备制造商提供影响深远的信息安全、功能安全、成本和上市时间优势。Armv9安全性改进可将某些类别的漏洞减少高达95%,例如在所有严重安全漏洞中占比最大的内存安全违规。
在本文中,我们将回答有关MTE的关键问题,包括什么是MTE,它如何应对诸如内存安全之类的安全挑战,它的优势是什么,以及我们的合作伙伴对该功能做了哪些努力。
利用MTE,开发者可以快速找到内存相关漏洞,加快应用调试和开发流程。此外,该功能支持动态更改配置,这意味着在现场可通过漏洞报告和遥测系统,向开发者回传有关访问故障位置的准确信息。
值得注意的是,许多开发者首次使用MTE时可能会发现更多漏洞,远超过他们所能够修复的数量。但是,开发者可决定在产品发布之前先修复最严重的漏洞,然后在更新过程中解决不太严重的漏洞。此外,随着时间推移,开发者的代码将变得越来越清晰,因为在随后的全局扫描中捕捉出的漏洞数量会减少,使这一流程更加省时。崩溃、投诉和演习的频率也会随之降低。
借助MTE,开发者可在部署前后进行检测并避免内存安全漏洞,从而有利于更广泛的移动生态系统。在部署之前找到并修复漏洞对于确保安全至关重要,因为这可以减少已部署代码的攻击面。在部署之后检测漏洞可以在漏洞被大范围利用之前对漏洞进行反应性修复,而MTE可协助开发者进行此类检测。这样就能够有力地抵御试图破坏安全代码的攻击。
数十年以来,内存安全一直都是安全漏洞的主要来源。据操作系统供应商(OSV)报告,其产品中的大多数安全问题都源于内存安全违规导致的漏洞。谷歌的Chromium项目团队表示,内存安全问题在所有严重安全漏洞中占到了70%。
内存安全违规可能会对用户产生巨大影响。恶意应用可通过不安全的内存来访问敏感数据,比如:用户凭证和密码,这样不法分子就能够访问机密数据。除了安全方面,由未解决的内存安全漏洞导致的中断会降低用户满意度,不仅增加软件开发成本,并且将来要耗费更多时间来解决此类问题。
内存管理问题已经存在了几十年,今天仍非常普遍。相关安全机构近期发布了一项指南[6],旨在帮助软件开发者和运营商防止和减少软件内存安全问题。该机构的“软件内存安全”网络安全信息表重点介绍了恶意网络行为者如何利用内存管理不善的问题来访问敏感数据,发布未获授权的代码执行,以及所造成的其他负面影响。
内存安全违规有两种主要类型:空间安全违规和时间安全违规。MTE可提供在生产代码中检测这两种违规的机制,且无需使用任何仪器。
当在某个对象的真实边界之外访问该对象时,就违反了空间安全。例如:将数据写入缓冲区或其他对象之外时。这可能会被用来改变函数指针、保存寄存器或类似对象的目标地址。
当在某个对象已过期后使用了该对象的参考时,就违反了时间安全,通常是在该对象的内存已释放后——利用现有的“内存释放后使用”漏洞。凭借对分配器的了解,攻击者可以放置新的恶意对象来替代预期版本。
Arm实现的MTE为两阶段系统,即“锁”和“密钥”。如果密钥匹配,则允许访问锁内存;否则,访问可能会被记录下来或出错。这样就可以更轻松地检测到难以捕获的内存安全错误,也有助于进行常规调试。
地址标记,用作密钥。这将在进程中每个指针的最高位增加四位。地址标记仅适用于64位应用,因为它使用了“高字节忽略”功能,这是Arm64位的一个功能。
内存标记,用作锁。内存标记也由四位组成,与应用内存空间中每个对齐的16字节区域相连接。Arm将这些16字节区域称为标记颗粒。这四位并不用于应用数据,而且是分开存储。
未来市场上的移动设备将具有更先进的计算能力,因此攻击面也更大。与此同时,通过这些设备获得的个人内容和数据的数量和价值也在不断增加。因此,需要实现一种安全性功能,为终端用户提供安全生态系统和安全的数字体验。
MTE非常灵活,可在产品开发和部署的各个阶段部署在不同配置中。例如:MTE可根据进程配置为异步和同步模式。异步模式的运行开销非常低,并且可用于确定存在内存问题的代码区域,而同步模式会在遇到导致安全违规的指令时出错,并在检测到漏洞时产生大量的调试信息。这种灵活性对大规模部署尤其有用,因为MTE具有高度的可扩展性,能够在数百万甚至数十亿台设备上运行,为系统和应用软件提供可靠的错误检测功能。
2019年八月,谷歌宣布在安卓系统中采用Arm的MTE,承诺在安卓堆栈中支持MTE,并表示通过使用该技术,“哪怕有内存漏洞可利用,也将变得非常困难。”
我们相信,内存标记将能够检测到环境中最常见的几种内存安全漏洞,同时帮助供应商识别并修复这些漏洞,并阻止恶意行为者利用这些漏洞。
安卓12添加了一个MTE初始实现,可检测到“内存释放后使用”漏洞和“缓冲区溢出”漏洞,而这些都是谷歌代码库中最常见的内存安全漏洞来源。在安卓13中,谷歌添加了一个开发者模式启动开关,以便在具有硬件支持但未永久开启MTE功能的设备上启用MTE。对于未来的安卓版本,Arm和谷歌将重点关注降低MTE使用的内存。
这项成果已经开始产生积极影响。快手是一家领先的内容社区及社交平台。快手App是中国目前最广泛使用的短视频和直播手机应用之一,根据2022年第三季度财报数据,快手应用的平均日活跃用户为3.63亿,平均月活跃用户为6.26亿,快手的海外产品(Kwai和SnackVideo)拥有超1.6亿用户。该公司目前正与荣耀天网合作,在大型项目中使用ArmMTE提高内存安全,90%的内存安全问题可以在App正式发布之前就在线下被检测出来,取得了以下收益:
“快手的使命是成为全球最痴迷于为客户创造价值的公司,为了给用户提供极致体验,快手非常重视保护用户隐私和信息安全,快手研发团队长期以来为了保证内存安全付出了巨大努力。但由于传统内存检测工具的性能开销较高,且需要重新编译所有源代码,所以几乎无法在快手移动端大型C++代码库的日常开发实践中使用这些工具,MTE解决了这些问题,在保证内存安全方面发挥着重要作。”
MTE是Armv9架构中一系列新的及现有安全功能的组成部分,旨在提高所有细分消费品市场的安全性。这意味着,我们的合作伙伴可通过自己在安全措施方面的软件投资来获取更高价值,从而形成一个标准化程度更高且更具扩展性的解决方案,以应对各种安全挑战。
Arm正在重新定义计算的未来,而MTE是提供安全移动体验的一个关键功能。Arm正在与移动生态系统中的所有合作伙伴(包括芯片供应商、设备制造商、操作系统供应商和开发者)携手推动实现MTE功能,以减少开发时间和成本,同时提供安全可靠的用户体验。对于我们的生态系统来说,最重要的是MTE可以轻松地进行大规模部署。通过Armv9架构——这是全球数十亿移动设备的计算基础,MTE现已广泛普及,Arm架构正在成为全球数字化安全的基石。
|