Comment vérifier si le noyau Linux est activé "Retpoline" ou non?

17

Quant à la vulnérabilité de sécurité «Spectre», «Retpoline» a été introduite pour être une solution pour atténuer le risque. Cependant, j'ai lu un article qui mentionnait:

Si vous construisez le noyau sans CONFIG_RETPOLINE, vous ne pouvez pas construire de modules avec retpoline, puis vous attendre à ce qu'ils se chargent - car les symboles thunk ne sont pas exportés.

Si vous construisez le noyau avec la retpoline, vous pouvez charger avec succès des modules qui ne sont pas construits avec retpoline. ( Source )

Existe-t-il un moyen simple et commun / générique / unifié de vérifier si le noyau est activé "Retpoline" ou non? Je veux le faire pour que mon installateur puisse utiliser la bonne construction du module du noyau à installer.

Weishan Yang
la source

Réponses:

21

Si vous utilisez des noyaux de ligne principale, ou la plupart des noyaux de distributions majeures, la meilleure façon de vérifier la prise en charge complète de retpoline ( c'est -à- dire que le noyau a été configuré avec CONFIG_RETPOLINE, et a été construit avec un compilateur capable de retpoline) est de rechercher «Retpoline générique complète ”Dans /sys/devices/system/cpu/vulnerabilities/spectre_v2. Sur mon système:

$ cat /sys/devices/system/cpu/vulnerabilities/spectre_v2
Mitigation: Full generic retpoline, IBPB, IBRS_FW

Si vous voulez des tests plus complets, pour détecter les retpolines sur les noyaux sans le spectre_v2fichier systree, regardez comment ça se spectre-meltdown-checkerpasse.

Stephen Kitt
la source
2
Pour vérifier également d'autres vulnérabilités liées à la fusion / spectre, exécutez $ grep . /sys/devices/system/cpu/vulnerabilities/*, ce qui est suggéré dans le blog de Greg Kroah-Hartman .
Alex Vong
1
Merci @Alex; Je répondais à la question spécifique, mais c'est utile - même si je head /sys/devices/system/cpu/vulnerabilities/*me préfère ;-). Cela couvre actuellement les vulnérabilités de Meltdown / Spectre, mais devrait également couvrir toutes les futures vulnérabilités de nature similaire (l'espace de noms est délibérément générique).
Stephen Kitt
@StephenKitt Ouais, headdonne une sortie formatée plus agréable.
Alex Vong
4

La réponse de Stephen Kitt est plus complète dans ce cas spécifique, car le support de retpoline a également besoin d'une nouvelle version du compilateur.

Mais dans le cas général, la plupart des distributions ont le fichier de configuration du noyau disponible dans l'un des emplacements suivants:

  • /boot/config-4.xx.xx-...
  • /proc/config.gz

Ensuite, vous pouvez simplement zgrep CONFIG_RETPOLINE /boot/config* /proc/config.gz

jpa
la source
4
Je recommande de ne pas entrer /boot/config*, car cela peut trouver CONFIG_RETPOLINEdans une image du noyau qui est installée mais pas en cours d'exécution, donnant un faux sentiment de sécurité. Examiner /proc/config.gzou /sys/...est sûr, mais de nombreuses distributions Linux compilent le noyau sans /proc/config.gz.
pts
Pourriez-vous rendre la logique un peu plus intelligente et utiliser uname (ou l'équivalent syscall) pour obtenir le noyau en cours d'exécution, puis examiner ce fichier / boot / config particulier?
Adam Luchjenbroers
@pts /boot/config-$(uname -r), alors?
muru
2
L'utilisation /boot/config-$(uname -r)n'est pas non plus infaillible: elle ne garantit toujours pas que la configuration correspond au noyau en cours d'exécution. Les noyaux Distro gardent les mêmes uname -rsur plusieurs versions, tant que le noyau ABI ne change pas.
Stephen Kitt
Merci à tous pour votre réponse. Votre réponse et votre message sont utiles.
Weishan Yang