至于“Spectre”安全漏洞,引入了“Retpoline”作为降低风险的解决方案。但是,我读过一篇文章,其中提到:
如果您在没有 的情况下构建内核
CONFIG_RETPOLINE
,则无法使用 retpoline 构建模块然后期望它们加载——因为不会导出 thunk 符号。但是,如果您使用 retpoline 构建内核,则可以成功加载未使用 retpoline 构建的模块。(来源)
是否有一种简单且通用/通用/统一的方法来检查内核是否启用了“Retpoline”?我想这样做,以便我的安装程序可以使用正确构建的内核模块进行安装。
如果您使用的是主线内核,或大多数主要发行版的内核,检查完整的 retpoline 支持的最佳方法(即内核配置为
CONFIG_RETPOLINE
,并使用支持 retpoline 的编译器构建)是查找“Full generic retpoline ”中/sys/devices/system/cpu/vulnerabilities/spectre_v2
。在我的系统上:如果您想要更全面的测试,在没有
spectre_v2
systree 文件的情况下检测内核上的 retpolines,请查看spectre-meltdown-checker
事情的进展情况。Stephen Kitt 的回答在这种特定情况下更为全面,因为 retpoline 支持也需要新的编译器版本。
但在一般情况下,大多数发行版都在以下位置之一提供内核配置文件:
/boot/config-4.xx.xx-...
/proc/config.gz
然后你可以简单地
zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz