对旁路通道的攻击:现在,不仅PC受到攻击,而且智能手机也受到攻击(分析审查)

尽管对移动设备的需求越来越大,并且对高速缓存旁路通道的攻击(以下称为高速缓存攻击)是破解现代微处理器电子产品的有力方法,但是直到2016年,有关这些攻击在智能手机上的适用性的出版物很少。 。 而且,这些早期出版物仅限于考虑对AES表的攻击,而没有涉及更现代的核间攻击方法:Prime + Probe [6],Flush + Reload [6],Evict + Reload [7],Flush + Flush [8],Rowhammer [ 9]。 此外,直到2016年,人们认为核间缓存攻击只能在Intel和AMD平台上进行,但最近也已针对ARM平台(在智能手机和其他移动设备上)进行。 [6]


近年来,网络安全专家对在智能手机上缓存攻击的兴趣激增。 本文是对该领域2015年至2017年主要发现的分析性回顾。


-旁路通道的历史
-为什么对ARM的缓存攻击如此独特
-各种缓存攻击
--驱逐+时间
--Prime +探针
--冲洗+重装
--驱逐+重载
--冲洗+冲洗
--AnC
-罗汉默效应
-重复数据删除系统内存
-操作系统内核的伪隔离
-核间和处理器间隐藏通道



至于对AES表的高速缓存攻击,尽管人们已经知道这些攻击是有可能的 ,但有缺陷的AES表实现仍被用作事实上的标准。 包括现代嵌入式加密设备(例如SIM卡)。 例如,3G / 4G网络使用AES认证算法MILENAGE。 他的妥协允许您克隆USIM卡并窃听对话。 T.O. 旁路通道上的高速缓存攻击与SIM卡(用于访问2G网络)和USIM卡(用于访问3G / 4G网络)都相关。 2015年,描述了“差分功率攻击”(DPA),该攻击可在短短几分钟内恢复加密密钥(由MILENAGE算法使用)和其他USIM卡机密。 [3]



旁路通道的历史


  • 随着软件变得更加复杂以及高级软件保护的数量增加,在硬件级别对系统进行黑客攻击,尤其是通过旁路通道使用高速缓存攻击,正变得越来越有吸引力。 这些攻击基于处理器内存体系结构中的漏洞。 [4]
  • 1985年,通过测量视频显示器引起的电磁干扰,引入了从视频显示器读取信息的技术[10]。 基于此技术,2014年开发了按键记录器-基于智能手机和无线电天线构建。 [12]
  • 在1996年,有证据表明,通过仔细测量用私钥执行操作所花费的时间,可以破解各种加密系统,例如DES密码。 2016年,首次展示了使用高级椭圆加密技术对加密设备上旁路通道的攻击; 在攻击过程中,秘密解密密钥是从位于另一个房间的目标设备中提取的。 [13]
  • 1997年,引入了“差分失真方法”(DFA)-一种使用各种微故障模型以及各种密码分析方法的攻击; 从智能卡和其他受到未经授权访问的设备中恢复机密设置。 [11]通过物理方式访问设备,可以更改电源电压,时钟信号的频率; 或环境条件(温度等)-使智能卡发生故障。 此外,设备故障可能被触发-即使仅通过软件干预即可触发; 因此可以在远程访问模式下完成。
  • 2014年,展示了针对缓存绕过的攻击; 该攻击使用由于数据访问时间不同而导致的信息泄漏,具体取决于它们是否在缓存中; 因此 这次攻击清楚地表明了所调查的代码最近对哪些数据进行了操作。 在此攻击过程中,演示了AES密钥的完全恢复。 [9]不久之后的2015年,研究表明,缓存旁路通道不仅可以用于攻击密码系统,还可以用于收集有关击键的信息。 [14]
  • 在2014年,事实证明,以高频率访问同一存储单元会引起DRAM芯片中的自发位切换(Rowhammer效应)。 [9]因为DRAM缩放到最小尺寸,所以防止单个单元之间的电气干扰并不容易。 这就是为什么从存储器激活某条线会导致相邻线中的数据失真的原因。
  • 在2015年,证明了Rowhammer效果可用于将特权提升给超级用户。 [15]在同一年,事实证明,即使将Java代码上传到网站,也可以触发自发位切换。 [7]最初,仅针对使用DDR3和DDR4模块的Intel和AMD系统实施此方案。 [16,17]但是,在2016年,这种攻击也在ARM平台上得到了证明。 [1]在同一年,研究表明,缓存攻击也可以用于监视TrustZone中的缓存活动。 [1]
  • 2016年,对现代智能手机中常用的DRAM寻址功能进行了“逆向工程”。 结果,发现了其他切换位的方法,这些方法可在数百万个Android设备上实现,而无需在特权模式下工作。 [1]
  • 在2016年,首次展示了对ARM处理器缓存的最后一级的攻击。 可以针对旁路通道上的核间和进程间缓存攻击实施此攻击。 [1]


