什么是熔毁和Ghost?
2018年1月4日,披露了现代CPU设计中的多个漏洞。 利用某些处理器性能优化,这些名为Meltdown和Spectre的漏洞可能使攻击者在正确操作时强制应用程序泄露系统和应用程序内存的内容。 这些攻击是有效的,因为处理器内的正常特权检查行为是通过诸如推测执行,分支预测,无序执行和缓存等特征的交互而被破坏的。
在CVE-2017-5754中披露了崩溃。 Specter已在CVE-2017-5753和CVE-2017-5715中披露 。
有关更详细的信息,请查看崩溃如何工作? Ghost怎么样? 下面的部分。
我受到崩溃和Ghost的影响吗?
熔毁和Ghost影响大多数现代处理器。 这些漏洞中使用的处理器优化是大多数CPU的核心设计特性,这意味着大多数系统在被特别打补丁之前都是脆弱的。 这包括在云环境中运行的台式计算机,服务器和计算实例。
正在从操作系统供应商处发布用于防止崩溃的补丁程序。 虽然更新也针对Spectre发布,但它代表了整个类别的漏洞,因此可能需要更广泛的持续补救。
在云和虚拟化环境中,提供商需要更新底层基础设施来保护他们的客人。 用户将需要更新他们的服务器来减轻客户操作系统中的影响。
我如何保护自己?
针对此类漏洞的全面保护可能需要对CPU设计进行更改。
在此期间,软件更新可以通过禁用或解决导致这些漏洞的一些优化行为来缓解攻击。
不幸的是,由于这些修补程序会影响处理器中的优化例程,因此缓解修补程序可能会降低服务器的性能。 减速的程度高度依赖于正在执行的工作类型,I / O密集型进程受到的影响最大。
当前缓解补丁状态
在撰写本文时(2018年1月9日),Linux发行版已经开始发布补丁,但是发行版尚未完全修补。
通过部分缓解发布内核更新的发行版包括:
- CentOS 7:内核3.10.0-693.11.6
- CentOS 6:内核2.6.32-696.18.7
- Fedora 27:内核4.14.11-300
- Fedora 26:内核4.14.11-200
- Ubuntu 17.10:内核4.13.0-25-generic
- Ubuntu 16.04:kernel 4.4.0-108-generic
- Debian 9:内核4.9.0-5-amd64
- Debian 8:kernel 3.16.0-5-amd64
- Debian 7:内核3.2.0-5-amd64
- Fedora 27 Atomic:内核4.14.11-300.fc27.x86_64
- CoreOS:内核4.14.11-coreos
如果您的内核至少更新到与上面相对应的版本,则已经应用了一些更新。
尚未发布内核的发行版本包括:
- Ubuntu 14.04
- FreeBSD 11.x
- FreeBSD 10.x
2018年1月13日即将到来的Ubuntu 17.04 将不会收到补丁 。 强烈建议用户更新或迁移。
警告:我们强烈建议您更新或迁移任何已达到使用寿命的版本。 这些版本不会收到针对像Meltdown和Spectre这样的漏洞的重要安全更新,这会使系统和用户处于危险之中。
由于此漏洞的严重性,我们建议在更新可用时应用,而不是等待完整的修补程序集。 这可能要求您在未来几天和几周内升级内核并重新启动不止一次。
如何应用更新?
要更新您的服务器,一旦补丁程序可用于您的发行版,您需要更新您的系统软件。 您可以通过运行常规软件包管理器来更新,以下载最新的内核版本,然后重新启动服务器以切换到修补的代码。
对于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缓存之类的处理器特性的组合允许对应该超出边界的存储器位置进行读取访问。 其结果是,非特权程序可以强制从内存泄露敏感数据或从内核或其他应用程序访问特权内存。
崩溃如何工作?
“崩溃”漏洞通过欺骗处理器通过利用被称为推测性执行的CPU优化中的缺陷来读取超出边界的内存位置。 总的想法是这样的:
- 请求一个非法的内存位置。
- 如果第一个请求包含一个特定的值, 则有第二个请求有条件地读取有效的内存位置。
- 使用推测执行,处理器在检查初始请求无效之前完成两个请求的后台工作。 一旦处理器明白请求涉及到越界内存,它就会正确拒绝这两个请求。 尽管在特权检查代码将存储器访问标识为无效之后处理器不返回结果,但是所访问的位置都保留在处理器的高速缓存中。
- 现在对有效的内存位置进行新的请求。 如果它快速返回,那么该位置已经在CPU高速缓存中,表示之前的条件请求已被执行。 这些条件的迭代使用可以用来理解超出边界内存位置的值。
崩溃代表了一个特定的漏洞,可以打补丁。
Ghost如何工作?
Ghost也可以通过欺骗处理器来滥用投机执行来读取限制值。 披露通告描述了具有不同复杂性和影响级别的两个变体 。
对于Specter的变体1 ,处理器在执行边界检查之前被诱骗地执行读取。 首先,攻击者鼓励处理器推测性地到达超出其有效边界的存储器位置。 然后,像Meltdown一样,额外的指令有条件地将一个合法的地址加载到缓存中,这取决于越界值。 时间多长时间才能检索到合法地址显示是否加载到缓存中。 这反过来又可以揭示出界内存位置的价值。
Ghost变种2是最复杂的,既可以利用也可以减轻攻击。 即使处理器遇到无法评估的条件语句,处理器也往往会投机性地执行指令。 他们通过使用称为分支预测的机制来猜测最可能的条件结果。
分支预测使用通过代码路径的先前运行的历史来选择推测执行的路径。 这可以被攻击者用来引发处理器做出不正确的投机决定。 由于分支选择历史不存储对决策的绝对引用,所以即使在另一部分代码中进行训练,处理器也可能被愚弄选择分支的一部分。 这可以被利用来揭示超出可接受范围的记忆值。
结论
Ghost和崩溃代表严重的安全漏洞; 其可能的影响的全部潜力仍在发展。
为了保护您自己,请在供应商发布补丁时更新您的操作系统软件,并继续监控与Meltdown和Spectre漏洞相关的通信。