导语:近日,我在参加EkoParty大会时,做了一个关于Mac 电脑的EFI固件方面的一些最新研究的演讲。为了配合本次的演讲,我还专门写了了一篇技术论文,详细介绍了我在分析过程中收集到的数据。 译者注:EkoParty大会一开始只是阿根廷黑客们的一个
近日,我在参加EkoParty大会时,做了一个关于Mac 电脑的EFI固件方面的一些最新研究的演讲。为了配合本次的演讲,我还专门写了了一篇技术论文,详细介绍了我在分析过程中收集到的数据。
译者注:EkoParty大会一开始只是阿根廷黑客们的一个小型聚会,后来发展成为一个公开的且有很过公司参加的安全技术大会。
当然除了发布论文之外,我还公开了一些实用的工具和API,以帮助Mac用户和管理员更好的对利用EFI固件的Mac系统运行的状态和潜在的问题进行及时鉴别。这篇文章总结了我在分析过程中发现的一些主要问题,同时本文还可以技术论文的入门介绍。
在过去的几个月里,我一直在研究Mac固件的问题,比如厂商在其系统中所提供的安全支持与用户后来安装的防护软件之间差别。固件这个术语涵盖了当前系统中的各个方面,所以为了达到研究目的,我仅仅关注了对EFI固件的安全支持。EFI是一个预引导(Pre-Boot)环境,简而言之,它取代了自上世纪70年代中后期以来常见的BIOS环境。你可以点此详细了解BIOS和EFI的各方面比对。
为什么要特别关注EFI?
在当前的系统中,EFI环境对安全保护起着至关重要的作用。对于攻击者来说,攻破EFI就意味着他们能够获得特权级2(privilege level ring -2)的权限级别。在保护模式下提供4级特权级PL(Privilege Level),呈现环形保护(ring-protection)结构。最内的环具有PL=0的最高特权级,依内向外逐层PL值增加,特权级降低。最外的环PL=3,特权级最低。
简而言之,对EFI层的攻击意味着攻击者可以获得特权级2到特权级3的系统控制权限,这样你就能够规避更高级别(PL=0,PL=1)上的安全风险,包括操作系统和应用程序的安全机制。
虽然对于用户来说,EFI环境能够规避更高级别的安全风险,但从攻击者的角度来说,EFI还会使攻击者变得非常隐秘和难以检测,毕竟操作系统是不会告诉用户关于EFI状态情况的。除此之外,EFI环境也使攻击者很难删除或安装一个新的操作系统,甚至连完全覆盖硬盘也无法做到。从Vault 7泄露文档可以发现,CIA对EFI boot/ rootkit已经开始了攻击利用,比如名为“Sonic Screwdriver”的工具就是利用了多年前在安全会议上公开讨论的漏洞,特工使用“Sonic Screwdriver”就能在Mac笔记本或台式机开机启动的时候插入外部设备执行代码,最终绕过用户设置的密码或某些安全功能。如果你有兴趣阅读更多关于EFI攻击和以前发现的漏洞,请点此查看。
由于苹果公司在从硬件、固件、操作系统再到应用软件都是一个封闭的,所以我的研究主要集中在Mac生态系统,另外封闭的生态系统使得收集和分析相关数据也变
得相对简单。不过,我相信我发现的问题,不仅仅是对苹果,应该对所有的EFI固件厂商都有帮助。
分析方法的确定
我的分析是基于我以前所收集的数据,分析主要着重于以下6个方面:
1.我分析了Mac在过去三年里所发布的全部更新,以便对EFI更新进行一个有序的归类,经过归类,我发现大多数EFI更新包含在苹果发布的操作系统和安全更新中,这样我就可以构建一个Mac操作系统架构数据集以及EFI预期发布的版本。
2.然后我收集了各种操作系统版本,版本号,Mac版本以及EFI固件版本,以上这些数据都是从73000多个真实用户的Mac系统收集到的,且这些用户都处于多个行业,这样我就能全面了解苹果的EFI环境在实际工作中使用的情况。
3.一旦我收集到了足够的数据,我就能对Mac的EFI环境中所提供的安全支持级别的相关问题进行全面研究。
4.通过对两个数据集(1和2)之间的比较和观察,我能发现的其中的一些差异,比如,可以看到Mac的EFI的预期状态与实际使用系统中所观察到的状态之间的偏差。
5.对于那些已经被苹果官方承认并发布了补丁的EFI漏洞来说,我会将Mac版本和提供EFI更新的操作系统版本关联起来。
6.我还花时间逆向分析了苹果公司的EFI固件更新工具的运行,选择和应用。
虽然2015年以后,苹果已经发布了大多数操作系统和安全更新中所包含的EFI更新,但利用差别分析(differential analysis)的方法却可以让苹果随时监测用户需要进行的EFI固件更新,而且当用户更新到最新版本的操作系统时,更新也将自动完成,且是在不干扰用户运行的情况下运行的。
苹果将EFI更新与操作系统和安全更新捆绑在一起的另一个好处是,为我提供了一个在Mac的特定版本、系统版本号与EFI版本更新之间的关联,这些关联都是以操作系统版本为基础的。另外,这些关联为我提供了一个有意思的提示,即某个特定的操作系统版本和Mac版本,对应一个固定的EFI版本。这样,我就可以把此发现应用到现实环境中,看看目前系统运行的EFI是否是最新的版本。
分析成果
根据我的分析方法,我发现与如何支持操作系统和软件的安全性相比,苹果在如何为其EFI固件提供安全支持方面显然不是太积极。这些表现的形式多种多样,但却截然不同。下面我将从以下5个角度分析:
1.按照我的分析方法,我认为实际运行中的某个Mac系统上运行的应该是某个EFI版本,但根据监测,实际情况和理想情况之间却存在着惊人的差异。当管理员和用户安装最新操作系统或安全更新时,出于某种原因,EFI却没有更新。还有就是,按说这种情况下,系统应该提示用户EFI固件应该进行升级,但实际却是没有任何通知。这意味着用户和管理员常常忽视了对他们系统所应该的EFI版本进行升级。
2.为EFI固件提供的安全支持依赖于Mac的硬件版本,所以就会出现一些Mac已经收到了EFI更新,有些是在发现了特定的漏洞后才收到更新,有些则从未收到过EFI的更新。
3.为EFI固件提供的安全支持还取决于系统运行的操作系统的版本,在实践中,我发现在Mac版本相同的情况下,一个运行OS X 10.11与一个运行OS 10.12的EFI更新竟然截然不同。这令我非常困惑,如果系统进行过全面的修补和更新,那为什么只对软件安全进行更新,为什么对对应的EFI固件却置之不理,如果是这样的话,在固件很脆弱的情况下,软件再安全又有什么用呢?
4. 在我分析苹果公司承认的主要的EFI漏洞时,发现有很多mac电脑尽管会不断收到软件安全更新,但并没有更新到其应对应的EFI。通过分析,我发现,终端用户很难确定这些更新通知是针对某个特定版本的mac系统还是针对所有的用户,特别是在操作系统或安全更新中,以及某个特定版本EFI的安全更新时。
5.在分析中,我还发现了其他与EFI固件的相关的安全漏洞,比如,在2017年初发布的安全更新中,竟包含了2016年的一个过期的EFI固件更新,我想可能是工作人员疏忽了。还有就是在没有收到更新的情况下, EFI竟被更新了。另外的一些问题都是EFI固件组件的质量问题。
EFI固件问题的影响
虽然以上这些听上去都很有趣,但大多数用户感兴趣的是“这对我意味着什么?”,下面我就从三个方面说说EFI固件问题对大多数Mac用户的影响:
1.如果你正在运行的macOS /OS X版本比最新的主要版本(在撰写本文时是10.12 Sierra版本)更高,那么你的EFI固件可能还没有到更新的时候,所以你没有收到更新通知是很正常的。尽管从理论上讲OS X 10.11(El Capitan)和10.10(Yosemite)应该收到苹果的安全更新,但实际上EFI固件更新却完全不存在,这意味着出现与EFI固件相关的漏洞是很正常的。
2.即使你正在运行最新版本的macOS并安装了最新发布的补丁,但根据我的调查,你正在运行的EFI固件可能不是最新的版本。
3.如果你正在运行下面列出的16个Mac版本中的一个,那么根据我的分析,你的系统是不会收到任何EFI固件更新通知的。
根据以上的分析, Mac的EFI固件简直是漏洞百出,随时可能被黑客攻击。
缓解措施
我的基本建议如下:
1.检查你的系统是否运行最新版本的EFI,作为此次演讲的一部分,我提供了一些新的工具来帮助你进行检测。你可以在这里它们的信息。
2.如有可能,更新到最新版本的操作系统——10.12.6,这不仅会给你让你的EFI固件升级到最新版本,而且还能确保你对已知的软件安全问题进行修补。
3.如果你不能更新到10.12.6版本,或者因为你的硬件不支持10.12.6,或者你需要运行一个老版本来进行其它软件的兼容,那我可以告诉你,你无法运行最新的EFI固件。
4.检查你的Mac是否是在一个没有收到EFI更新的硬件列表中运行。如果是,你可能不能运行最新的EFI固件。
5.如果你不能以某种原因运行最新的EFI固件,使用我提供的工具EFIgy,来了解你当前版本的EFI是否暴露于当前已知的EFI漏洞中。
在看完本文后,我建议你在使用你的mac前,先对你的EFI固件风险进行一下检测。
如果你的Mac属于上述不能更新的情况,那么我建议你提前考虑一下EFI漏洞所造成的风险,如果你要问我是否有解决办法,我可以告诉目前我还找不到应对之策。
虽然没有彻底的解决之道,但我还是有一些笨办法来缓解可能出现的EFI漏洞所造成的风险,比如将你的工作转移到EFI攻击无法进行的mac上,如果你是公司的安全管理员且你的公司的工作都是依赖mac的,我建议赶紧备份一份数据。根据目前的分析,
对EFI的攻击已经成为攻击者常用的手段之一了,不过他们的目标是特定的高价值目标。对EFI的攻击经常会在国家之间的攻击和工业攻击中见到。如果你是一个拥个人用户,我认为你成为攻击目标的可能性很小。
就我所知,目前还没有任何EFI漏洞被开发成工具包、恶意软件或勒索软件。但这并不是说未来可能不会发生,随着技术的不断成熟和黑色产业链的发展, EFI攻击迟早会出现。试想,有哪个黑客不爱用高水平的隐身和持久性攻击工具呢?
结论
这篇文章只是大概的介绍了一些我对EFI固件的研究。如果你想了解更多细节,请下载我的研究论文《来自苹果EFI安全的实证研究》。除此之外,我还将在今年的Ekoparty会议上展示我的发现。
总的来说,我的研究意图是强调在你的技术环境中确保系统所有组件的安全,比如预启动固件、操作系统和应用程序软件。通过收集的数据,我得出了一些令人惊讶的结论,即与软件安全相比,固件安全着实太差。
目前还见不到苹果对EFI固件安全所做的应该有的努力,希望我的研究可以让苹果公司在未来加强EFI的安全性,以避免大规模的EFI威胁事件发生。