为什么对ARM的缓存攻击如此独特


  • 诸如Flush + Reload和Flush + Flush之类的攻击方法-使用无特权的x86 clflush重置指令从高速缓存中删除数据行。 但是,除ARMv8-A处理器外,ARM平台不具有非特权的缓存重置指令。 因此,在2016年,提出了使用Rowhammer效应的间接缓存挤压方法。 [1]
  • 为了进行成功的高速缓存攻击,需要诸如访问存储单元的确切周期时间之类的信息。 早期的缓存攻击将系统性能计数器用于这些目的,但是这种方法效率低下,因为ARM处理器上的这些计数器仅在特权模式下可用。 但是,在2016年,提出了三种可选的同步源,包括那些以非特权模式可用的同步源。 [1]其中之一是启动并行同步流,该流连续增加全局变量。 通过读取此变量的值,攻击者可以测量访问存储单元的周期时间。
  • 另外,所谓的。 伪随机替换策略,因此,与Intel和AMD处理器相比,缓存溢出的可能性较小。 尽管如此,2016年,即使在这种嘈杂的条件下,也证明了有效的缓存攻击-对于三款智能手机:“ OnePlus One”(使用带有ARMv7-A架构的“ Snapdragon 801 SoC”和“ Krait 400”处理器的智能手机),“阿尔卡特One Touch” Pop 2“(将“ Snapdragon 410 SoC”与ARMv8-A架构的“ CortexA53”处理器一起使用),“ Samsung Galaxy S6”(将“ Samsung Exynos 7 Octa 7420 SoC”与两个处理器集群“ ARMv8-A”一起使用)。 [1]


