写点什么

深入了解 Spectre 和 Meltdown

  • 2018-01-10
  • 本文字数:2363 字

    阅读完需:约 8 分钟

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

本文是“ Meltdown 和 Spectre 是什么及如何应对”的后续报道,将深入介绍:这两个漏洞的特点和潜在攻击,为什么在云服务提供商已经应用补丁的情况下还是要为云虚拟机打补丁,对性能及真实世界应用程序到底有什么影响,威胁建模的必要性,防病毒软件的作用,硬件如何受到影响以及长远看可能会带来什么变化。

Spectre Meltdown 是典型的旁路攻击 Zero 项目的博客上提供了详尽但复杂的说明。Raspberry Pi 创始人 Eben Upton 在博文中进行了简单明了的解释,说明为什么 Pi 不会受到影响,“我们在那种抽象环境里进行安全推断时会遇到抽象与现实之间存在轻微差别的情况,Meltdown 和 Spectre 就是这样的例子”。Graham Sutherland 在推特上说明了问题的本质:

副效应回滚有两个重要的例外:缓存和分支预测历史。这些通常都是无法回滚的,因为预测执行是一个性能特性,回滚缓存和 BHB 内容通常会损害性能。

这也就说明了为什么采用各种补丁处理这些问题会影响性能,因为它们的本质是确保缓存和分支预测历史在可能出现旁路攻击的地方可以回滚。Joe Fitz 将其比作图书馆里的图书,提供了一个完全非技术的解释。

Daniel Miessler 在文章“ Meltdown 和 Spectre 差异简介”中提供了一个有用的图表:

在名称选择上,针对Spectre 线索的补丁更细致多元。Meltdown 的处理相对简单(即使会有性能影响),而Spectre 是可能会在某个时候困扰我们的一类问题(可能发现更多)。

Google AWS Azure 都已经发表了声明,“我们的云(基本上)已经打好了补丁,现在轮到你们为虚拟机操作系统打补丁了”。遗憾的是,对于为什么要同时对虚拟机管理程序和虚拟机操作系统打补丁,他们没有提供多少细节。安全研究人员 Katie Moussouris 援引了 Robert O’Callahan博文中的一段话:“对于CPU 供应商和云供应商而言,重要的是准确地说明他们采取了什么防范措施,什么攻击他们无法防范以及他们期望下游客户负责解决哪些问题”。AWS 在声明中明确表示,“我们会保障客户的实例不会受到来自其他实例的威胁”。这意味着,VM 操作系统仍然需要打补丁来防止App 之间的攻击或者对特定VM 内核的攻击,来自 Amazon 的 Richard Harvey 对此进行了确认。

当应用程序进行系统调用让 OS 内核帮它们做某事时,这些问题补丁的性能影响就会显现出来。为此,Loopback 测试可以呈现最坏的情况。Intel汇总了来自Apple、Microsoft、Amazon 和Google 的公告,他们普遍对这些补丁的影响轻描淡写。Cloudflare 的CTO John Graham-Cumming 表示,“我们会继续测试#meltdown 和#spectre 的各种补丁,但对@Cloudflare 基础设施的影响似乎可以忽略”。同时,Aeron 创建者 Martin Thompson 指出,“在Windows 上打好Intel 的漏洞补丁后,Aeron 的良好表现让人意外。系统调用开销增加似乎会导致Aeron 批处理增加,进而提高了吞吐量。”,虽然这种情况会影响延时。然而,有人报告了更为严重的性能影响。Syslog_NG 布道师Peter Czanik发现,在Fedora 上,编译时间从4 分钟涨到了21 分钟(虽然还不如在OpenSUSE 上糟糕)。工程部门主管Ian Chan表示,“在我们生产环境的部分Kafka 代理[d2.xlarge] 上,其底层的AWS EC2 虚拟机管理程序(大概)已经应用了#Meltdown 补丁。CPU 增长在5% 到25% 之间。”

来自微软的 Jess Frazelle 表达了对于威胁建模的一个重要观点,“在以为天要塌下来之前先考虑一下威胁建模。这些Bug 需要访问机器。想一下,如果你运行着自己无法控制的代码……总而言之,那是你要关心的”。即使这些Bug 没有直接提供权限提升(如果可以找到root 密码,那可能就不严重)的方法,Spectre 或Meltdown 也可能被以其他的方式利用,而大多数服务器系统已经受到了影响。终端用户设备风险更大,因为几乎无处不在的Web 浏览器、广告中的JavaScript 等提供了一个攻击路径,这就是为什么除了升级虚拟机管理程序和操作系统外还要升级浏览器。

防病毒(AV)软件也有自己的工作要做。目前,微软正在进行检查,确保AV 供应商设置了注册表项,指明应用补丁是安全的,否则,AV 可能会试图访问与补丁冲突的内存,导致Windows 崩溃。一段时间以后,主机入侵防护系统( HIPS )(与 AV 有大量重叠)可能就可以发现利用 Spectre 的尝试。

