如何检查我的Ubuntu上是否启用了KPTI?

当前的Meltdown Intel处理器漏洞目前已通过启用页表隔离来解决。 有一个问题如何关闭: 如何禁用页表隔离以重新获得由于英特尔CPU安全漏洞补丁导致的性能损失?

我的问题恰恰相反:有没有办法检查正在运行的系统PTI机制是否对系统有效,从而系统受到保护? 我特意寻找cat /proc/somethingcat /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 – 通用或更新。