Intel重大漏洞之Meltdown和Spectre
史上最大漏洞危机:影响所有 iPhone、Android、PC 设备,修复困难重重
近日,英特尔的日子可并不好过。
作为全球知名芯片制造商,任何有关英特尔芯片漏洞的问题都会导致全球上百万设备遭受牵连。
这一次,“Spectre”和“Meltdown”的两个安全漏洞给了其狠狠一记重拳。
截止目前,包括 Linux、Android、微软 Windows 和苹果 OS X 操作系统,甚至主要的云计算供应商 AWS、Azure、谷歌云等均受此影响。国内腾讯云、阿里云也先后对此事进行了紧急回应。无疑,这一漏洞将波及 1995 年以来所有使用英特尔芯片的硬件设备,目前众多科技公司研究团队正加紧对这一漏洞的修补。
漏洞的罪魁祸首
实际上,这个漏洞是几个月前谷歌公司 Project Zero 安全团队发现的。根据其在1月3日的官方博文,英特尔芯片使用了一种叫做推测性执行(speculative execution)的方法,从而导致了这一安全漏洞。
简言之,为了提高性能,处理器会根据被认为可能是真实的假设,选择推测性执行指令。在分支指令发出后,相比传统处理器,具有预测性执行能力的处理器则会验证这些假设,如果假设有效,那么执行继续,如果无效,则解除执行,并根据实际情况开始正确的执行路径。但事实上,这种方式并不安全,因为通过寻找或构建一些指令,黑客就能在处理器回滚的时间窗口里进行一系列攻击。
这也就造成了利用漏洞能允许应用软件未经任何权限便可读取到英特尔处理器内核的信息,进而可能导致攻击者获取到用户设备上的一些敏感数据,如密码、登录密钥、用户的私人照片、邮件甚至是商业秘密文件。
不过,从目前外媒报道、厂商公布和技术人员测试的众多信息来看,除了英特尔,ARM、AMD等其他处理器厂商也存在以上安全漏洞问题。
漏洞危害
对多租户下的云服务体系影响比较大,攻击者在云平台通过本地的普通的访问权限就可以读取云平台的敏感信息,为进一步获得更高的权限和获得机密数据提供了可能。
该漏洞的危害还在于攻击者可以通过该漏洞远程发起攻击,当目标设备访问远程服务器的网页时,攻击者可以通过恶意js脚本来获得目标设备上的敏感信息,如保存在内存中的密码Cookie等。
这些缺陷几乎影响到所有电脑和移动设备,但不一下是严重风险,目前还没有证据说明,黑客已经撑握利用这些缺陷的方法。
一些主流的杀毒软件程序与补丁程序不兼容,从而会导致台式或冬笔记本电脑停止响应并显示“蓝屏死机”。
杀毒软件厂商对此反馈修改其产品,更好的与更新后的操作系统兼容。微软近期在博客中称,只会向那些杀毒软件提供商已向其证实安全补丁不会导致客户电脑崩溃的Windows用户提供补丁更新,因此,Windows自动更新机制不会推送该补丁,如果用户需要应用相关补丁的话需做好充分的测试及回退措施。
Spectre没有简单的解决方案,可许要重新设计处理器;Meltdown解决这个问题所需要的软件补丁可能会使计算机运行速度下降30%。
修复漏洞的难度
截止到目前,还未有企业声明发现利用芯片漏洞的黑客攻击证据,不过,包括微软、苹果、谷歌在内的多家公司纷纷针对这一漏洞做出了回应,并发布了相关声明。
阿里移动安全专家蒸米、白小龙表示,虽然是硬件漏洞,但是在系统或软件层面上通过牺牲性能的方法还是可以进行修补的,比如苹果即是如此。在其近日发表的文章《性能 VS 安全?CPU 芯片漏洞攻击实战(1) - 破解 macOS KASLR 篇》中,作者基于英特尔芯片漏洞如何破解macOS KASLR攻击方面进行了阐述(注:以下引用已获作者授权):
Intel 的CPU 有五个软件预取指令:prefetcht0,prefetcht1,prefetcht2,prefetchnta 和 prefetchw。这些指令作用是提示 CPU,告诉一个特定的内存位置可能很快被访问。然而,Intel 的手册中却提到,预取“未映射到物理页面的地址”会导致不确定的性能损失。因此,可以通过 CPU 预读指令执行的时间长短来判断这个地址有没有被映射到物理页面上。
KASLR 的原理是在内核的基址上增加一个 slide,让攻击者无法猜测内核在内存中的位置。但是内核肯定是被映射到物理页面上的,因此可以使用预取指令去遍历内核可能的起始地址,如果执行预取指令的时间突然变短,就说明猜中了内核的起始地址。
作者在网上成功找到了破解macOS 10.13 KASLR的POC,并做了一点简单的修改:https://pastebin.com/GSfJY72J。其中关键代码如下:
这是一段汇编,参数会传入想要预取的地址,然后利用 rdtscp 和 rdtscp 来统计指令执行的时间,并返回。然后,从内核可能的起始地址开始,不断执行这段汇编代码,直到找到内核的起始地址为止。
可以看到在 0x15c00000 这一行,指令执行的时间明显缩短了。因此,可以猜出 Kernel Side 为 0x15c00000。
根据某内部漏洞修复人员在twitter上的回复,苹果已经在macOS 10.13.2上对此类芯片漏洞进行了修复,采用了牺牲性能的针对用户态使用两次映射的方式来解决该问题。并号称10.13.3上有更好的解决方案。另外iOS的A*系列芯片暂时还不受这类漏洞的影响。
总结
经此事件,广大开发者们更需及时关注补丁发布动态,对系统进行更新并应用适合的固件更新,有效防止自己的设备受到攻击。
已经发布的补丁更新参考链接:
Linux:
http://appleinsider.com/articles/18/01/03/apple-has-already-partially-implemented-fix-in-macos-for-kpti-intel-cpu-security-flaw
Android:
https://source.android.com/security/bulletin/2018-01-01
Microsoft:
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/ADV180002
Amazon:
https://aws.amazon.com/de/security/security-bulletins/AWS-2018-013/
ARM:
https://developer.arm.com/support/security-update
Google:
https://googleprojectzero.blogspot.co.at/2018/01/reading-privileged-memory-with-side.html
Intel:
https://newsroom.intel.com/news/intel-responds-to-security-research-findings/
Red Hat:
https://access.redhat.com/security/vulnerabilities/speculativeexecution
Nvidia:
https://forums.geforce.com/default/topic/1033210/nvidias-response-to-speculative-side-channels-cve-2017-5753-cve-2017-5715-and-cve-2017-5754/
Xen:
https://xenbits.xen.org/xsa/advisory-254.html
参考资料:
-
https://weibo.com/ttarticle/p/show?id=2309404192549521743410
-
http://www.antiy.com/response/Meltdown.html
-
https://www.reuters.com/article/us-cyber-intel-researcher/how-a-researcher-hacked-his-own-computer-and-found-worst-chip-flaw-idUSKBN1ET1ZR
-
http://www.thepaper.cn/newsDetail_forward_1938103
————— 推荐阅读 —————
本文转自CSDN博主的一片文章,地址为http://mp.weixin.qq.com/s/9bIKv5K-UIvWG6XJ7KVUUQ