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.

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.


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


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.