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
Intel重大漏洞之Meltdown和Spectre的更多相关文章
- CPU特性漏洞测试(Meltdown and Spectre)
2018年1月4日,国外安全研究人员披露了名为"Meltdown"和"Spectre"两组CPU特性漏洞,该漏洞波及到近20年的Intel, AMD, Qual ...
- CPU Meltdown和Spectre漏洞分析
一.背景: 1月4日,国外爆出了整个一代处理器都存在的灾难性漏洞:Meltdown和Spectre. 几乎影响了全球20年内所有cpu处理器:这两个漏洞可以使攻击者通过利用并行运行进程的方式来破坏处理 ...
- 马上给Meltdown和Spectre漏洞打补丁
元旦之后的第一个工作日可谓是惊喜不断,4号就传来了 Google Project Zero 等团队和个人报告的 Meltdown 和 Spectre 内核漏洞的消息,首先简单介绍一下这两个内核漏洞. ...
- Intel CPU 漏洞分析
Intel CPU漏洞分析报告 预备知识 存储分级 由于计算机存储分级的特性(第一级:寄存器,第二级:高速缓存,第三级:内存,第四级:磁盘),每一级之间的访问速度差距高达数量级.所以处理器会将用到的数 ...
- intel:spectre&Meltdown侧信道攻击(一)
只要平时对安全领域感兴趣的读者肯定都听过spectre&Meltdown侧信道攻击,今天简单介绍一下这种攻击的原理( https://www.bilibili.com/video/av1814 ...
- Intel的CPU漏洞:Spectre
最近觉得越来越忙,写博客都没精力了.一定是太沉迷农药和刷即刻了…… 17年年底,18年年初,Intel被爆出了Meltdown(熔断)和Spectre(幽灵)漏洞.等Spectre攻击的POC出来以后 ...
- 为什么树莓派不会受到 Spectre 和 Meltdown 攻击
最近爆出来的 Intel CPU 的底层漏洞可谓是影响巨大,过去20年的电脑都可能会受影响.前几天 Raspberry Pi 的官方 Twitter(@Raspberry_Pi) 转推了这篇文章,通过 ...
- [CNBETA]Intel CPU底层漏洞事件完全详解:全球手机/电脑无一幸免[转帖]
http://www.cnbeta.com/articles/tech/685897.htm 由Intel CPU漏洞问题衍生出来的安全事件已经波及全球几乎所有的手机.电脑.云计算产品,ARM确认 C ...
- 关于Intel漏洞的学习
这几天报道了Intel的漏洞,这里学习一下并做个记录. 报告:https://spectreattack.com/spectre.pdf #include <stdio.h> #inclu ...
随机推荐
- Kaggle实战——点击率预估
https://blog.csdn.net/chengcheng1394/article/details/78940565 原创文章,转载请注明出处: http://blog.csdn.net/che ...
- 2018-2019-2 网络对抗技术 20165318 Exp 9 Web安全基础
2018-2019-2 网络对抗技术 20165318 Exp 9 Web安全基础 基础问题回答 实践过程记录 WebGoat安装 SQL注入攻击 1.命令注入(Command Injection) ...
- CentOS安装Hive
1.环境和软件准备: hive版本:apache-hive-2.3.6-bin.tar.gz,下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/hive ...
- 记录一次在生成数据库服务器上出现The timeout period elapsed prior to completion of the operation or the server is not responding.和Exception has been thrown by the target of an invocation的解决办法
记一次查询超时的解决方案The timeout period elapsed...... https://www.cnblogs.com/wyt007/p/9274613.html Exception ...
- ShowDoc 软件开发团队接口文档管理利器
ShowDoc是一个非常适合IT团队的在线API文档.技术文档工具.你可以使用Showdoc来编写在线API文档.技术文档.数据字典.在线手册. 这里介绍 Showdoc 这款开源(免费)文档管理系统 ...
- 依赖注入之unity(winform方式)
依赖注入之unity(winform方式) 要讲unity就必须先了解DI和IOC及DIP,如下链接提供DI和IOC的基础:https://www.cnblogs.com/zlp520/p/12015 ...
- CSS3手机端字体不能小于12号的方法
CSS3手机端字体不能小于12号的方法 <pre> .xiaoyu12fontsize{ -webkit-transform-origin: 0% 0%; -webkit-transfor ...
- MySQL常见的应用异常记录
>>Error Code: 1045. Access denied for user 'test'@'%' (using password: YES) 使用MySQL的select * i ...
- [转帖]AWR报告参数:DB TIME和DB CPU
AWR报告参数:DB TIME和DB CPU http://blog.itpub.net/12679300/viewspace-1182396/ 一.前言:AWR报告是了解ORACLE运行的一个重要报 ...
- Java计算工作日的工具类
有时候需要根据工作日计算指定的日期,也就是需要排除周六日. 1. 初版代码如下: package cn.xm.exam.utils; import java.util.Calendar; impor ...