AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 414786
Accepted
GAD3R
GAD3R
Asked: 2018-01-05 06:43:13 +0800 CST2018-01-05 06:43:13 +0800 CST 2018-01-05 06:43:13 +0800 CST

如何缓解 Linux 系统上的 Spectre 和 Meltdown 漏洞?

  • 772

安全研究人员在零项目上发布了一个名为 Spectre and Meltdown 的新漏洞,允许程序从其他程序的内存中窃取信息。它会影响 Intel、AMD 和 ARM 架构。

可以通过访问 JavaScript 网站远程利用此漏洞。技术细节可以在redhat 网站上找到,Ubuntu 安全团队。

通过推测执行侧信道攻击(CVE-2017-5715、CVE-2017-5753、CVE-2017-5754 aka Spectre 和 Meltdown)泄露信息

发现一类新的侧信道攻击会影响大多数处理器,包括来自 Intel、AMD 和 ARM 的处理器。该攻击允许恶意用户空间进程读取内核内存和来​​宾中的恶意代码读取管理程序内存。为了解决这个问题,需要更新 Ubuntu 内核和处理器微码。这些更新一旦可用,将在未来的 Ubuntu 安全通知中公布。

JavaScript 中的示例实现

作为概念验证,编写的 JavaScript 代码在 Google Chrome 浏览器中运行时允许 JavaScript 从其运行的进程中读取私有内存。

我的系统似乎受到了幽灵漏洞的影响。我已经编译并执行了这个概念验证(spectre.c)。

系统信息:

$ uname -a
4.13.0-0.bpo.1-amd64 #1 SMP Debian 4.13.13-1~bpo9+1 (2017-11-22) x86_64 GNU/Linux

$ cat /proc/cpuinfo
model name  : Intel(R) Core(TM) i3-3217U CPU @ 1.80GHz

$gcc --version
gcc (Debian 6.3.0-18) 6.3.0 20170516

如何缓解 Linux 系统上的 Spectre 和 Meldown 漏洞?

延伸阅读:使用 Meltdown 实时窃取密码。

更新

在@Carlos Pasqualini 回答之后使用Spectre & Meltdown Checker切换到4.9.0-5内核版本后,因为可以使用安全更新来缓解 debian Stretch 上的 cve-2017-5754:

CVE-2017-5753 [bounds check bypass] aka 'Spectre Variant 1'
* Checking count of LFENCE opcodes in kernel:  NO  (only 31 opcodes found, should be >= 70)
> STATUS:  VULNERABLE  (heuristic to be improved when official patches become available)

CVE-2017-5715 [branch target injection] aka 'Spectre Variant 2'
* Mitigation 1
*   Hardware (CPU microcode) support for mitigation:  NO 
*   Kernel support for IBRS:  NO 
*   IBRS enabled for Kernel space:  NO 
*   IBRS enabled for User space:  NO 
* Mitigation 2
*   Kernel compiled with retpoline option:  NO 
*   Kernel compiled with a retpoline-aware compiler:  NO 
> STATUS:  VULNERABLE  (IBRS hardware + kernel support OR kernel with retpoline are needed to mitigate the vulnerability)

CVE-2017-5754 [rogue data cache load] aka 'Meltdown' aka 'Variant 3'
* Kernel supports Page Table Isolation (PTI):  YES 
* PTI enabled and active:  YES 
> STATUS:  NOT VULNERABLE  (PTI mitigates the vulnerability)

2018 年 1 月 25 日更新

该spectre-meltdown-checker脚本由 debian 官方打包,可通过backports 存储库、Buster 和 Sid 用于 Debian Stretch。

2018 年 5 月 22 日更新

投机存储绕过 (SSB) – 也称为变体 4

具有微处理器的系统在所有先前存储器写入的地址已知之前利用存储器读取的推测性执行和推测性执行,可能允许未经授权地向具有本地用户访问权限的攻击者披露信息,通过旁道分析。

恶意系统寄存器读取 (RSRE) – 也称为变体 3a

