web-dev-qa-db-fra.com

Que montre réellement la section "bugs" de / proc / cpuinfo?

Sur un système Debian Stretch et testing/Buster avec un noyau actuel et un microcode installé, je vois toujours la fusion et le spectre répertoriés comme bogues dans /proc/cpuinfo.

Cependant, l'exécution de spectre-meltdown-checker montre non vulnérable.

Je me demande donc ce que /proc/cpuinfo s'affiche. S'agit-il uniquement des vulnérabilités de ce processeur et celles-ci seront-elles toujours répertoriées malgré un système corrigé?

24
hurrbert

L'intention du champ "bugs" dans /proc/cpuinfo Est décrite dans le message de validation qui l'a introduit :

x86/cpufeature: Ajoutez des indicateurs de bogue à /proc/cpuinfo

Vider les indicateurs qui indiquent que nous avons détecté et/ou appliqué des solutions de contournement de bogues au processeur sur lequel nous exécutons, de la même manière que les indicateurs de fonctionnalité.

L'avantage est que ceux-ci ne s'accumulent pas au fil du temps comme les fonctionnalités du CPU.

Auparavant, les bogues matériels détectés par le noyau étaient répertoriés comme fonctionnalités distinctes ( par exemple le tristement célèbre bogue F00F, qui possède sa propre entrée f00f_bug Dans /proc/cpuinfo Sur les systèmes x86 32 bits). L'entrée "bugs" a été introduite pour les contenir dans une seule fonctionnalité à l'avenir, dans le même style que drapeaux CPU x86 .

En ce qui concerne la signification des entrées dans la pratique, comme vous pouvez le voir dans le message, tout ce qui est garanti est que le noyau détecté un bug matériel. Vous devrez chercher ailleurs (messages de démarrage ou entrées spécifiques /proc Ou /sys Telles que les fichiers dans /sys/devices/system/cpu/vulnerabilities/) Pour déterminer si les problèmes sont traités.

L'utilité des entrées "bugs" est limitée de deux manières. La première est que les vrais négatifs ne peuvent pas être distingués des inconnus: si le champ ne spécifie pas "cpu_meltdown", vous ne pouvez pas savoir (juste à partir du champ) si cela signifie que le noyau ne connaît pas Meltdown, ou que votre CPU n'est pas affecté par Meltdown. La seconde est que la détection peut être trop simpliste; il fait preuve de prudence, il peut donc signaler que votre processeur est vulnérable lorsqu'il ne l'est pas. La "détection" étant pilotée par table, sa précision dépend de la version du noyau que vous exécutez.

Dans le cas des bugs Meltdown et Spectre, le processus de détection qui alimente les valeurs dans /proc/cpuinfofonctionne comme suit , sur x86:

22
Stephen Kitt

Les vulnérabilités Meltdown/Spectre sont sur la conception/architecture du chipset CPU, et à moins d'acheter du nouveau matériel futur, les correctifs sont une belle illusion de sécurité sur le long terme. De nouvelles méthodes d'exploitation des failles pourraient apparaître au fil du temps, capables de contourner les correctifs actuels.

En bref, les correctifs logiciels actuels/microcode atténuent les problèmes par rapport aux méthodes connues de la famille d'exploits Spectre/Meltdown, mais ne résolvent pas les problèmes de conception de processeur sous-jacents qui leur permettent en premier lieu. Les CPU concernés (plusieurs générations) n'ont pas cessé d'être vulnérables à long terme (et ne le seront probablement jamais).

Cependant, comme l'indique correctement @Gilles, cet avertissement ne signifie pas que les méthodes connues actuelles de Spectre/Meltdown fonctionneront; ils ne fonctionneront pas si les correctifs sont installés.

Dans le cas mentionné dans la question, le noyau ne vérifie que les modèles de CPU connus pour être affectés par Spectre/Meltdown (tous les CPU x86 pour l'instant si nous ne parlons que de x86), et donc le cpu-insecure toujours répertorié dans la section/ligne de bogue dans /proc/cpuinfo.

Allez vérifier votre /proc/cpuinfo. Il contiendra cpu_insecure si votre noyau a le patch KPTI

J'ai trouvé que le patch KPTI a ce morceau de code:

   /* Assume for now that ALL x86 CPUs are insecure */
   setup_force_cpu_bug(X86_BUG_CPU_INSECURE);

Et après la mise à jour du noyau, vous obtenez:

bugs      : cpu_insecure

PS. Il y avait déjà une série de mises à jour pour une nouvelle méthode d'exploitation des "bogues" Spectre/Meltdown. Ce ne sera probablement pas la dernière fois.

12
Rui F Ribeiro