GMTC北京站两周后开幕,58个议题全部上线,点击查看 了解详情
写点什么

Meltdown 和 Spectre 是什么以及如何应对

2018 年 1 月 14 日

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

本文讨论最新的 CPU 漏洞,Meltdown 和 Spectre,以及当下的解决方案。

Google Project Zero 以及一些研究人员发现了两个硬件漏洞并提供了详细信息,这两个漏洞会对大部分的桌面和移动设备造成安全影响。这两个漏洞被称为 Meltdown Spectre ,它们会利用 CPU 的“预测执行(speculative execution)”使得非相关进程也能访问虚拟内存,从而导致数据可能被并无访问权限的进程读取。这是一个影响Intel、AMD 和ARM 众多CPU 型号的底层硬件问题。Google 于去年6 月向各处理器制造商报告了这个问题。

Meltdown 使得一个进程可以访问操作系统的部分内核内存,从而暴露敏感数据。Spectre 使得一个进程能够访问另一个进程的内存空间,造成数据泄露。Meltdown 会影响支持乱序执行(out-of-order execution)的 Intel 处理器,这可能包括自 1995 年以来的各种 CPU 型号。研究人员在 2011 年以来的几种 Intel 处理器上运行了测试。ARM 的一些处理器会受到这种漏洞的变体的影响,使得一些 CPU 注册表能被其他非相关进程访问。AMD 处理器似乎并不受 Meltdown 影响。但是 Spectre 影响所有的主流 CPU,包括 AMD、ARM 和 Intel。如果想了解更多关于这些漏洞的详细信息以及如何利用这些漏洞,我们建议你去阅读 Google Project Zero 的这篇文章,以及Meltdown( PDF )和 Spectre( PDF )研究论文。

这些漏洞相当严重。大多数市面上的操作系统都受到了影响,包括 Linux、MacOS 和 Windows。Android 以及 Apple 的 iOS 系统和 tvOS(但是没有 watchOS)也受到了影响。 CERT 提到,真正的解决方案是将系统的 CPU 替换为没有漏洞的 CPU。鉴于这个方案不具备实际可操作性,软件解决方案已经就位甚至已经生效。不过问题是,这种修复似乎有性能问题,有的造成的性能下降甚至高达30% 。Intel 声称性能下降“取决于工作负载”,“对于普通的电脑用户,应该没有什么大影响并且会随着时间改善。”

Intel 还提到,它已经向操作系统制造商提供了软件和固件修复。AMD 则发布了安全公告,概述了这些漏洞,哪些漏洞会对使用它们处理器的系统造成什么样的影响,会向操作系统供应商提供哪些修复,以及性能会受到一些影响。ARM 也发布了自己的公告,介绍了哪些处理器会被影响以及如何处理。

Microsoft 将在下周通过标准更新机制发布更新。Linux 已经发布了可用的内核补丁(32-bit),针对 64-bit/ARM 的补丁仍在开发中。Apple 则在声明中表示,已经为 iOS 11.2、macOS 10.13.2 以及 tvOS 11.2 发布了针对 Meltdown 的更新,以及:

我们做了一些公开的基准测试,不管是 GeekBench 4 的基准测试还是像 Speedometer、JetStream 和 ARES-6 一类通用的 Web 浏览器基准测试都表明,2017 年 12 月的更新并没有给 macOS 和 iOS 带来多少性能损失。

至于 Spectre,Apple 则表示:

关于这些技术的分析表明,即使是在 Mac 或 iOS 设备上本地运行的应用程序,这些漏洞也极难被利用,但是却可能通过运行在 Web 浏览器上的 JavaScript 利用这些漏洞。Apple 将在未来几天发布针对 macOS 和 iOS 上 Safari 浏览器的更新,以应对这些漏洞利用技术。我们对即将发布的 Safari 优化做了一些测试,Speedometer 和 ARES-6 测试结果显示并没有多少性能影响,而 JetStream 基准测试则显示有 2.5% 的性能降低。我们将继续在操作系统中针对 Spectre 技术开发和测试更多的优化,并在之后的 iOS、macOS、tvOS 和 watchOS 更新中发布。

