速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

深入了解 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:003429
用户头像

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

关注

评论

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

杂谈——程序人生我的大学

思想者杰克

20道阿里面试必问JVM面试专题(文末附送答案及JVM学习文档)

编程 程序员 JVM

pygame 小游戏前的准备工作要做足

梦想橡皮擦

11月日更

模块七作业

Geek_fc100d

「架构实战营」

阿里大牛教你如何用Dubbox+SpringBoot+Docker架构,实现双11项目

编程 程序员 springboot

大牛呕心力作——Kafka开发实战,助你徜徉大数据时代

redis 程序员 java编程

杂谈—程序人生第一份工作

思想者杰克

程序人生 新手指南 程序

北鲲云超算平台如何成为就生命科学云计算领域先行者?

北鲲云

布局人工智能,银行有的不只是智能客服

CECBC

面试必备!阿里内部Java面试八股文出炉,教科书式完美回答

Sakura

Java 程序员 架构 面试

前后端、多语言、跨云部署,全链路追踪到底有多难?

阿里巴巴中间件

阿里云 云原生 中间件 全链路追踪

Eureka 源码之客户端注册

悟空聊架构

Eureka 源码剖析 注册中心 悟空聊架构

十年数据库专家,呕心力作MySQL技术精粹,薪资直涨3K其实很轻松

数据库 程序员 MySQL 数据库

如何在实际场景中使用异常检测?阿里云Prometheus智能检测算子来了

阿里巴巴云原生

阿里云 云原生 Prometheus 异常检测

RadonDB ClickHouse on K8s 2.1.0 发布!

RadonDB

数据库 Kubernetes Clickhouse RadonDB

电商秒杀系统

伏波

架构

架构课毕业总结

伏波

架构

新消费:如何度过从0到1的破局期?

石云升

学习笔记 11月日更 新消费

【死磕Java并发】-----深入分析synchronized的实现原理

chenssy

死磕 Java 死磕 Java 并发

CRM WebClient UI的浏览器打印实现

汪子熙

JavaScript CRM SAP UI5 JavaScript图表库 11月日更

SAP CRM和C4C的内容管理(Content Management)

汪子熙

内容 CRM C4C 11月日更

区块链+农业开启智能化生产时代 解决世界性食品及粮食安全问题

CECBC

Bash 脚本简介

码语者

bash Shell

不敢想,做个博客竟如此简单!

程序员鱼皮

博客

央行数字货币即将破茧,一场大变局,震撼全球!

CECBC

软件架构治理 之 架构混沌之谜

码猿外

架构 软件架构治理

云知声 Atlas 超算平台: 基于 Fluid + Alluxio 的计算加速实践

阿里巴巴云原生

阿里云 云原生 实践 Fluid Alluxio

端开发技术——5个高效的Flutter开发工具

思想者杰克

2021年10月云主机性能评测报告

博睿数据

区块链的抽象与演进

CECBC

赋能优秀传统文化,区块链助力讲好中国故事

CECBC

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