Answers:
如果您使用的是主线内核或大多数主要发行版的内核,则检查完整retpoline支持的最佳方法(即,内核已配置CONFIG_RETPOLINE
,并由具有retpoline的编译器构建)是寻找“完整的通用retpoline” ”中/sys/devices/system/cpu/vulnerabilities/spectre_v2
。在我的系统上:
$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW
如果要进行更全面的测试,要在没有spectre_v2
systree文件的情况下检测内核上的折线,请查看问题的解决方法spectre-meltdown-checker
。
head /sys/devices/system/cpu/vulnerabilities/*
自己;-)。当前涵盖Meltdown / Spectre漏洞,但也应涵盖以后所有类似性质的漏洞(命名空间是有目的的通用)。
head
给出了更好的格式化输出。
在这种特定情况下,Stephen Kitt的答案更为全面,因为retpoline支持还需要新的编译器版本。
但通常,大多数发行版的内核配置文件位于以下位置之一:
/boot/config-4.xx.xx-...
/proc/config.gz
那你就可以 zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz
/boot/config*
,因为这可能会CONFIG_RETPOLINE
在已安装但当前未运行的内核映像中找到,给人一种错误的安全感。检查/proc/config.gz
或是/sys/...
安全的,但是许多Linux发行版都没有编译内核/proc/config.gz
。
/boot/config-$(uname -r)
,然后呢?
/boot/config-$(uname -r)
也不是万无一失的:它仍然不能保证配置匹配正在运行的内核。uname -r
只要内核ABI 不变,发行版内核在多个版本中都保持相同。
$ grep . /sys/devices/system/cpu/vulnerabilities/*
,这在Greg Kroah-Hartman的博客中建议。