再来说云供应商。 Amazon 宣称运行在他们系统里的大多数实例都得到了保护,另一些则会很快得到处理。Microsoft 也声称 Azure 上的大多数客户都受到了保护,其中有一些还收到了通知,他们的实例会在 1 月 10 号重启。 Google 则表示,他们已经对他们的云系统打了补丁,只有那些使用自己的镜像的客户才需要更新。Xen 为它们的系统管理程序发布了补丁。在应用程序层面上,Google 建议用户使用 Chrome 里的网站隔离功能 Firefox 也有这个功能。Microsoft 则发布了一个补丁( KB4056890 ),帮助在 Edge 和 IE 11 上避开漏洞。 2018 年 1 月的 Android 安全公告则提供了 Google 准备如何在它们的移动操作系统上处理这个问题的细节。他们声称合作方已经在一个月之前就得到了通知,AOSP 将会在近期打补丁。

Google 还提到,他们还没有发现任何相关的漏洞利用存在,但是未经验证的代码可能会利用这些漏洞。

查看英文原文: Meltdown and Spectre: What They Are and How to Deal with Them

2018 年 1 月 14 日 18:001397

评论

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

【架构师训练营-作业-1】食堂就餐卡系统设计

小动物

系统设计 极客大学架构师训练营 作业

【ARTS打卡】Week02

Rex

因为 MongoDB 没入门,我丢了一份实习工作

沉默王二

mongodb

人人都是产品经理

二鱼先生

产品经理 个人品牌 职场成长 产品思维

架构文档

陈皮

架构 极客大学架构师训练营

优秀架构师具备的能力

阿飞

极客大学架构师训练营

《OKR工作法》读书笔记

大饼土博

读书笔记 管理 OKR

软件架构第一章总结

itrickzhang

架构师训练营第一周学习总结

王鑫龙

极客大学架构师训练营

UML练习1 食堂就餐卡系统设计「架构师训练营」

Young

不可不知的 7 个 JDK 命令

武培轩

Java 程序员 jdk 后端 JVM

Flink源码分析之-如何保存 offset

shengjk1

架构师课程第一周作业

杉松壁

教你动手写UDP协议栈

Rice嵌入式开发技术分享

TCP udp 协议栈

程序员的晚餐 | 6 月 5 日 爆炒鱿鱼

清远

美食

架构师训练营-命题作业1

水边

极客大学架构师训练营

架构师训练营-每周学习总结1

水边

极客大学架构师训练营

Flink源码分析之Flink 自定义source、sink 是如何起作用的

shengjk1

flink flink源码 flink源码分析 flink自定义source flink自定义sink

食堂就餐卡系统设计-uml练习

森林

利其器

宋胖子

IDEA

Flink源码分析之FlinkConsumer是如何保证一个partition对应一个thread的

shengjk1

flink flink 消费 kafka 实时计算 flink源码分析

repo 导出本地 git tag 给他人

zqb-all

git

Flink源码分析之Flink startupMode是如何起作用的

shengjk1

flink flink 消费 kafak 实时计算 flink源码 flink源码分析

Java 25周年:波澜壮阔的25年

北风

「Java 25周年」

程序员摆地摊?你别痴心妄想了,还不如当「在地青年」呢

非著名程序员

程序员 提升认知 职业规划 认知提升

2020年6月7日 接口、lambda表达式与内部类

瑞克与莫迪

如何用一台 MacBook 创造高额年化收益 | ETH2.0 Staking 教程

陈东泽 EuryChen

区块链 Ethereum

[ARTS打卡] week 02

Mau

ARTS 打卡计划

程序员的晚餐 | 6 月 4 日 最好吃的土豆

清远

Flink源码分析之Flink是如何kafka读取数据的

shengjk1

flink flink 消费 kafka flink源码分析 flink消费kafka源码解析

ARTS 第 1 周

乌拉里

ARTS 打卡计划

Service Mesh的演化与未来

Service Mesh的演化与未来

Meltdown和Spectre是什么以及如何应对-InfoQ