目前,英特尔处理器 Meltdown 漏洞已通过启用页表隔离功能进行补救。但如何关闭此功能仍是一个问题:如何禁用页表隔离以恢复因英特尔 CPU 安全漏洞补丁而损失的性能?
我的问题正好相反:有没有办法在正在运行的系统上检查 PTI 机制是否对系统有效,从而保护系统?我专门寻找cat /proc/something
或cat /sys/something
,而不是检查内核版本或配置参数等。
答案1
在内核配置中 grepping CONFIG_PAGE_TABLE_ISOLATION 为Raniz 的建议对桌面版 Ubuntu 没有帮助,但可能对云实例有帮助:
grep CONFIG_PAGE_TABLE_ISOLATION=y /boot/config-`uname -r` && \ echo "patched :)" || echo "unpatched :("
您可以使用
/proc/cpuinfo
以下方式检查JonasCz 建议:grep -q "cpu_insecure\|cpu_meltdown\|kaiser" /proc/cpuinfo && echo "patched :)" \ || echo "unpatched :("
或者来自
dmesg
(感谢杰森·克莱顿):dmesg | grep -q "Kernel/User page tables isolation: enabled" \ && echo "patched :)" || echo "unpatched :("
您可以从编译测试程序拉斐尔·卡瓦略用于 Meltdown 检测:
sudo apt-get install git build-essential cd /tmp git clone https://github.com/raphaelsc/Am-I-affected-by-Meltdown.git cd Am-I-affected-by-Meltdown make sudo sh -c "echo 0 > /proc/sys/kernel/kptr_restrict" ./meltdown-checker
在修补的系统上它应该以输出结束
...
so far so good (i.e. meltdown safe) ...
System not affected (take it with a grain of salt though as false negative
may be reported for specific environments; Please consider running it once again).
使用工具检查https://github.com/speed47/spectre-meltdown-checker:
cd /tmp wget https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker.sh sudo sh /tmp/spectre-meltdown-checker.sh
在修补的系统上它应该显示以下内容:
Spectre and Meltdown mitigation detection tool v0.27
Checking for vulnerabilities against live running kernel Linux 4.4.0-109-generic #132-Ubuntu SMP Tue Jan 9 19:52:39 UTC 2018 x86_64
...
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)
不要在 Xenial 上安装 4.4.0-108-generic!它破坏启动/重启/关机/挂起功能!
安装 4.4.0-109-generic (参见 USN-3522-3了解详情)!
作为Robie Basak 已经写了,有一个关于Ubuntu 中的 Spectre 和 Meltdown 漏洞状态。
另外还有:
答案2
运行以下命令:
dmesg | grep 'page tables isolation'
如果显示 enabled,则表示 PTI 已启用。如果没有显示任何内容,或者您在终端中看到“disabled”,则表示 PTI 已禁用。Ubuntu 尚未发布补丁,因此不会显示任何消息。
答案3
您可以检查cat /proc/cpuinfo
,如果它cpu_insecure
在“错误”下报告,则 PTI 已启用。
如果它是空白的(或者只是没有列出cpu_insecure
),那么很可能您正在运行尚未修补的内核(Ubuntu 没有),或者您有一个 AMD 处理器(由于它们不易受到攻击,因此可以预见不会启用此功能)。
现在所有 CPU 都被视为易受攻击在最新的4.15内核中。
答案4
我发现这个很棒的 sh 脚本可以测试系统上的 Meltdown/specre 漏洞:
https://github.com/speed47/spectre-meltdown-checker
该脚本会检查你的系统上已知的 Meltdown 和 Spectre 补丁,以告知你这些漏洞是否已被你的操作系统缓解