如何检查我的Ubuntu上是否启用了KPTI?
当前的Meltdown Intel处理器漏洞目前已通过启用页表隔离来解决。 有一个问题如何关闭: 如何禁用页表隔离以重新获得由于英特尔CPU安全漏洞补丁导致的性能损失?
我的问题恰恰相反:有没有办法检查正在运行的系统PTI机制是否对系统有效,从而系统受到保护? 我特意寻找cat /proc/something
或cat /sys/something
,而不是检查内核版本或配置参数等。
-
在Raniz建议的内核配置中使用CONFIG_PAGE_TABLE_ISOLATION,这对桌面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
(感谢Jason Creighton ):dmesg | grep -q "Kernel/User page tables isolation: enabled" \ && echo "patched :)" || echo "unpatched :("
-
您可以从Raphael Carvalho编译测试程序以进行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 (ie 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! 它会破坏启动/重启/关闭/暂停function !
安装4.4.0-109-generic(有关详细信息, 请参阅USN-3522-3 )!
正如Robie Basak已经写过的那样 , Ubuntu中有一个关于Spectre和Meltdown漏洞状态的页面。
还有:
- UVEntu安全公告CVE-2017-5715
- 适用于CVE-2017-5753的Ubuntu安全公告
- 适用于CVE-2017-5754的Ubuntu安全公告
运行以下命令:
dmesg | grep 'page tables isolation'
如果显示已启用,则启用PTI。 如果未显示任何内容或您在终端中看到“已禁用”,则禁用PTI。 Ubuntu尚未发布补丁,因此它不会显示任何消息。
您可以使用cat /proc/cpuinfo
,如果它在“bugs”下报告cpu_insecure
,则启用PTI。
如果它是空白的(或者只是没有列出cpu_insecure
),那么很可能你正在运行一个尚未修补的内核(Ubuntu没有),或者你有一个AMD处理器(为什么这样做可能会被启用,因为他们不易受伤害。
目前,在最新的4.15内核中, 所有CPU都被视为易受攻击 。
我找到了这个很好的sh脚本来测试你系统上的Meltdown /幽灵漏洞:
https://github.com/speed47/spectre-meltdown-checker
该脚本会检查您的系统是否已知系统上已知的Meltdown和specter补丁,以告诉您这些漏洞现在是否已被您的操作系统缓解
您可以检查/proc/config.gz以获取CONFIG_PAGE_TABLE_ISOLATION=y
,这意味着内核是使用KPTI编译的。
这是在我修补的运行4.14.11-1的Arch Linux系统上:
$ zgrep CONFIG_PAGE_TABLE_ISOLATION /proc/config.gz CONFIG_PAGE_TABLE_ISOLATION=y
在我的AWS Ubuntu 14.04.5 LTS EC2实例上,我跑了
grep CONFIG_PAGE_TABLE_ISOLATION /boot/config-$(uname -r)
它应该说:
CONFIG_PAGE_TABLE_ISOLATION=y
为了更新,我做了:
sudo apt-get update && sudo apt-get install linux-image-generic
我想也没关系:
sudo apt-get update sudo apt-get dist-upgrade
要检查内核版本:
uname -r
需要是3.13.0-139 – 通用或更新。