各种缓存攻击


  • 通常,对旁路通道的高速缓存攻击可分为三个阶段:1)识别从“泄漏”电子系统“渗漏”的微体系结构信号; 这种泄漏的微体系结构信号的典型例子是功耗和集成电路的电磁辐射。 [2,3]; 2)在系统运行期间对该信号进行监视和分析; 3)识别模式差异微体系结构信号。 [2]
  • 驱逐+时间。 基本思想是确定受害程序正在访问哪个缓存集。 算法:1)测量受害者程序的执行时间; 2)替换缓存的特定部分; 3)再次测量受害者程序的执行时间。 使用这两个维度之间的时间差,您可以确定受害者在运行时使用缓存的特定部分的时间。 在2010年,展示了一种基于Evict + Time的强大攻击方式-针对OpenSSL上的AES; 无需公开和加密的文本。 [18、19]
  • 灌注+探针。 与上一个方法一样,此方法使攻击者可以确定受害者程序正在访问的高速缓存集。 算法:1)填充缓存的特定部分; 2)将控制权移交给受害者程序; 3)确定完整缓存的哪一部分仍属于我们。 这可以通过测量对攻击者在第一阶段用来填充缓存的地址的访问时间来完成。 T.O. 如果受害者程序使用的地址与攻击者映射到缓存的相同区域,则它将迫使攻击者的数据退出缓存; 攻击者可以在第三阶段进行跟踪。 在[19]中,展示了使用这种机制的攻击-在OpenSSL AES和Linux dm-crypt上。 2015年[20]演示了如何使用Prime + Probe,安装核间和机器间隐蔽通道,然后在GnuPG中攻击ElGamal。 同年,证明了对在云中实施OpenSSL AES的成功攻击。 [21]
  • 冲洗+重新加载。 2011年[22]显示了如何使用clflush攻击AES。 Clflush用于将跟踪的存储单元推出缓存; 然后在受害程序执行少量指令后检查此单元是否已重新加载到缓存中。 算法:1)将二进制文件(例如,共享库)投影到其地址空间中(使用适当的系统调用,例如mmap); 2)从缓存中挤出缓存行(代码或数据); 3)将控制权移交给受害者程序; 4)检查此高速缓存行(来自第2节)是否由受害程序加载(此检查是通过测量对存储单元的访问时间来进行的)。 在2014年,通过Flush + Reload缓存攻击证明了VMWare虚拟机中AES密钥的完全还原。 [23]在同一年,使用相同的攻击,证明了OpenSSL算法ECDSA(基于椭圆曲线的数字签名算法)的密钥的恢复。 [24] 2015年,通过Flush + Reload攻击,“内存重复数据删除”的系统机制遭到破坏; 结果,可能会导致在普通物理机上运行的虚拟机之间发生未经授权的通信。 [25]在同一年,它演示了如何使用“刷新+重新加载”来获取有关在公用物理计算机上运行的各种虚拟机使用哪些加密库的信息。 [26]在2015年,还显示出,除了攻击加密系统之外,刷新+重新加载方法也可以用于键盘记录程序。 [14]
  • 驱逐+重新加载。 它于2015年推出[14]。 使用冲洗+重新加载进行挤出-代替挤出说明。 尽管此攻击对于x86没有意义(因为clflush不需要特权),但对于ARM处理器却非常重要(因为这样的指令仅在特权模式下可用)。 Evict + Reload的本质在于,为了从缓存中挤出所需的单元,我们将大量互连的地址填充到缓存中,结果是负责挤出的机制决定挤出我们所需的缓存单元。 此外,在2016年,证明了一种高效且快速的抢占策略可以使用JavaScript编写的applet在DRAM模块的相邻行中发起自发位切换(由于多次访问同一条存储线)。 [24]因此 缓存攻击不再依赖于特权缓存刷新指令(如clflush)。
  • 冲洗+冲洗。 刷新+重新加载和Prime + Probe攻击会导致大量缓存访问,可以通过系统性能计数器测量其持续时间。 正是基于这些观察结果,才在2015年推出了Flush + Flush攻击。 [8]攻击与冲洗+重装几乎相同。 二进制文件或拆分文件对象被映射到攻击者的地址空间。 存储单元被强制退出缓存,并且控制权被转移到受害者程序。 但是,不是重新启动阶段,而是访问我们正在观察的单元,而是将其替换。 与冲洗+重新装填或灌注+探头相比,不会造成遗漏。 T.O. 很容易判断是否缓存了存储位置。
  • AnC。 这是对2017年引入的缓存攻击“ Evict + Time”的更新。 [4] AnC的一个独特功能是,这种缓存攻击依赖于对缓存页表的分析,这些页表在大多数现代处理器(Intel,AMD,ARM)中都使用。 [4]如今,任何处理器的核心都是“内存管理单元”(MMU),它通过虚拟化简化了对可用物理内存的管理; 供多个过程随后使用。 MMU使用“页表”数据结构来映射虚拟和物理存储单元。 页表是有吸引力的硬件攻击目标。 例如,“页面表”中仅自发切换一位(由Rowhammer效应引起)-攻击者获得对他不应该访问的内存的物理地址的控制可能就足够了; 这可能足以获取超级用户特权。 [4]


罗汉默效应


  • 单独的DRAM芯片容量较小,因此,几个微电路在一块板上连接在一起-以形成所谓的 DRAM系列。 一个DRAM存储器模块可以包含一个或多个DRAM行。 DRAM芯片由单元的二维阵列组成。 每个DRAM单元都是一个电容器。 0和1是电容器的充电或放电状态。 网格中的每个单元都通过导线连接到相邻单元。 如果激活了任何一个单元,则将电压同时施加到其电容器以及同一行的所有其他电容器。 由于随着技术的进步,存储单元变得越来越小,彼此接近,由存储线的激活引起的干扰经常影响相邻线的电容器电荷。 在2014年,有研究证明[9]频繁访问同一DRAM存储单元会导致Rowhammer效应-自发位切换。 此效果可用于增加特权(例如,退出安全沙箱[15])。 也可以通过执行网站上非特权JavaScript代码的结果来实现它。
  • 为了“阻塞”特定的存储单元,攻击者需要在同一DRAM库中找到两个地址-但在不同的行上。 某些地址位用于选择存储位置的行,通道和存储体。 但是,没有记录采样功能的工作原理。 因此,在2015年[27]引入了一种机制,以实现相应功能的逆向工程的完全自动化; 利用“字符串冲突”这一事实导致对内存的访问时间增加。 所用方法的本质是搜索映射到相同DRAM库但在不同行上的地址。 通过重复测量对两个随机地址的访问时间。 对于某些地址对,访问时间比其他地址更长-这意味着它们属于不同的线路,但属于同一组。 然后,将这些地址分组为具有相同通道,线路和存储区的集合。 然后,通过生成所有线性函数并将其应用于任意选择的子集的所有地址,将这些标识出的地址用于重构寻址函数。 T.O. 由于搜索空间很小,因此蛮力在这里非常有效。 [1]
  • 使用Rowhammer效应进行攻击的第一种实施方式要么依赖于概率方法(由于在攻击过程中可能发生计划外的系统崩溃),要么采用概率方法。 或专门的内存管理功能:内存重复数据删除,MMU半虚拟化,页面映射界面。 但是,现代设备上的此类功能根本不可用或出于安全原因而被禁用。 [30]
  • 因此,在2016年,引入了Drammer攻击-不受列出的缺点和限制。 它仅依赖于现代操作系统的当前功能,而这些功能没有超级用户权限就可以使用。 特别是物理内存分配子系统的可预测行为。 这种可预测性用于在攻击者选择的物理内存的易受攻击位置中实现物理内存的分布(其中将处理敏感数据,例如内存页表)。 “按摩记忆”的相应技术称为Phys Feng Shui。 为了演示Drammer攻击的可操作性,提供了一种利用漏洞的实现,该访问实现了对Android设备根目录的访问。 此漏洞可以在没有特殊许可的情况下由任何应用程序启动; 并且没有利用任何软件漏洞。 [30]
  • T.O. Drammer , Rowhammer ( Intel AMD), ( ARM-); , . [30]
  • 2016 « » Flip Feng Shui (FFS) – Rowhammer, ; ; . FFS , Ubuntu/Debian. [31]
  • 2017 , MLC NAND -, SSD-, – , Rowhammer. . – . [5]



  • - ; . , ; . [1]
  • ( ) – , , . ( – , ). , – , . – . [1]
  • – ; Windows 8.1 10. – , « ». – . , , . , « », , . , , , . [35]
  • 2016 , – . . -, , , – ; (, 64- ). -, , , , . -, , , - – . [35]
  • , JavaScript- Microsoft Edge – . ; . , - ngnix , , : , . [35]
  • .. . , , . [35]



  • ASLR ( ) ( ) . «» , . , « » , . , ASLR – - . [33]
  • 2016 ASLR 32- 64- Linux, « ». , , – . . .. ASLR . [33]
  • ASLR – , , .. «- » (ROP). , , , , . . [37]
  • 2017 KAISER, , . , , – , . [37] , KAISER BTB ( ), 2016 . [36]
  • 2016 (BTB). BTB- 30 . -, BTB, – . , 30- , – . , , . BTB- . , Intel Skylake (Intel Skylake i7-6700K), . . [36]
  • 2017 , , - . [34]



  • . - – , . , . [29]
  • - - – ; Flush+Reload, Evict+Reload Flush+Flush. - . «» « ». Android , , – ; (. [28]). .. .
  • , - . – . , - , , , . [1] ; ; « » « », ; . - TCP .
  • 2017 , SSH, (45 /); . SSH-, , , telnet-. [29]
  • 2015 , . – ( , ), . . [32]
  • , . . -, ; , ; .. , . -, ( ). [32]
  • , , (16 ). , « » Intel Xeon ( 8 ) 12,5/. 5 4 . [32]
  • 2015 , . , , – . [32]
  • 2016 Android, 250 , - . [1]

