Android 14新增高级内存保护功能 遗憾的是大多数安卓机都不支持
内存安全向来是谷歌的开发重点,因为内存安全漏洞往往是软件和操作系统开发中潜在危害最大的漏洞之一。
在2022年之前内存相关漏洞在安卓系统里居高不下,于是谷歌开始采用Rust替代C/C++ 编写安卓主体代码。
当然这并不能解决所有内存漏洞,所以谷歌还在想其他办法尽可能减少内存漏洞数量和减低这类漏洞的危害。
最新工作就是 Android 14 里新增高级内存保护,此功能还需要设备兼容,对于不兼容的设备仍然无法使用。
图片来源:XDA
内存标记扩展 (MTE) 是Arm v9 架构芯片的强制功能 , 该功能提供详细内存错误信息防止出现内存安全错误。
该功能在运行时会对性能产生轻微影响,但好处是内存标记使用额外的元数据标记每次内存分配和解除分配。
MTE将标签分配给内存位置,然后标签可以与引用该内存位置的指针相关联,运行时则会检查数据是否匹配。
处理器在每次加载和存储数据时都会检查内存位置的指针和元数据,如果不匹配的话则会拒绝运行强化安全。
若有恶意软件尝试利用内存漏洞也会被拒绝执行代码,因此谷歌一直在致力于推动安卓软件栈支持内存标记。
实际上在 Android 12 里谷歌就已经支持MTE功能,不过这些功能需要在开发者选项里开启属于测试类功能。
到Android 14里如果安卓手机使用的是ARM v8.5+芯片 ,那可以直接在系统设置里启用高级内存保护功能。
具体位置位于:Android 14+、系统设置、安全和隐私、更多安全设置,在这里用户可以主动启用内存保护。
不幸的是大多数设备都是不支持此功能的,例如Google Pixel 7搭载的Tensor G2芯片组是基于ARM v8.2的。
后续新推出的安卓旗舰设备应该都会陆续使用 ARM v9+,到时候配合Android 14才能够启用内存保护功能。
注:高通骁龙8系列 (包括Gen 1/2)都是基于ARM v9的所以是支持的,其他非旗舰机使用的芯片多数不支持。