具有利用推测执行和执行系统寄存器推测读取的微处理器的系统可能允许未经授权将系统参数披露给具有本地用户访问权限的攻击者,该攻击者通过边信道分析进行访问。

编辑 2018 年 7 月 27 日

NetSpectre:通过网络读取任意内存

在本文中,我们提出了 NetSpectre,这是一种基于 Spectre 变体 1 的新攻击,不需要目标设备上的攻击者控制代码,从而影响数十亿台设备。与本地 Spectre 攻击类似,我们的远程攻击需要在目标代码中存在 Spectre 小工具。我们展示了在暴露的网络接口或 API 中包含所需 Spectre 小工具的系统可以使用我们的通用远程 Spectre 攻击进行攻击,从而允许通过网络读取任意内存。攻击者只向受害者发送一系列精心设计的请求,并测量响应时间以从受害者的内存中泄露一个秘密值。

linux x86
  • 4 4 个回答
  • 29566 Views

4 个回答

  • Voted
  1. Best Answer
    Carlos Pasqualini
    2018-01-05T08:37:20+08:002018-01-05T08:37:20+08:00

    Alan Cox 分享了来自 AMD 博客的链接: https ://www.amd.com/en/corporate/speculative-execution

    变体一:边界检查绕过

    由系统供应商和制造商提供的软件/操作系统更新解决。预期的性能影响可忽略不计。

    变体二:分支目标注入

    AMD 架构的差异意味着利用此变体的风险几乎为零。迄今为止,尚未在 AMD 处理器上证明存在变体 2 的漏洞。

    变体三:恶意数据缓存加载

    AMD 架构差异导致的零 AMD 漏洞。

    不过,最好让第三方确认这些 AMD 的声明。

    受影响系统上的“缓解”需要一个新内核并重新启动,但在许多发行版上还没有发布包含修复的软件包:

    • https://www.cyberciti.biz/faq/patch-meltdown-cpu-vulnerability-cve-2017-5754-linux/

    德比安:

    • https://security-tracker.debian.org/tracker/CVE-2017-5715
    • https://security-tracker.debian.org/tracker/CVE-2017-5753
    • https://security-tracker.debian.org/tracker/CVE-2017-5754

    我发现的其他信息来源:

    • https://lists.bufferbloat.net/pipermail/cerowrt-devel/2018-January/011108.html
    • https://www.reddit.com/r/Amd/comments/7o2i91/technical_analysis_of_spectre_meltdown/
    • 12
  2. WinEunuuchs2Unix
    2018-01-08T16:12:49+08:002018-01-08T16:12:49+08:00

    2018 年 1 月 27 日 英特尔微码破坏了某些系统

    用于解决推测执行分支安全漏洞的英特尔微代码更新 2018-01-08破坏了一些系统。从 1 月 8 日到 1 月 21 日,这影响了许多 Ubuntu 系统。2018 年 1 月 22 日,Ubuntu 发布了一个更新,该更新从 2​​017 年 7 月 7 日恢复了旧的微码。

    如果您遇到更新问题,重新安装 Ubuntu 并在 2018-01-08 和 2018-01-22 之间关闭更新,您可能需要再次尝试 Ubuntu 自动更新。

    2018 年 1 月 16 日在 4.14.14 和 4.9.77 中更新 Spectre

    如果您已经像我一样在运行内核版本 4.14.13 或 4.9.76,那么安装它们4.14.14并4.9.77在几天后出现以缓解 Spectre 安全漏洞时,这是一个明智的选择。此修复程序的名称是Retpoline,并且没有先前推测的严重性能损失:

    Greg Kroah-Hartman 已经为 Linux 4.9 和 4.14 发布了最新的补丁,现在包括 Retpoline 支持。

    此 X86_FEATURE_RETPOLINE 已为所有 AMD/Intel CPU 启用。要获得全面支持,您还需要使用包含 -mindirect-branch=thunk-extern 支持的更新的 GCC 编译器构建内核。GCC 更改昨天在 GCC 8.0 中登陆,并且正在可能向后移植到 GCC 7.3。

    那些想要禁用 Retpoline 支持的用户可以使用noretpoline启动已修补的内核。

    此处无需详细介绍 JavaScript,而是如何立即避免 Meltdown 漏洞(截至 2018 年 1 月 10 日,Spectre 保护)

    2018 年 1 月 12 日更新

    Spectre的初步保护已经存在,并将在未来数周和数月内得到改善。

    Linux 内核 4.14.13、4.9.76 LTS 和 4.4.111 LTS

    来自这篇Softpedia 文章:

    Linux 内核 4.14.13、4.9.76 LTS 和 4.4.111 LTS 现在可以从 kernel.org 下载,它们包括针对 Spectre 安全漏洞的更多修复,以及来自 Linux 4.14.12、4.9 的一些回归上周发布的 .75 LTS 和 4.4.110 LTS 内核,因为一些报告了小问题。

    这些问题现在似乎已得到修复,因此可以安全地将基于 Linux 的操作系统更新到今天发布的新内核版本,其中包括更多 x86 更新、一些 PA-RISC、s390 和 PowerPC (PPC) 修复,以及对驱动程序(Intel i915、crypto、IOMMU、MTD)以及通常的 mm 和核心内核更改。

    许多用户在 2018 年 1 月 4 日和 2018 年 1 月 10 日遇到了 Ubuntu LTS 更新问题。我已经使用4.14.13了几天没有任何问题,但是YMMV。


    2018 年 1 月 7 日更新

    Greg Kroah-Hartman昨天写了一篇关于 Meltdown 和 Spectre Linux 内核安全漏洞的状态更新。有人可能会称他为 Linux 世界中仅次于 Linus 的第二大权势人物。这篇文章讨论了大多数 Ubuntu 用户拥有的稳定内核(下面讨论)和 LTS 内核。


    Linux 内核 4.14.11、4.9.74、4.4.109、3.16.52 和 3.2.97 补丁崩溃缺陷

    从这篇文章:

    敦促用户立即更新他们的系统

    2018 年 1 月 4 日 01:42 GMT · 作者 Marius Nestor

    Linux 内核维护者 Greg Kroah-Hartman 和 Ben Hutchings 发布了 Linux 4.14、4.9、4.4、3.16、3.18 和 3.12 LTS(长期支持)内核系列的新版本,显然修补了影响最现代的两个关键安全漏洞之一处理器。

    现在可以从 kernel.org 网站下载 Linux 4.14.11、4.9.74、4.4.109、3.16.52、3.18.91 和 3.2.97 内核,并敦促用户更新他们的 GNU/Linux 发行版如果这些新版本立即运行任何这些内核系列。为什么要更新?因为他们显然修补了一个名为 Meltdown 的严重漏洞。

    如前所述,Meltdown 和 Spectre 是两个漏洞,影响了过去 25 年发布的几乎所有由现代处理器 (CPU) 驱动的设备。是的,这意味着几乎所有的手机和个人电脑。无特权的攻击者可以利用 Meltdown 恶意获取存储在内核内存中的敏感信息。

    Spectre漏洞补丁仍在开发中

    虽然 Meltdown 是一个严重的漏洞,它可以暴露您的秘密数据,包括密码和加密密钥,但 Spectre 更糟糕,而且不容易修复。安全研究人员表示,它会困扰我们相当长的一段时间。Spectre 以利用现代 CPU 使用的推测执行技术来优化性能而闻名。

    在 Spectre 错误也被修补之前,强烈建议您至少将 GNU/Linux 发行版更新到任何新发布的 Linux 内核版本。因此,请在您最喜欢的发行版的软件存储库中搜索新的内核更新并尽快安装它。不要等到为时已晚,立即行动!


    我已经使用 Kernel 4.14.10 一个星期了,所以下载和启动 Ubuntu Mainline Kernel 4.14.11版本对我来说并不太担心。

    Ubuntu 16.04 用户可能更喜欢与 4.14.11 同时发布的 4.4.109 或 4.9.74 内核版本。

    如果您的常规更新没有安装您想要的内核版本,您可以按照这个 Ask Ubuntu 答案手动执行:https ://askubuntu.com/questions/879888/how-do-i-update-kernel-to-the-latest -mainline-version/879920#879920


    4.14.12 - 一天的不同

    在我最初回答后不到 24 小时,发布了一个补丁来修复他们可能匆忙推出的 4.14.11 内核版本。建议所有 4.14.11 用户升级到4.14.12 。格雷格-KH 说:

    我宣布发布 4.14.12 内核。

    4.14 内核系列的所有用户都必须升级。

    在此版本中,人们仍然遇到了一些小问题。希望他们能在本周末得到解决,因为补丁还没有落在 Linus 的树上。

    现在,一如既往,请测试您的环境。

    看看这个更新,并没有多少行源代码被改变。

    • 11
  3. user6860
    2018-01-07T11:33:02+08:002018-01-07T11:33:02+08:00

    可以通过访问 JavaScript 网站远程利用此漏洞。

    的确。因此,一种明智的缓解措施是在您的 Web 浏览器中禁用 JavaScript,或者使用不支持 JavaScript 的 Web 浏览器。

    大多数支持 JavaScript 的浏览器都有禁用它的设置。或者,如果您希望维护允许 JavaScript 的站点或域的白名单,那么有各种附加组件可以提供帮助,例如uBlock Origin和NoScript。

    注意不言而喻,禁用/限制 JavaScript 不应该是您唯一的缓解措施。一旦编写、测试和发布了任何相关的内核修复和其他安全更新,您应该另外查看(并且可能应用)它们。在 Debian 派生的发行版上,使用诸如 sudo apt update、sudo apt list-upgradable和sudo apt upgrade.

    更新:不要相信我的话。Alan Cox也这么说:

    您真正需要关心的是javascript,因为网页上的javascript可以远程使用该漏洞利用来从您的系统内存中窃取内容。...考虑一下诸如 Adblocker 之类的东西和诸如 noscript 之类的扩展程序,它们可以首先阻止大量垃圾邮件的运行。尽快这样做。当操作系统更新出现时应用它们。(来源)

    • 6
  4. user68856
    2018-01-07T14:14:11+08:002018-01-07T14:14:11+08:00

    使用 JavaScript 可以利用这一事实并不是重点,也不应该是主要问题(尽管这是一个主要问题,因为这样远程代码可以很容易地在您的系统上执行,但这不是唯一的这种情况可能发生)。

    您的重点不应该在于 Javascript 和/或您的浏览器。理想情况下,您的 CPU 应该打上补丁。不幸的是,对于当前的大多数错误浪潮来说,这似乎是不可能的。Debian 将与所有其他操作系统提供方一起,因此除了推荐没有缺陷的 CPU 之外,唯一可能的方法是:他们强制系统解决 CPU 中的错误。这些补丁不能解决问题。取而代之的是,操作系统会尽可能地将它们隐藏在用户在机器上运行的任何程序(因此也包括您的浏览器)中。

    这种隐藏是额外的计算工作,因此您的整体系统性能将低于没有。降低多少可能在很大程度上取决于这些程序究竟做了什么。

    考虑到这一点,回到你的问题:你可以做些什么来保护你的 Debian 系统是安装安全更新。尽管存在固有的 CPU 缺陷,我相信 Debian 会根据这些错误尽一切可能尽可能安全地运行 Debian。

    各种大公司已经在研究这个问题,许多硬件和 Linux 大师也在努力。我不想绝对阻止您自己尝试某些事情或尝试帮助总体努力。但是,如果您只对自己的安全性和及时修复感兴趣,那么他们很可能会在比您更短的时间内找到更好的解决方案,现在开始自己研究。

    • 6

相关问题

  • 有没有办法让 ls 只显示某些目录的隐藏文件?

  • 使用键盘快捷键启动/停止 systemd 服务 [关闭]

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve