Android 联手 Arm 击退内存漏洞

作者: Kostya Serebryany, Google 核心系统团队,以及 Sudhi Herle, Android 安全及隐私团队

Google 一直致力于提升 Android 生态圈的安全防护水平,作为我们在安全方面的长期工作之一,我们携手 Arm 公司共同研发出了 内存标记扩展 (Memory Tagging Extension, 简称 MTE)。 内存安全漏洞 (常见于 C/C++ 程序) 目前仍旧是 Android 平台最大的安全隐患之一,尽管 Google 此前已投入 大量努力 对平台安全进行升级,但是,内存安全漏洞依旧占有 Android 9 高风险级漏洞的一半以上。而且,此类漏洞通常以难以诊断的可靠性问题出现,如偶发性崩溃和无法追踪的数据损坏,致使用户满意度下降,同时 增加软件的开发成本 ASAN HWASAN 等软件测试工具确实有一定帮助,但是它们的运行负载较高,因此在硬件安全方面的应用并不普及。

  • 内存标记扩展

    https://community.arm.com/developer/ip-products/processors/b/processors-ip-blog/posts/arm-a-profile-architecture-2018-developments-armv85a

  • 内存安全漏洞

    https://en.wikipedia.org/wiki/Memory_safety

  • 大量努力

    https://security.googleblog.com/2019/05/queue-hardening-enhancements.html?m=1

  • 增加软件的开发成本

    https://www.nist.gov/sites/default/files/documents/director/planning/report02-3.pdf

  • ASAN

    https://source.android.google.cn/devices/tech/debug/asan

  • HWASAN

    https://source.android.google.cn/devices/tech/debug/hwasan

硬件特性 MTE 允许开发者以较低成本监测到这些安全漏洞,从而减缓安全风险。MTE 包含以下两种执行模式:

  • 精准模式: 提供有关内存冲突的详细报告。

  • 简略模式: CPU 负载较低,建议长期开启。

Arm 最近已发布了 MTE 白皮书 ,内含 Arm v8.5 架构参考手册 ,感兴趣的读者朋友可前往查看。

我们在下面列举了 MTE 两大模式的几个重要用例。

  • MTE 所提供的 ASAN  HWASAN 版本操作性更强,方便开发者在实验室环境下进行常规测试及模糊测试。MTE 能够在更短的时间内发现更多的错误,而且成本也更低,从而大幅降低开发流程的复杂性。在许多用例中,MTE 允许开发者使用与生产环境下相同的二进制文件来进行内存安全测试。MTE 生成的错误报告在详细程度和可执行性方面,具备与 ASAN 及 HWASAN 相当的水准。

  • MTE 可用作在生产环境下测试复杂软件场景的一款机制。应用开发者和 OEM 厂商可选择在部分软件栈内启用 MTE。在获取用户同意的前提下,开发者可通过 Google Play 管理中心 等常用渠道获取错误报告。

  • 作为一款强大的安全工具,MTE 可用于缓解 Android 系统和应用中存在的各类内存安全漏洞。在大多数实例中,基于 MTE 的概率缓解措施可检测出 90% 以上的无效内存访问,以此预防漏洞被利用。通过部署这些防护措施,并确保攻击者无法通过反复尝试来攻破关键安全组件,我们能够极大地降低用户可能遭受的安全风险。

我们相信,内存标记可检测出亟待解决的多类常见内存安全漏洞,帮助供应商识别并修复这些漏洞,同时防止恶意利用事件的发生。在过去一年中,我们的团队付出了巨大努力,以确保 Android 平台和应用为 MTE 的使用做好准备。此前,我们已经部署了 HWASAN (内存标记概念的一款软件实现),并对整个平台和部分应用进行了测试,成功检测出近 100 个内存安全漏洞。其中大部分漏洞是在启用 HWASAN 的日常设备上被发现的。MTE 的引入将在成本管控、部署简易性与规模化三方面带来大幅改进。与此同时,我们也在努力推进相关工作,希望尽早在 LLVM 编译工具链 Linux 内核 中实现对 MTE 的支持。在相应芯片出产之前,Android 平台将会完善对 MTE 的支持。

  • MTE 白皮书

    https://developer.arm.com/architectures/cpu-architecture/a-profile#mte

  • Arm v8.5 架构参考手册

    https://developer.arm.com/docs/ddi0487/latest

  • ASAN

    https://developer.android.google.cn/devices/tech/debug/asan

  • HWASAN

    https://source.android.google.cn/devices/tech/debug/hwasan

  • Google Play 管理中心

    https://developer.android.google.cn/topic/performance/vitals/crash

  • LLVM 编译工具链

    https://reviews.llvm.org/D64169

  • Linux 内核

    https://lkml.org/lkml/2019/7/23/728

Google 致力在各个 Android 软件栈上为 MTE 提供全方位支持。我们目前正在和多个 Arm SoC (系统芯片) 合作伙伴展开协作,共同测试对 MTE 的支持,并扩大 MTE 在 Android 软硬件生态圈的部署范围。根据现有数据显示,MTE 不仅可以带来巨大裨益,而且其性能成本也在可控范围内。我们正在考虑将 MTE 列为部分 Android 设备的基本要求。

点击屏末    |   提交产品反馈建议

想了解更多 Android 内容?

  • 在公众号首页发送关键词 “Android”,获取相关历史技术文章;

  • 还有更多疑惑?欢迎点击菜单 “联系我们” 反馈您在开发过程中遇到的问题。

推荐阅读

我来评几句
登录后评论

已发表评论数()

相关站点

+订阅
热门文章