云计算百科
云计算领域专业知识百科平台

如何保护您的服务器免受Meltdown和Spectre漏洞的影响

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

Meltdown 和 Spectre 是什么?

在2018年1月4日,现代 CPU 设计中出现了多个漏洞。利用某些处理器性能优化,这些漏洞——被命名为 Meltdown 和 Spectre——使得攻击者可以在正确操作时迫使应用程序透露系统和应用程序内存的内容。这些攻击之所以奏效,是因为处理器内的正常特权检查行为被通过预测执行、分支预测、乱序执行和缓存等特性的交互所颠覆。

Meltdown 被披露在 CVE-2017-5754 中。Spectre 被披露在 CVE-2017-5753 和 CVE-2017-5715 中。

欲了解更详细信息,请查看下面的 Meltdown 如何工作?和 Spectre 如何工作?部分。

我受到 Meltdown 和 Spectre 的影响吗?

Meltdown 和 Spectre 影响大多数现代处理器。这些漏洞所利用的处理器优化是大多数 CPU 的核心设计特征,这意味着大多数系统在特定修补程序之前都是容易受到攻击的。这包括台式电脑、服务器以及在云环境中运行的计算实例。

用于保护免受 Meltdown 影响的修补程序正在从操作系统供应商处发布。虽然也在发布 Spectre 的更新,但它代表了一整类漏洞,因此可能需要更广泛的持续修复。

在云和虚拟化环境中,提供商需要更新基础架构以保护其客户。用户需要更新其服务器以减轻客户操作系统内的影响。

我该如何保护自己?

对这类漏洞的完全保护可能需要对 CPU 设计进行更改。在此期间,软件更新可以通过禁用或解决导致这些漏洞的某些优化行为来提供对攻击的缓解。

不幸的是,由于这些补丁影响了处理器内的优化例程,缓解补丁可能会降低服务器的性能。减速程度高度依赖于正在执行的工作类型,I/O 密集型进程会受到最大影响。

当前缓解补丁状态

在撰写本文时(2018年1月9日),Linux 发行版已开始分发补丁,但尚无任何发行版完全修补。

已发布具有部分缓解(针对 Meltdown 和 Spectre 变体1进行了修补)的内核更新的发行版包括:

  • CentOS 7:kernel 3.10.0-693.11.6
  • CentOS 6:kernel 2.6.32-696.18.7

已发布具有部分缓解(针对 Meltdown 进行了修补)的内核更新的发行版包括:

  • Fedora 27:kernel 4.14.11-300
  • Fedora 26:kernel 4.14.11-200
  • Ubuntu 17.10:kernel 4.13.0-25-generic
  • Ubuntu 16.04:kernel 4.4.0-109-generic
  • Ubuntu 14.04:kernel 3.13.0-139-generic
  • Debian 9:kernel 4.9.0-5-amd64
  • Debian 8:kernel 3.16.0-5-amd64
  • Debian 7:kernel 3.2.0-5-amd64
  • Fedora 27 Atomic:kernel 4.14.11-300.fc27.x86_64
  • CoreOS:kernel 4.14.11-coreos

如果您的内核至少更新到上述版本,那么一些更新已经应用。

尚未发布具有缓解措施的内核的操作系统包括:

  • FreeBSD 11.x
  • FreeBSD 10.x

即将于2018年1月13日到期的 Ubuntu 17.04 将不会收到补丁。强烈建议用户更新或迁移。

由于此漏洞的严重性,我们建议在补丁可用时立即应用更新,而不是等待完整的补丁集。这可能需要您在未来的几天和几周内多次升级内核并重新启动。

如何应用更新?

要更新您的服务器,您需要在您的发行版的补丁可用时更新系统软件。您可以通过运行常规软件包管理器来下载最新的内核版本,然后重新启动服务器以切换到修补代码。

对于 Ubuntu 和 Debian 服务器,您可以通过刷新本地软件包索引,然后升级系统软件来更新系统软件:

sudo apt-get update
sudo apt-get dist-upgrade

对于 CentOS 服务器,您可以通过输入以下命令来下载和安装更新的软件:

sudo yum update

对于 Fedora 服务器,请使用 dnf 工具:

sudo dnf update

无论操作系统如何,一旦应用了更新,重新启动服务器以切换到新内核:

sudo reboot

服务器重新上线后,登录并检查活动内核是否与上述列表中的内核版本相匹配,以确保您的内核已升级。频繁检查新的更新,以确保您在可用时收到进一步的补丁。

附加背景

Meltdown 和 Spectre 系列漏洞利用了现代处理器中的性能增强功能。处理器特性如预测执行、特权检查、乱序执行和 CPU 缓存的组合允许对本应超出边界的内存位置进行读取访问。结果是,非特权程序可以被迫从其内存中泄露敏感数据,或者从内核或其他应用程序中访问特权内存。

Meltdown 是如何工作的?

Meltdown 漏洞通过利用 CPU 优化中的预测执行的缺陷,欺骗处理器读取超出边界的内存位置。其一般思路如下:

  • 请求访问非法内存位置。
  • 第二个请求是有条件地读取有效内存位置,如果第一个请求包含特定值的话。
  • 利用预测执行,处理器在检查初始请求是否无效之前,完成了两个请求的后台工作。一旦处理器了解到请求涉及超出边界的内存,它会正确地拒绝这两个请求。尽管特权检查代码标识内存访问无效后,处理器不会返回结果,但两个访问位置仍然保留在处理器的缓存中。
  • 现在对有效内存位置进行新的请求。如果返回迅速,那么该位置已经在 CPU 缓存中,表明之前有条件的请求已经执行。迭代使用这些条件可以用来了解超出边界内存位置的值。

Meltdown 代表了一个可以修补的具体漏洞。

Spectre 是如何工作的?

Spectre 也是通过欺骗处理器误用预测执行来读取受限制的值。披露通知描述了两个变种,具有不同的复杂性和影响程度。

对于 Spectre 的变种 1,处理器被欺骗在强制执行边界检查之前进行预测执行读取。首先,攻击者鼓励处理器预测地访问超出其有效边界的内存位置。然后,类似于 Meltdown,根据超出边界的值,额外的指令有条件地将合法地址加载到缓存中。之后计时检查检索合法地址所需的时间,以确定它是否已加载到缓存中。这反过来可以揭示超出边界内存位置的值。

Spectre 的变种 2是最复杂的,既难以利用也难以进行缓解。处理器经常在遇到尚无法评估的条件语句时进行预测执行。它们通过使用称为分支预测的机制来猜测条件的最可能结果。

分支预测使用先前通过代码路径运行的历史来选择要预测执行的路径。这可以被攻击者用来引导处理器做出错误的预测决定。因为分支选择历史不存储对决定的绝对引用,处理器可以被欺骗在代码的一个部分进行训练时,选择另一个部分的分支。这可以被利用来揭示超出可接受范围的内存值。

结论

Spectre 和 Meltdown 代表了严重的安全漏洞;它们可能的潜在影响仍在不断发展中。

为了保护自己,请在供应商发布补丁时及时更新操作系统软件,并继续监视与 Meltdown 和 Spectre 漏洞相关的通信。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 如何保护您的服务器免受Meltdown和Spectre漏洞的影响
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!