如何修复 logwatch 中的“存在 MDS CPU 错误且 SMT 开启,可能存在数据泄漏”错误?

如何修复 logwatch 中的“存在 MDS CPU 错误且 SMT 开启,可能存在数据泄漏”错误?

错误信息提示需要检查:

https://www.kernel.org/doc/html/latest/admin-guide/hw-vuln/mds.html更多细节。

但我不太确定如何解决这个问题。

我查看了 /etc/default/intel-microcode 并发现了以下内容:

# Configuration script for intel-microcode version 3

#
# initramfs helper
#

# Set this to "no" to disable automatic microcode updates on boot;
# Set this to "auto" to use early initramfs mode automatically (default);
# Set this to "early" to always attempt to create an early initramfs;
# IUCODE_TOOL_INITRAMFS=auto

# Set this to "yes" (default) to use "iucode_tool --scan-system" to reduce
# the initramfs size bloat, by detecting which Intel processors are active
# in this system, and installing only their microcodes.
#
# Set this to "no" to either include all microcodes, or only the microcodes
# selected through the use of IUCODE_TOOL_EXTRA_OPTIONS below.
#
# WARNING: including all microcodes will increase initramfs size greatly.
# This can cause boot issues if the initramfs is already large.
# IUCODE_TOOL_SCANCPUS=yes

# Extra options to pass to iucode_tool, useful to forbid or to
# force the inclusion of microcode for specific processor signatures.
# See iucode_tool(8) for details.
#IUCODE_TOOL_EXTRA_OPTIONS=""

我将其改为:

# Configuration script for intel-microcode version 3

#
# initramfs helper
#

# Set this to "no" to disable automatic microcode updates on boot;
# Set this to "auto" to use early initramfs mode automatically (default);
# Set this to "early" to always attempt to create an early initramfs;
IUCODE_TOOL_INITRAMFS=auto

# Set this to "yes" (default) to use "iucode_tool --scan-system" to reduce
# the initramfs size bloat, by detecting which Intel processors are active
# in this system, and installing only their microcodes.
#
# Set this to "no" to either include all microcodes, or only the microcodes
# selected through the use of IUCODE_TOOL_EXTRA_OPTIONS below.
#
# WARNING: including all microcodes will increase initramfs size greatly.
# This can cause boot issues if the initramfs is already large.
IUCODE_TOOL_SCANCPUS=yes

# Extra options to pass to iucode_tool, useful to forbid or to
# force the inclusion of microcode for specific processor signatures.
# See iucode_tool(8) for details.
#IUCODE_TOOL_EXTRA_OPTIONS=""

之前,我在 BIOS 中关闭了超线程,并且还将 /etc/default/grub 中的设置更改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash maxcpus=6"

因为我的机器上有六个物理 CPU。

答案1

笔记/etc/default/intel-microcode:撤消先前对和的编辑/etc/default/grub

内核命令行上的缓解控制

内核命令行允许使用选项“mds=”在启动时控制 MDS 缓解措施。此选项的有效参数为:

full    

如果 CPU 存在漏洞,请启用所有可用的 MDS 漏洞缓解措施,在退出用户空间和进入虚拟机时清除 CPU 缓冲区。如果启用了 SMT,空闲转换也会受到保护。

它不会自动禁用 SMT。

full,nosmt

与 mds=full 相同,在易受攻击的 CPU 上禁用 SMT。这是完整的缓解措施。

off

完全禁用 MDS 缓解措施。


sudo -H gedit /etc/default/grub

改变:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

到:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash mds=full,nosmt"

保存文件并退出gedit

sudo update-grub

reboot

注意:请理解,在多 CPU 或多核配置下,性能会受到巨大影响。

注意:如果性能下降太大,请mds=full尝试mds=full,nosmt

答案2

根据英特尔安全顾问公告为了缓解此问题,您应该更新 CPU 微码。此漏洞已于 20190514 修复更新微码。您可以使用命令检查系统中安装微码的软件包的当前版本dpkg -s intel-microcode。如果它的数字更大,那么你没问题。

还要将 BIOS 更新到最新版本,但此步骤特定于供应商。您可以在英特尔网站上查看多家供应商的建议这里

在某些情况下,这两个步骤结合起来应该可以缓解此漏洞。但如果输出dmesg | grep 'data leak'仍然显示有关“MDS CPU 错误”的信息,则表示尚未完全缓解。您可以检查cat /sys/devices/system/cpu/vulnerabilities/mds系统的哪些组件仍然受到影响。
在这种情况下,您应该考虑完全禁用超线程。但请注意,这可能会导致性能下降,正如@heynnema 在他的回答中提到的那样。
阅读Ubuntu 知识库文章详细描述了此漏洞。
因此,没有通用答案,这取决于用例。您可以以牺牲性能为代价来缓解此问题,也可以保持原样(英特尔表示“实际利用 MDS 是一项非常复杂的任务”)。

相关内容