Intel 已经向 OEM 厂商提供了固件升级包,包括CPU 微指令修复,不过显然,软件补丁的推出说明这些升级包本身并不够。那些升级包传播到终端用户还需要时间,而微软通过升级他们的Surface 硬件做了早期示范。 AMD 的公告对其 CPU 漏洞进行了低调处理,并指出这些升级包的性能影响几乎可以忽略。ARM提供了一个受影响的架构列表,其白皮书得到了广泛的补充,简明详尽,其中多半是与厂商无关的问题解释及补救措施。奇怪的是,用在iPhone 和iPad 中的基于ARM 的 Apple A 系列 CPU 受到了Meltdown 的影响,说明他们借用了x86 处理预测执行的方法。ARM 还介绍了可以针对他们的部分核心设计发起的“Variant 3a” Meltdown 攻击,并提供了验证性攻击代码。白皮书中描述的可以缓解攻击的CSDB barrier 操作已经在ARM CPU 中提供,这说明已经可以防范可能出现的此类攻击,但是只有真正出现了攻击,才能知道这一措施的开销。

长远来看,有两个关键点。第一,Spectre 的风险可能还会存在一段时间——至少要等到现有的硬件被替换掉,对于嵌入式系统而言可能还要数十年。修复下一代CPU 可能也为时已晚,至少会严重推迟他们的发布周期。这一系列的事件凸显出CPU保护环其实只是另一种抽象——是油漆线,是吹哨子的裁判,而不是水泥墙。也许,解决这些问题的CPU 不得不设计“硬墙(hard wall)”来达到防护目的。正如Joe Fitz 所言,“我们可能需要从头再来了”。

查看英文原文 A Deeper Dive into Spectre and Meltdown

2018-01-10 18:004120
用户头像

发布了 1008 篇内容, 共 442.5 次阅读, 收获喜欢 346 次。

关注

评论

发布
暂无评论
发现更多内容

LabVIEW保存、读取配置文件

不脱发的程序猿

LabVIEW 保存、读取配置文件

SpringCloud-Ribbon学习记录

昊运

SpringCloud

基于IOT物联网设计的智能家居系统-智慧门锁

DS小龙哥

物联网 智能门锁 3月月更

如何在 Go 代码中运行 C 语言代码

宇宙之一粟

C语言 Go 语言 3月月更

尤达 DDD 领域驱动设计思想 第三章作业(识别SmartRM系统货柜机免密支付购物场景里的聚合)

代廉洁

尤达DDD领域驱动设计思想

搜索引擎Elasticsearch简介实践

yuexin_tech

elasticsearch

ShardingSphere-Proxy分库分表(一)

神农写代码

分库分表

Linux网络管理工具:ifconfig,从入门到精通!

Ethereal

VUE创建视频流应用

devpoint

Vue Video播放器 3月月更

OpenHarmony 标准系统 HDF 框架之 GPIO 驱动开发

Anna

开发者 OpenHarmony 学习成长

「尚硅谷」java实战项目谷粒商城简介_idea_通用mapper

编程江湖

web前端Node安装步骤

编程江湖

利用Struts拦截器限制上传图片的格式和大小

喀拉峻

网络安全

最棒的 7 个 Laravel admin 后台管理系统推荐 - 卡拉云

蒋川

laravel vue admin

大型企业SAP集成WMS系统方案流程

源字节1号

开源 解决方案 后端技术

7 种最棒的 Vue Loading 加载动画组件测评与推荐 - 穷尽市面上所有加载动画效果(Vue loader)类型 - 卡拉云

蒋川

Vue vue admin vue loading

大厂面试官都不敢问的java线程的底层实现

刘祥

Java 线程

大数据使用Airflow实现简单的工作流调度

编程江湖

持续集成引擎篇:K8S与服务自动发布

Docker 架构 k8s 持续集成 jenkins

什么是 503 服务不可用错误?

Ethereal

《软件开发的201个原则》思考:2. 质量在每个人眼中都不同

非晓为骁

程序员 个人成长 开发

Redis线程模型

javaadu

redis 面试题

重学架构之微博评论高性能高可用计算架构

陈华英

架构实战营 #架构实战营

一步步教你开发鸿蒙系统应用,So Easy!

博文视点Broadview

LabVIEW设计自定义滚动条

不脱发的程序猿

LabVIEW 设计自定义滚动条

微博评论高性能高可用场景

风中奇缘

架构实战营 「架构实战营」

「架构实战营」微博评论高性能可用计算架构

hxb

「架构实战营」

扎“芯”了——CP探针卡的国产替代道阻且长

IC男奋斗史

芯片技术 芯片上游

架构学习【05】——“微博评论”高性能高可用计算架构

tiger

架构实战营

尚硅谷Flink(Java)新版视频教程发布

@零度

flink 大数据开发

大数据培训面试Flink八股文分享

@零度

flink 大数据开发

深入了解Spectre和Meltdown_安全_Chris Swan_InfoQ精选文章