G.O.S.S.I.P 阅读推荐 2022-05-13

admin 2022年5月13日21:42:37安全闲碎评论2 views2228字阅读7分25秒阅读模式

这年头,不给自己的论文做一个网站都不好意思发表顶会文章(小编说的不是自己,别瞎对号入座)。今天我们来围观 https://www.prefetchers.info 网站上的IEEE S&P论文 Augury – Using Data Memory-Dependent Prefetchers to Leak Data at Rest

G.O.S.S.I.P 阅读推荐 2022-05-13

自带网站的论文,最大的好处是可以不用读paper,直接看网页上的总结(作者懂营销啊)就能获得很多信息。用一句话来总结本文就是:Apple Silicon也存在类似Intel CPU上存在的数据预读取导致的侧信道泄露风险,这是不是伤害了很多苹果产品粉丝的感情啊~

G.O.S.S.I.P 阅读推荐 2022-05-13

差不多在2年前,新冠病毒正如火如荼地全世界蔓延之时,苹果宣布自家的芯片的布局计划——“今天 Mac 迎来历史性的一天,Apple 宣布 Mac 将改用公司自研的一流定制芯片,以提供业界领先的性能和强大的新技术。现在开发者即可着手更新其 app,以充分利用 Mac 中 Apple 芯片的各种先进功能。此次转变还将建立一个跨所有 Apple 产品的通用架构,大大降低开发者为整个 Apple 生态系统编写和优化 app 的难度。” 直至今日,mac和iPad都已经享受到M1芯片,而安全研究人员也不甘示弱,迅速提出了名为Augury的microarchitectural attack,通过利用Apple Silicon中名为Data Memory-Dependent Prefetcher(DMP)的微架构优化来泄露数据,研究人员表示文章的主要贡献在于:

  • 作者揭秘了DMP这个数据预读取优化的存在(在A14、M1、M1 Max和M1 Pro芯片中)!

  • 作者摸清了DMP特定的array-of-pointers dereferencing数据预读取模式!

  • 作者展示如何通过DMP的数据预读取模式泄露数据!

好了,我们接下来进入文章的细节,首先关注一下本文的基础,即所谓的DMP。这种预读取技术和经典的预读取优化的主要区别在于,DMP预读取会稍微那么深入一点去分析预读取的数据内容,比如把从内容里面拿到的数据当成地址来进行下一步的探索,当然不同的DMP方案差别很大,感兴趣的读者甚至可以去看看Intel这样的公司已经公开的专利内容。

G.O.S.S.I.P 阅读推荐 2022-05-13

在ISCA 2021上,已经有一篇名为Opening Pandora’s Box: A Systematic Study of New Ways Microarchitecture Can Leak Private Data的论文讨论了DMP的存在可能导致的风险,这其中最大的问题在于,和传统的预读取模式相比,DMP对内存的访问范围要宽广很多,研究表明,这种模式下的侧信道数据泄露,基本上是对整个内存中的数据都产生了威胁!!!幸运的是,DMP在此前几乎没有部署在什么商业处理器上。然后,苹果主动把人头送上——本文作者针对Apple Silicon提出了第一个实际的DMP相关侧信道数据泄露攻击Augury,并展示了相关攻击代码:https://github.com/FPSG-UIUC/augury

我们接下来略过作者对DMP相关攻击的描述,感兴趣的读者可以去阅读原论文及一堆相关的参考文献(很多都发表在MICRO、ISCA这样的体系结构会议上,说明这个问题对体系结构的研究人员来说并不是什么新闻),而直接介绍作者是如何分析M1芯片上的DMP:作者设计了两个数据块(data buffer)访问对比实验,其中一个data buffer完全填充了随机数,而另一个data buffer(下图中的AoP)里面全是指向有效地址的指针数据,如果DMP机制发挥作用,那么肯定会产生内存数据读写的时间差别。

G.O.S.S.I.P 阅读推荐 2022-05-13

实际上,这个实验的细节远比我们这里描述的要复杂,我们暂且略过而直接看看结果,从数据访问的延迟可以清晰地看到DMP机制发挥的作用:

G.O.S.S.I.P 阅读推荐 2022-05-13

接下来要进入到研究的硬核部分,作者要去逆向分析出M1芯片上的DMP模式,从而为后面的攻击铺平道路。作者设计了不同的测试用例,进行了大量的测试,最后总结出了M1芯片上DMP的模式(请收好如下这份宝贵的小抄!)

G.O.S.S.I.P 阅读推荐 2022-05-13

有了关于DMP的知识,攻击者可以开展很多攻击。作者给出了一个越界读的PoC代码(如下图所示),在这个攻击示例中,攻击者首先要布置一个足够大的数组aop(长度至少超过3,实际攻击里面长度设置在64),然后读取这个数组,触发DMP(line 4-6),这样具体被使用的指针就会被预读取,而后只需测试一下访问时间就可以了(作者表示在macOS上不是那么精确的mach_absolute_time计时测量也足够实现区分)。注意到这个地方(line 7-9)是直接访问了test pointer,如果没有访问test pointer的权限,作者指出,由于DMP也会影响L2 cache和TLB,攻击者还可以使用经典的Prime+Probe侧信道timing技术来确定究竟是哪个指针被访问。

G.O.S.S.I.P 阅读推荐 2022-05-13


当然,这个攻击毕竟是一个侧信道攻击,其主要危害也可能只是局限在对一些指针数据的泄露(例如影响ASLR),作者自己也比较谨慎地评估了攻击的危害(下图)

G.O.S.S.I.P 阅读推荐 2022-05-13

但是历史经验一再教育我们,一些看起来没那么严重的安全问题,往往在和其它一些问题结合后就能发挥巨大的攻击威力。所以,颤抖吧,苹果用户!


论文PDF:

https://www.prefetchers.info/augury.pdf


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2022-05-13

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月13日21:42:37
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  G.O.S.S.I.P 阅读推荐 2022-05-13 http://cn-sec.com/archives/1006218.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: