研究人员已设计出了一种攻击方法,可以利用现代iOS和macOS设备搭载的A系列和M系列CPU中的侧信道漏洞,迫使苹果的Safari浏览器泄露密码、Gmail邮件内容及其他秘密信息。
学术研究人员将这种攻击命名为“iLeakage”,这是一种切实可行的攻击,只需极少的物理资源。然而,它确实需要对苹果硬件进行深入的逆向工程,还需要在利用侧信道(side channel)这类漏洞方面拥有丰富的专业知识。
侧信道可以根据电磁辐射、数据缓存或目标系统的其他表现形式中留下的线索泄露秘密信息。这里的侧信道是推测执行,这是现代CPU中提升性能的一项功能,近年来却成为了一大批攻击的来源,几乎源源不断的漏洞变种使得芯片制造商(主要是英特尔,其次是AMD)竞相制定缓解措施。
利用苹果芯片上的WebKit
研究人员将iLeakage实施成了一个网站,被易受攻击的macOS或iOS设备访问时,该网站使用JavaScript秘密打开攻击者选择的不同网站,并恢复在弹出窗口中渲染/呈现的网站内容。研究人员成功地利用iLeakage恢复了YouTube的观看历史内容、Gmail收件箱的内容(目标登录期间)以及由凭据管理器自动填充的密码。一旦被访问,iLeakage网站需要大约5分钟来分析目标机器,另外平均需要大约30秒来提取一个512位的秘密信息,比如64个字符的字符串。
图1. 上图:Gmail的Web视图中显示的电子邮件。下图:恢复的发件人地址、主题和内容。
研究人员在相关信息网站上写道:“我们展示了攻击者如何诱使Safari呈现任意网页,随后使用推测执行恢复网页中存在的敏感信息。特别是,我们演示了Safari如何允许恶意网页从流行的高价值目标中恢复秘密信息,比如Gmail收件箱内容。最后,我们演示了密码的恢复,以防这些密码被凭据管理器自动填充。”
图2. 上图:谷歌的帐户页面被密码管理器自动填写,其中密码是googlepassword。下图:泄露的页面数据,凭据高亮显示。
虽然iLeakage只在目标运行Safari时攻击Mac,但iPhone和iPad在运行任何浏览器时都可能受到攻击,因为它们都基于苹果的WebKit浏览器引擎。
苹果代表声称,iLeaka已意识到这个漏洞,计划在即将发布的软件版本中解决这个问题,没有指定CVE编号来跟踪该漏洞。
独特的WebKit属性是这种攻击的一个关键因素。A系列和M系列芯片(苹果分别为iOS和macOS设备设计的第一代CPU)是另一种设计,这两种芯片都含有防护措施,旨在防止推测执行攻击,实施这些防护措施的方式存在缺陷,最终让iLeakage得以变成现实。
推测执行:不断捣鼓的黑客手法
2018年初,两个相互独立的研究团队披露了两种攻击,一种名为Spectre,另一种名为Meltdown,两者都能够通过探索推测执行这项提升性能的功能中一个新发现的侧信道来恢复机密信息,且这项功能内置在几乎所有的现代CPU中。将数据从主系统内存移到CPU中很耗费时间,为了缩短等待时间,现代CPU在所需数据可用时立即执行指令,而不是按顺序执行。
这种乱序模式的一个关键要素是预测CPU可能经过的路径,如果预测正确,任务就会比没有预测的情况下更快地完成;如果不正确,CPU将放弃错误预测的路径,采用一条新的正确的路径。Spectre和Meltdown的研究人员发现,无法恢复微架构层面的某些工件,包括缓存和预测器状态。这使得研究人员能够设计出攻击手法,诱骗英特尔和AMD的CPU错误地预测敏感指令,将秘密信息从一个应用程序泄露到另一个独立的、不相关的应用程序中,这严重突破了核心安全边界。
在此后的几年里,CPU制造商和软件开发商想出了许多方法来缓解推测执行攻击。一个关键的缓解措施是限制浏览器或其他应用程序测量CPU执行特定操作所需的精确时间的功能。在浏览器中,更多的缓解措施以名为压缩35位寻址和值中毒的防御形式出现。
图3. 推测类型混淆小工具的伪代码。
iLeakage代表了几项突破。首先,它能够利用类型混淆漏洞,在搭载A系列和M系列芯片的Safari浏览器上击败这些防御措施。其次,它是一种不依赖时间的变种,而是依赖所谓的竞态条件。第三个关键因素是WebKit的独特功能:使用常见的JavaScript方法window.open,将来自不同域的网站整合到同一个渲染器进程中。
图4. 该图概述了基于竞争条件的小工具如何运行以区分缓存命中和缓存未命中。
研究人员在信息网站上写道:为了构建iLeakage,我们先对苹果 Silicon CPU上的缓存拓扑结构进行了逆向工程分析。然后我们使用一个新的基于推测的小工具克服了苹果的计时器限制,我们因而可以区分单个缓存命中和缓存未命中,尽管只能访问低分辨率计时器。我们还演示了这个小工具的一个变种,它不使用计时器,而是利用竞争条件,在使用基于推测的小工具构建驱逐集(eviction set)之后,我们进而分析Safari的侧信道弹性。这里,我们绕过了Safari的35位寻址和值中毒对策,创建了一个可以在Safari的页面呈现过程中推测读取和泄漏任何64位指针的原语。再结合一种将来自不同域的网站整合到同一地址空间的新方法,我们能够发动一种泄漏敏感信息的类似推测的混淆攻击。
研究人员在一篇附带的研究论文中这样描述这种不受时间影响的变种:我们将所有上述构造的原语组合到一个不受时间影响的Spectre v1小工具概念验证(PoC)。大体上而言,我们通过以下方法来做到这一点,即把泄露所推测的秘密信息的基于缓存时间的方法换成不受时间影响地区分缓存未命中和缓存命中的小工具。在这里,我们展示了我们的攻击在Safari、Firefox和Tor上拥有近乎完美的准确性。
万事俱备
攻击要想成功,一台易受攻击的计算机必须先访问iLeakage网站,对于涉及YouTube、Gmail或任何其他特定Web资产的攻击,用户应该在攻击网站打开的同时登录到其帐户。如前所述,攻击者网站需要花大约5分钟来探测访问设备。然后,使用window.open JavaScript方法,iLeakage可以导致浏览器打开任何其他网站,开始以每秒24位到34位的速度窃取某些数据。
正如研究论文解释的那样:
我们先回顾一下,虽然Safari通常遵循严格的每个选项卡进程模式,但由window.open函数打开的页面与父页面共享渲染/呈现过程。因此,我们创建了一个将window.open绑定到onmouseover事件侦听器的攻击者页面,以便我们在我们的地址空间打开任何网页,只要目标的鼠标光标在页面上。
我们注意到,即使目标关闭了打开的页面,内存中的内容也不会立即被清除,从而使我们的攻击得以继续泄露秘密信息。最后,由于window.open执行整合,无论父网页和打开网页的来源是什么,我们将我们攻击者的网页托管在一个非公开访问的Web服务器上,同时使用window.open整合来自其他域的页面。
许多目标很可能会识别出iLeakage生成的弹出窗口并关闭它。即使这样,攻击也会得逞,因为内容在内存中仍然完好无损,使iLeakage得以继续泄露秘密信息。
可以恢复的数据类型包括:
•由凭据管理器自动填写的密码
•Gmail收件箱内容
•YouTube观看历史记录
iLeakage是一种切实可行的攻击,只需要很少的物理资源就可以实施,最大的挑战是需要高超的技术专长。攻击者不仅要有利用推测执行漏洞方面的多年经验,还要对A系列和M系列芯片进行全面的逆向工程处理,以深入了解它们含有的侧信道。没有迹象表明这个漏洞以前被发现过,更不用说在外面被大肆利用了,这意味着这个漏洞很快被用于实际攻击的可能性很小。
苹果计划推出的补丁,很可能会在iLeakage式的攻击网站变得切实可行之前,早早实施到位。