关闭广告

内存安全最近一直是谷歌的首要任务,因为内存错误往往是软件开发中最严重的错误之一。事实上,该领域的漏洞导致了最严重的漏洞 Android直到去年谷歌创建了大量新的本地代码 Android使用 Rust 编程语言而不是 C/C++。这家软件巨头正在努力支持其他方法来减轻其系统中的内存漏洞,其中之一称为内存标记。在系统支持的设备上 Android 14 可能有一个名为“高级内存保护”的新设置可以切换此功能。

内存标记扩展 (MTE) 是基于 Arm v9 架构的处理器的强制硬件功能,提供详细信息 informace 有关内存损坏并防止内存安全错误。正如 Google 所解释的那样:“在较高级别上,MTE 使用附加元数据标记每个内存分配/释放。将标记分配给内存位置,然后可以将其与引用该内存位置的指针相关联。在运行时,处理器会在每次读取和保存时检查指针和元数据标签是否匹配。”

Google 正在努力在整个软件套件中支持 MTE Android 许久。到 Androidu 12添加了Scudo内存分配器并支持兼容设备上的三种MTE操作模式:同步模式、异步模式和非对称模式。该公司还可以通过系统属性和/或环境变量为系统进程启用 MTE。应用程序可以通过属性添加 MTE 支持 android:memtag模式。当为以下进程启用 MTE 时 Androidu,所有类型的内存安全错误(例如释放后使用和缓冲区溢出)都会导致崩溃,而不是无声的内存损坏。

Do Androidu 13 Google 添加了用户空间应用程序二进制接口 (ABI),以将所需的 MTE 操作模式传达给引导加载程序。这可用于在默认情况下未启用 MTE 的兼容设备上启用 MTE,也可用于在默认启用 MTE 的兼容设备上禁用它。在系统上将 ro.arm64.memtag.bootctl_supported 系统属性设置为“true” Android 13 告诉系统引导加载程序支持 ABI,并且还激活了开发人员选项菜单中的一个按钮,允许用户在下次重新启动时启用 MTE。

V Androidü14 但是,在兼容设备上启用 MTE 可能需要深入了解开发人员选项菜单。如果设备使用支持 MTE 的 Arm v8.5+ 架构处理器,则设备实现支持 ABI,用于将所需的 MTE 操作模式传达给引导加载程序,并且新的 ro.arm64.memtag.bootctl_settings_toggle 系统属性设置为“true” ”,然后出现一个新页面高级内存保护 v 设置→安全和隐私→其他安全设置。该页面还可以通过新的 ACTION_ADVANCED_MEMORY_PROTECTION_SETTINGS 操作启动。

有趣的是,为 Google Pixel 2 系列提供动力的 Tensor G7 芯片组使用 Arm v8.2 处理器内核,这意味着它不支持 MTE。如果即将推出的Google Pixel 8系列会像其他旗舰系列一样使用新的Arm v9内核 android手机,那么他们的硬件应该能够支持MTE。然而,问题仍然是“高级内存保护”功能是否会出现在稳定版本中 Android14年

今日阅读最多的

.