本文档是针对ARM公司推出的内存标记扩展(MTE,Memory Tagging Extension)的研究论文,参与作者有Juhee Kim(来自首尔国立大学)、Jinbum Park和Taesoo Kim(来自三星研究院)、Sihyeon Roh、Jaeyoung Chung、Youngjoo Lee和Byoungyoung Lee(均来自首尔国立大学)。该论文旨在研究和揭示MTE在面对推测性执行攻击时所面临的潜在安全风险,并且发表于一份具体的科学期刊,虽然具体刊期和刊名未明。
MTE是一项自ARMv8.5-A架构开始引入的新硬件功能,设计的初衷是检测和防范内存损坏漏洞。由于MTE能够以低损耗来缓解现代软件系统中的内存损坏攻击,因此这种技术被视为提高C/C++软件安全性的最有前景的措施之一。然而,该研究发现利用推测性执行攻击(speculative execution attack)可以有效地突破MTE,从而显著降低了使用MTE所带来的安全保障。
研究主要探索了称为Tiktag的攻击手段。这些所谓的“巧妙代码片段”(gadget)能够通过推测性执行方法,从任意内存地址泄露出MTE标签。作者们在实验中证明了这些Tiktag gadget能够在不到4秒内,以高于95%的成功率泄露一个MTE标签,从而突破实际系统如Google Chrome和Linux内核上基于MTE的缓解方案。论文还提出了回应Tiktag gadget安全风险的防御策略。
研究显示,Tiktag gadget分为Tiktag-v1和Tiktag-v2类型。Tiktag-v1主要利用分支预测和数据预取的“推测缩减”(speculation shrinkage)来泄露内存标签,而Tiktag-v2则利用“存储到加载”的转发行为(store-to-load forwarding)进行标签泄露。在具体的实验中,Tiktag gadget展示了其在ARM Cortex-X3(例如Pixel 8设备的核8)中不断泄露信息。而这些攻击可以在MTE同步和异步模式下有效开展,标志着现有MTE实施在硬件设计上可能需要做出进一步的调整,尤其是在如何处理推测执行及预取数据上,以避免在标签检查出错时的资源路径泄漏。
在与之前的工作比较中,这篇论文明确了Google Project Zero未能找到的推测性标签泄露的证据,并提供了更深入的分析。Google Project Zero之前的工作总结出在MTE机制下,当推测标签检查成功或失败时,缓存状态并无显著区别。但本研究却发现,标签检查的确可以在推测执行中引起缓存状态的变化。
综上所述,本文通过探讨Tiktag gadget的方式为业界提供了改进MTE实施设计的关键洞见,强调了在设计基于内存标签的软件和硬件防护时,需重视与推测性执行相关的安全问题。研究团队为学术界和业界提供了完整的攻击框架和相应的防护方案,使得ARM生态系统中的设备能够针对潜在的Tiktag攻击进行更有效的防御与检测。同时,作者们也将其工作公开在GitHub,以进一步促进学术界对MTE侧信道问题的理解和研究。