web-dev-qa-db-fra.com

Comment vérifier si KPTI est activé sur Linux?

La Meltdown attack FAQ indique que KPTI est le correctif pour linux. Comment vérifier si KPTI fonctionne/est activé?

25
Shelvacu

Les choses qui indiquent l'état de KPTI:

  • Dans les noyaux standard, les chaînes Kernel/User page tables isolation: enabled ou Kernel/User page tables isolation: force enabled on command line dans la sortie dmesg signifie que le noyau effectue l'isolement de la table des pages du noyau. Ce dernier message signifie en outre que le noyau pense que l'isolation de la table des pages n'est pas requise pour ce processeur.

  • Dans certains noyaux corrigés par les fournisseurs (principalement RedHat et dérivés): une valeur non nulle dans /sys/kernel/debug/x86/pti_enabled. Le absence de ce fichier ne signifie cependant rien: le noyau standard ne le fournit pas.

  • Dans le noyau 4.14.18 ou plus récent et les versions correspondantes des noyaux LTS, le contenu de /sys/devices/system/cpu/vulnerabilities/meltdown: une ligne commençant par Mitigation: indique qu'une atténuation (KPTI, microcode ou autre) est en place, une ligne commençant par Not affected indique que le CPU n'est pas affecté par le problème, et une ligne commençant par Vulnerable indique que le CPU est considéré comme vulnérable, mais aucune atténuation ou une atténuation suffisante n'est en place.

Choses qui n'indiquent pas l'état de KPTI:

  • Version du noyau. Le noyau 4.14.11 et plus récent, et les versions correspondantes des noyaux 4.1, 4,4 et 4.9 LTS sont capable de KPTI, mais ils peuvent être compilés avec celui-ci désactivé, et il peut être désactivé à temps de démarrage. De plus, les versions antérieures à celles-ci ne sont pas automatiquement menacées: certaines distributions ont rétroporté les correctifs KPTI vers des noyaux plus anciens.

  • bugs : cpu_insecure dans /proc/cpuinfo. La présence de ceci indique que if le noyau est compilé pour l'isolement de la table des pages, et if l'isolement de la table des pages n'a pas été désactivé au démarrage ou à l'exécution, alors page -l'isolement de la table sera utilisé. De plus, cela pas indique qu'un CPU est vulnérable à l'attaque de Meltdown: le noyau 4.14.11 le définit pour tous les CPU x86, tandis que le noyau 4.14.12 le définit pour tous les CPU non AMD, même ceux comme le Pentium MMX ou le "Bonnell" Atom CPU qui ne sont pas vulnérables.

  • CONFIG_PAGE_TABLE_ISOLATION=y dans la configuration du noyau. Cela indique seulement que le noyau est capable d'isoler le noyau page-table. KPTI peut être désactivé au démarrage à partir de la ligne de commande du noyau via nopti ou pti=off options. Sur certains systèmes, il peut être désactivé lors de l'exécution en écrivant 0 à /sys/kernel/debug/x86/pti_enabled.

10
Mark

Le noyau Linux enregistre l'état KPTI au démarrage, donc l'exécution de la commande suivante afficherait l'état sur les noyaux corrigés. S'il n'imprime rien alors, KPTI est désactivé.

dmesg -wH | grep 'Kernel/User page tables isolation'

Linux Kernel 4.15rc6 a activé KPTI (Kernel page-table isolation) et il a été porté en arrière sur Linux Kernel 4.14.11 , 4.9.74, 4.4.109, 3.16.52 et 3.2.97 .

Donc, si vous exécutez l'une de ces versions, KPTI est en place. La plupart des distributions (exécutant n'importe quelle version du noyau Linux) pousseront une mise à jour du noyau Linux dans un jour ou deux pour corriger Meltdown et spectre.

Remarque: ajoutez le paramètre pti=off au GRUB afin de désactiver le KPTI. Pour info: https://askubuntu.com/questions/19486/how-do-i-add-a- kernel-boot-parameter

17
Aadhil RF

Sur un noyau pris en charge:

dmesg | grep 'Isolement des tables de pages noyau/utilisateur'

entraînera soit activé ou désactivé.

S'il n'y a pas de résultat, le noyau ne prend pas en charge KPTI.

8
foxer

Vérifiez la sortie dmesg, comme dmesg | grep isolation, pour déterminer s'il est activé pour votre machine en cours d'exécution.

Quelques détails supplémentaires sont mentionnés ici: https://lwn.net/Articles/741878/

  • Il y aura une option de ligne de commande nopti pour désactiver ce mécanisme au démarrage.
  • Il y a l'option de noyau PAGE_TABLE_ISOLATION qui active les correctifs KPTI, et si CONFIG_IKCONFIG est activé, vous pouvez vérifier le noyau en cours d'exécution par zcat /proc/config.gz | grep CONFIG_PAGE_TABLE_ISOLATION=y
  • Il existe un indicateur de fonctionnalité X86_BUG_CPU_INSECURE, et si le processeur n'est pas affecté, l'isolation de la table des pages est désactivée.
3
S. Huber

Recherchez une ligne contenant Kernel/User page tables isolation dans dmesg sortie. Mais comme le début du tampon d'anneau du noyau peut ne plus être là, une autre possibilité est de rechercher la même chaîne dans /var/log/kern.log (ou l'une de ses versions pivotées, ou un autre fichier journal).

Notez également que les invités Xen peuvent ne pas avoir une telle ligne. Par exemple, c'est le silent_disable cas dans Arch/x86/mm/kaiser.c du noyau Debian/stretch (4.9.65-3 + deb9u2):

void __init kaiser_check_boottime_disable(void)
{
[...]
        if (boot_cpu_has(X86_FEATURE_XENPV))
                goto silent_disable;
[...]
disable:
        pr_info("disabled\n");

silent_disable:
        kaiser_enabled = 0;
        setup_clear_cpu_cap(X86_FEATURE_KAISER);
}
3
vinc17

Je suis également préoccupé par l'impact sur les performances du correctif de fusion. Nous exécutons la majeure partie de la charge de travail sur Amazon Linux sur EC2.

J'ai remarqué que la dernière mise à jour du noyau (build 03 janvier 2018) - 4.9.70-25.242 inclut tous les correctifs de fusion en amont (vérifiez rpm -q --changelog kernel).

Par défaut, le noyau Amazon Linux 4.9.70-25.242 et versions ultérieures active l'isolement des tables de pages (CONFIG_PAGE_TABLE_ISOLATION=y) donc je pense que tant que ce drapeau est y alors KPTI est activé, malheureusement. Je n'ai pas fait de comparaison de différences de performances (cela devrait être perceptible).

2
Terry Wang