Android MTE技术详解

1.MTE概念

        MTE(内存标记扩展)是ARM v8.5-A新增的一项缓解内存安全的机制。在Android Linux现有的安全机制中,类似的机制有ASAN、HWSAN。但两者因为性能开销代价昂,不适用于广泛部署(仅调试使用)。MTE当前带来了一种高性能、可扩展的硬件解决方案,可降低以不安全语言编写的代码中可能存在的内存安全违规风险。

注:MTE不仅可用在研发自测、内存问题调试,也可以用于Fuzz。

2.MTE支持条件

ARM解释: v8.5及以上

Qcom平台解释:ARM v9(MSM8450)以上

Android解释:Android对MTE的支持将在2021年/2022年初发布带有MTE的芯片时完成。截至于2023年底,最新的旗舰设备(Pixel、OPPO)开发者选项中已具备MTE功能。

3.MTE的开关

        内核层CONFIG_ARM64_MTE=y时开启,此Kconfig由平台根据环境自行控制,无需工程师手动开关。依赖情况如下:

1687config ARM64_MTE

1688 bool "Memory Tagging Extension support"

1689 default y

1690 depends on ARM64_AS_HAS_MTE && ARM64_TAGGED_ADDR_ABI

1691 depends on AS_HAS_ARMV8_5

1692 # Required for tag checking in the uaccess routines

1693 depends on ARM64_PAN

1694 depends on AS_HAS_LSE_ATOMICS

1695 select ARCH_USES_HIGH_VMA_FLAGS

1696 help

        Google Play中也提供了APP(Sanitizer Test APP[外网,需要科学上网])可用于测试MTE,例如:

4.MTE检测目标

MTE认为内存安全违规主要分2种:空间安全、时间安全。

  • 空间安全:

对象在真实边界之外被访问,例如溢出、越界等。可被利用来改变函数指针、保存寄存器等目标地址。

  • 时间安全:

在对象引用的内存释放、过期后使用。例如UAF等,攻击者可以放置一个新的恶意对象来代替预期目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值