1. 莫里茨·利普(Moritz Lipp),丹尼尔·格鲁斯(Daniel Gruss)。 ARMageddon:移动设备上的缓存攻击//第25届USENIX安全研讨会论文集。 2016。 549-564。
2. 罗伯特·卡兰。 衡量攻击者可在指令级事件中使用的侧通道信号的实用方法// //第47届年度IEEE / ACM国际微体系结构研讨会(MICRO),第242-254页,2014年12月。
3. 刘俊荣。 小调整无济于事:3G / 4G USIM卡中MILENAGE实现的差分功率分析。 BlackHat 2015。
4. 赫伯特·博斯​​,本·格拉斯。 在MMU上使用侧通道攻击进行逆向工程硬件页表缓存 。 2017。
5. Yu Cai,Saugata Ghose。 MLC NAND闪存编程中的漏洞:实验分析,漏洞利用和缓解技术//第23届IEEE高性能计算机体系结构研讨会,工业会议,2017年2月。
6. 福克纳·卡特里娜飓风。 刷新+重新加载:高分辨率,低噪声,L3高速缓存侧通道攻击//第23届USENIX安全研讨会的论文集。 2014年。 719-732。
7. 格鲁斯·丹尼尔(Gruss Daniel),莫里斯·克莱门汀·曼格(Maurice Clementine M angard),斯特凡。 Rowhammer.js:JavaScript中的一种由软件引起的远程错误攻击 。 2016。
8. 格鲁斯·丹尼尔(Gruss Daniel),瓦格纳·克劳斯(Wagner Klaus)。 同花顺+同花顺:更隐秘的末级缓存攻击 。 2015年。
9. Kim Yoongu,Daly Ross。 在不访问内存的情况下翻转内存中的位:DRAM干扰错误的实验研究//第41届年度国际计算机体系结构研讨会论文集。 美国新泽西州皮斯卡塔维(Piscataway),美国:IEEE出版社,2012年(ISCA '14)。
10. Eck Wim。 视频显示单元发出的电磁辐射:有窃听风险吗? //计算机和安全性。 不行 1985年第4页。 269-286。
11. Biham Eli,Shamir Adi。 秘密密钥密码系统的差分故障分析//密码学的进展-CRYPTO '97 Bd。 1294。
12. 卡兰·罗伯特(Callan Robert),扎伊克·阿伦卡(Zajic Alenka)。 一种测量攻击者可用于指令级事件的侧通道信号的实用方法,//第47届IEEE / ACM国际微体系结构年度研讨会论文集。 2014年。 242–254。
13. Genkin Daniel。 通过PC上的低带宽电磁攻击提取ECDH密钥// Cryptology ePrint存档,报告2016/129。
14. 格鲁斯·丹尼尔(Gruss Daniel)。 缓存模板攻击:对包含的最后一级缓存进行自动攻击//第24届USENIX安全研讨会的论文集。 2015年。 897–912。
15. Seaborn Mark。 利用DRAM rowhammer错误获得内核特权 。 2015年。
16. 格鲁斯·丹尼尔(Gruss Daniel)。 带有DDR4的Skylake上的Rowhammer bitflips 。 2016。
17. Lanteigne Mark。 如何用Rowhammer开发计算机硬件中的弱点 。 2016。
18. Osvik Dag,Shamir Adi。 缓存攻击和对策:AES //密码学主题。 2005。 1-20。
19. Tromer Eran,奥斯维克·达格。 对AES的高效缓存攻击和对策//密码学杂志。 23(1),2010年。 37-71。
20. 刘芳菲,亚罗姆,尤瓦尔。 末级缓存侧信道攻击是实用的// IEEE安全与隐私Bd研讨会论文集。 2015年。 605-622。
21. 艾森巴特·托马斯。 跨内核工作的共享缓存攻击,无法抵御VM沙箱-及其在AES // IEEE安全与隐私研讨会上的应用。 2015年。
22. 古拉施·大卫(Gullasch David),邦格特·恩德(Bangerter Endre)。 缓存游戏-在AES上引入基于访问的缓存攻击,以练习// IEEE安全与隐私研讨会的论文集。 2011。 490-505。
23. Irazoqui Gorka,Inci Mehmet。 等一下 对AES的快速跨VM攻击//计算机科学Bd中的讲义。 2014年。 299-319。
24. Yarom Yuval,Benger Naomi。 使用刷新+重新加载缓存侧通道攻击恢复OpenSSL ECDSA随机数//密码学ePrint存档,2014/140报告(2014)。
25. Gulmezoglu Berk,Inci Mehmet。 更快,更逼真的AES刷新+重载攻击//第六届国际建设性侧通道分析和安全设计研讨会的会议记录。 2015年。 111-126。
26. Irazoqui Gorka,Mehmet公司。 知道邻居:云中的加密库检测//隐私增强技术的论文集。 2015年。 25-40。
27. 彼得·彼得,格鲁斯·丹尼尔。 逆向工程英特尔DRAM寻址与开发 。 2015年。
28. Marforio Claudio,里兹多夫·休伯特。 分析现代智能手机上合谋应用程序之间的通信//第28届年度计算机安全应用程序会议论文集。 2012。 51-60。
29. 克莱门汀·莫里斯(Clementine Maurice),曼纽尔·韦伯(Manuel Webe)。 另一边的您好:通过云中的可靠缓存隐蔽通道进行SSH 。 2017。
30. Victor van der Veen,林多佛。 Drammer:移动平台上的确定性Rowhammer攻击// 2016年ACM SIGSAC计算机和通信安全会议论文集。 2016。 1675-1689。
31. Kaveh Razavi,本格拉斯。 Flip Feng Shui:敲打软件堆栈中的针//第25届USENIX安全研讨会的论文集。 2016。 1-18。
32. Ramya Jayaram Masti,Devendra Rai。 多核平台上的隐蔽通道//第24届USENIX安全研讨会论文集。 2015年。 865-880。
33. 安吉洛斯·奥科诺莫波洛斯。 信息隐藏中的漏洞//第25届USENIX安全研讨会论文集。 2016。 121-138。
34. 科恩·科宁(Koen Koning)。 无需隐藏:保护商品硬件上的安全区域//第十二届欧洲计算机系统会议论文集。 2017。 437-452。
35. 埃里克·博斯曼(Erik Bosman)。 Dedup Est Machina:将内存重复数据删除作为高级利用媒介// IEEE安全和隐私研讨会的论文集。 2016。 987-1004。
36. Evtyushkin,D.,Ponomarev,D.跳过ASLR:攻击分支预测变量以绕过ASLR //第49届国际微体系结构研讨会论文集。 2016。 1-13。
37. 丹尼尔·格鲁斯(Daniel Gruss),莫里兹·利普(Moritz Lipp)。 KASLR已死:KASLR万岁 。 2017。

Source: https://habr.com/ru/post/zh-CN455310/


All Articles