启用Pixel 8的MTE功能
Pixel 8硬件(Tensor G3)支持ARM内存标记扩展(MTE),软件支持在Android用户空间和Linux内核中均可用。此功能是对线性缓冲区溢出和多种释放后使用缺陷的强大防御。我非常高兴看到这一硬件功能终于在现实世界中可用。
在用户空间中启用MTE
在Android UI中已经预设了启用选项:设置 / 系统 / 开发者选项 / 内存标记扩展 / 启用MTE直到您关闭它。一旦启用,它将通过添加“memtag”选项来内部更改名为“arm64.memtag.bootctl”的Android“系统属性”。
在内核中启用MTE
在内核中启用MTE稍微复杂一些,但一点也不困难。这需要手动设置上述“arm64.memtag.bootctl”属性以包含“memtag-kernel”:
- 将手机连接到可以运行adb工具的系统
- 如果尚未安装,请安装adb。例如在Debian/Ubuntu上:
sudo apt install adb - 在手机的“开发者选项”菜单中打开“USB调试”,并在首次运行adb时接受弹出的调试会话确认
- 验证当前设置:
adb shell getprop | grep memtag.bootctl[arm64.memtag.bootctl]: [memtag]
- 启用内核MTE:
adb shell setprop arm64.memtag.bootctl memtag,memtag-kernel - 检查结果:
adb shell getprop | grep memtag.bootctl[arm64.memtag.bootctl]: [memtag,memtag-kernel]
- 重启手机
验证内核MTE是否启用
要检查内核MTE是否启用(通过内核地址清理器的硬件标记模式实现),您可以在重启后检查内核命令行:
|
|
后面的“kasan=on”会覆盖前面的“kasan=off”。
享受吧!
© 2023, Kees Cook。本作品采用知识共享署名-相同方式共享4.0国际许可协议进行许可。