Linux: Checking Meltdown or Spectre Vulnerability
This post will guide you how to check for Meltdown and Spectre Vulnerabilities on your Linux system. How do I check processor vulnerabilities Meltdown and Spectre in CentOS/Ubuntu Linux.
Checking Meltdown or Spectre Vulnerability
You can use a script named Spectre & Meltdown Checker to check the Meldown and Spectre vulnerabilities in your Linux. You can download it from github. Just do the following steps:
#1 get the latest version of the script using wget
Type:
# wget https://meltdown.ovh -O spectre-meltdown-checker.sh
Or
# wget https://github.com/speed47/spectre-meltdown-checker/blob/master/spectre-meltdown-checker.sh
Outputs:
[root@devops ~]# wget https://meltdown.ovh -O spectre-meltdown-checker.sh
--2018-09-17 02:39:45-- https://meltdown.ovh/
Resolving meltdown.ovh (meltdown.ovh)... 87.98.135.28
Connecting to meltdown.ovh (meltdown.ovh)|87.98.135.28|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-meltdown-checker .sh [following]
--2018-09-17 02:39:47-- https://raw.githubusercontent.com/speed47/spectre-meltdown-checker/master/spectre-m eltdown-checker.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.72.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.72.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 142685 (139K) [text/plain]
Saving to: ‘spectre-meltdown-checker.sh’
100%[==================================================================>] 142,685 374KB/s in 0.4s
2018-09-17 02:39:48 (374 KB/s) - ‘spectre-meltdown-checker.sh’ saved [142685/142685]
#2 make the script executable
Type:
#chmod u+x spectre-meltdown-checker.sh
#3 run the script to check the vulnerabilities for your Linux system
Type:
# ./spectre-meltdown-checker.sh
Outputs:
[root@devops ~]# ./spectre-meltdown-checker.sh Spectre and Meltdown mitigation detection tool v0.39+ Checking for vulnerabilities on current system Kernel is Linux 3.10.0-123.el7.x86_64 #1 SMP Mon Jun 30 12:09:22 UTC 2014 x86_64 CPU is Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz Hardware check * Hardware support (CPU microcode) for mitigation techniques * Indirect Branch Restricted Speculation (IBRS) * SPEC_CTRL MSR is available: NO * CPU indicates IBRS capability: NO * Indirect Branch Prediction Barrier (IBPB) * PRED_CMD MSR is available: NO * CPU indicates IBPB capability: NO * Single Thread Indirect Branch Predictors (STIBP) * SPEC_CTRL MSR is available: NO * CPU indicates STIBP capability: NO * Speculative Store Bypass Disable (SSBD) * CPU indicates SSBD capability: NO * L1 data cache invalidation * FLUSH_CMD MSR is available: NO * CPU indicates L1D flush capability: NO * Enhanced IBRS (IBRS_ALL) * CPU indicates ARCH_CAPABILITIES MSR availability: NO * ARCH_CAPABILITIES MSR advertises IBRS_ALL capability: NO * CPU explicitly indicates not being vulnerable to Meltdown (RDCL_NO): NO * CPU explicitly indicates not being vulnerable to Variant 4 (SSB_NO): NO * Hypervisor indicates host CPU might be vulnerable to RSB underflow (RSBA): NO * CPU supports Software Guard Extensions (SGX): NO * CPU microcode is known to cause stability problems: NO (model 0x3c family 0x6 stepping 0x3 ucode 0x19 cpuid 0x306c3) * CPU microcode is the latest known available version: NO (latest known version is 0x25 according to Intel Microcode Guidance, August 8 2018) * CPU vulnerability to the speculative execution attack variants * Vulnerable to CVE-2017-5753 (Spectre Variant 1, bounds check bypass): YES * Vulnerable to CVE-2017-5715 (Spectre Variant 2, branch target injection): YES * Vulnerable to CVE-2017-5754 (Variant 3, Meltdown, rogue data cache load): YES * Vulnerable to CVE-2018-3640 (Variant 3a, rogue system register read): YES * Vulnerable to CVE-2018-3639 (Variant 4, speculative store bypass): YES * Vulnerable to CVE-2018-3615 (Foreshadow (SGX), L1 terminal fault): NO * Vulnerable to CVE-2018-3620 (Foreshadow-NG (OS), L1 terminal fault): YES * Vulnerable to CVE-2018-3646 (Foreshadow-NG (VMM), L1 terminal fault): YES CVE-2017-5753 aka 'Spectre Variant 1, bounds check bypass' * Kernel has array_index_mask_nospec: NO * Kernel has the Red Hat/Ubuntu patch: NO * Kernel has mask_nospec64 (arm64): NO * Checking count of LFENCE instructions following a jump in kernel... NO (only 3 jump-then-lfence instructions found, should be >= 30 (heuristic)) > STATUS: VULNERABLE (Kernel source needs to be patched to mitigate the vulnerability) CVE-2017-5715 aka 'Spectre Variant 2, branch target injection' * Mitigation 1 * Kernel is compiled with IBRS support: NO * IBRS enabled and active: NO * Kernel is compiled with IBPB support: NO * IBPB enabled and active: NO * Mitigation 2 * Kernel has branch predictor hardening (arm): NO * Kernel compiled with retpoline option: NO > STATUS: VULNERABLE (IBRS+IBPB or retpoline+IBPB is needed to mitigate the vulnerability) CVE-2017-5754 aka 'Variant 3, Meltdown, rogue data cache load' * Kernel supports Page Table Isolation (PTI): NO * PTI enabled and active: NO * Reduced performance impact of PTI: NO (PCID/INVPCID not supported, performance impact of PTI will be significant) * Running as a Xen PV DomU: NO > STATUS: VULNERABLE (PTI is needed to mitigate the vulnerability) CVE-2018-3640 aka 'Variant 3a, rogue system register read' * CPU microcode mitigates the vulnerability: NO > STATUS: VULNERABLE (an up-to-date CPU microcode is needed to mitigate this vulnerability) CVE-2018-3639 aka 'Variant 4, speculative store bypass' * Kernel supports speculation store bypass: NO > STATUS: VULNERABLE (Neither your CPU nor your kernel support SSBD) CVE-2018-3615 aka 'Foreshadow (SGX), L1 terminal fault' * CPU microcode mitigates the vulnerability: N/A > STATUS: NOT VULNERABLE (your CPU vendor reported your CPU model as not vulnerable) CVE-2018-3620 aka 'Foreshadow-NG (OS), L1 terminal fault' * Kernel supports PTE inversion: NO * PTE inversion enabled and active: UNKNOWN (sysfs interface not available) > STATUS: VULNERABLE (Your kernel doesn't support PTE inversion, update it) CVE-2018-3646 aka 'Foreshadow-NG (VMM), L1 terminal fault' * This system is a host running an hypervisor: NO * Mitigation 1 (KVM) * EPT is disabled: N/A (the kvm_intel module is not loaded) * Mitigation 2 * L1D flush is supported by kernel: NO * L1D flush enabled: UNKNOWN (can't find or read /sys/devices/system/cpu/vulnerabilities/l1tf) * Hardware-backed L1D flush supported: NO (flush will be done in software, this is slower) * Hyper-Threading (SMT) is enabled: NO > STATUS: NOT VULNERABLE (this system is not running an hypervisor) > SUMMARY: CVE-2017-5753:KO CVE-2017-5715:KO CVE-2017-5754:KO CVE-2018-3640:KO CVE-2018-3639:KO CVE-2018-3615:OK CVE-2018-3620:KO CVE-2018-3646:OK Need more detailed information about mitigation options? Use --explain A false sense of security is worse than no security at all, see --disclaimer