![ARM CPU](https://ydanquan.com/wp-content/uploads/2024/06/arm-cpu.jpg)
一种名为“TIKTAG”的新推测执行攻击以 ARM 的内存标记扩展 (MTE) 为目标,以泄漏数据,成功率超过 95%,从而使黑客能够绕过安全功能。
这篇论文由来自三星、首尔国立大学和佐治亚理工学院的韩国研究人员团队共同签署,展示了针对 Google Chrome 和 Linux 内核的攻击。
MTE 是 ARM v8.5-A 架构(及更高版本)中添加的一项功能,旨在检测和防止内存损坏。
该系统使用低开销标记,将 4 位标记分配给 16 字节内存块,通过确保指针中的标记与访问的内存区域匹配来防止内存损坏攻击。
MTE具有同步、异步、非对称三种运行模式,平衡安全性和性能。
研究人员发现,通过使用两个小工具(代码),即 TIKTAG-v1 和 TIKTAG-v2,他们可以在短时间内利用推测执行来泄漏 MTE 内存标签,成功率很高。
![Tag leak diagram](https://ydanquan.com/wp-content/uploads/2024/06/tag-leak.png)
资料来源:arxiv.org
泄露这些标签不会直接暴露密码、加密密钥或个人信息等敏感数据。然而,从理论上讲,它可以让攻击者破坏 MTE 提供的保护,从而使安全系统无法有效抵御隐秘的内存损坏攻击。
TIKTAG 攻击
TIKTAG-v1 利用 CPU 的分支预测和数据预取行为中的推测收缩来泄漏 MTE 标签。
![TIKTAG-v1 code](https://ydanquan.com/wp-content/uploads/2024/06/tiktag-1.png)
资料来源:arxiv.org
研究人员发现,这个小工具可以有效地攻击 Linux 内核,主要是涉及推测内存访问的功能,尽管需要对内核指针进行一些操作。
攻击者使用系统调用来调用推测执行路径并测量缓存状态以推断内存标签。
TIKTAG-v2 利用推测执行中的存储到加载转发行为,将值存储到内存地址并立即从同一地址加载的序列。
![TIKTAG-v2 code](https://ydanquan.com/wp-content/uploads/2024/06/tiktag-2.png)
资料来源:arxiv.org
如果标签匹配,则转发该值,加载成功,影响缓存状态,如果不匹配,则转发被阻止,缓存状态保持不变。
因此,通过在推测执行后探测缓存状态,可以推断标签检查结果。
研究人员展示了 TIKTAG-v2 小工具针对 Google Chrome 浏览器(尤其是 V8 JavaScript 引擎)的有效性,为利用渲染器进程中的内存损坏漏洞开辟了道路。
![Attack scenarios made possible through MTE bypass](https://ydanquan.com/wp-content/uploads/2024/06/mte-bypass.png)
资料来源:arxiv.org
行业应对和缓解措施
研究人员在 2023 年 11 月至 12 月期间向受影响的实体报告了他们的发现,并得到了普遍积极的回应,但尚未立即实施修复措施。
arxiv.org 上发布的技术论文提出了以下针对 TIKTAG 攻击的缓解措施:
- 修改硬件设计以防止推测执行根据标签检查结果修改缓存状态。
- 插入推测屏障(例如 sb 或 isb 指令)以防止关键内存操作的推测执行。
- 添加填充指令以扩展分支指令和内存访问之间的执行窗口。
- 增强沙箱机制,将推测内存访问路径严格限制在安全内存区域内。
虽然 ARM 认识到情况的严重性并在几个月前发布了公告,但它并不认为这是对该功能的妥协。
“由于分配标签预计不会成为地址空间中软件的秘密,因此揭示正确标签值的推测机制不被视为对架构原理的妥协,”ARM 公告中写道。
Chrome 的安全团队承认了这些问题,但决定不修复这些漏洞,因为 V8 沙箱的目的并不是保证内存数据和 MTE 标签的机密性。
此外,Chrome 浏览器目前默认不启用基于 MTE 的防御,这使得立即修复的优先级较低。
Pixel 8 设备中的 MTE 预言机后来于 2024 年 4 月向 Android 安全团队报告,并被确认为有资格获得赏金奖励的硬件缺陷。