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

23

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 des spectre-meltdown-checkerspectacles n'est pas vulnérable.

Je me demande donc ce que /proc/cpuinfocela montre. 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é?

hurrbert
la source

Réponses:

22

L'intention du champ «bugs» dans /proc/cpuinfoest décrite dans le message de validation qui l'a introduit :

x86/cpufeature: Ajouter des indicateurs de bogues à /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 des fonctionnalités distinctes ( par exemple, le tristement célèbre bogue F00F, qui a sa propre f00f_bugentrée dans /proc/cpuinfoles 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 les 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 a détecté un bogue matériel. Vous devrez chercher ailleurs (messages de démarrage ou /procentrées spécifiques ou /sysentrées telles que les fichiers /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. Parce que la «détection» est 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/cpuinfo fonctionne comme suit , sur x86:

Stephen Kitt
la source
2
Dans le cas du spectre et de l'effondrement, ils ne sont même pas détectés mais simplement supposés . J'ai un x86 en ordre qui n'est pas affecté non plus, mais le noyau signale simplement que c'est de toute façon en raison d'une règle codée en dur qui dit essentiellement que "tout processeur Intel plus ancien que X sans patch de microcode appliqué est vulnérable à la fusion".
R ..
2
@R .. votre processeur est-il inclus dans les tableaux de commande du noyau? (Recherchez «cpu_no_speculation» ici pour voir les derniers tableaux.) C'est en effet l'un des problèmes avec l'entrée «bugs» wrt. Meltdown, Spectre et co., Sa précision dépend vraiment de la récente date de votre noyau car leur «détection» est pilotée par une table.
Stephen Kitt
Non, c'est un Centerton Bonnell et il manque de là. Je verrai à propos de la soumission d'un patch.
R ..
Est-ce que quelqu'un sait si cela est toujours correct lorsque des mises à jour du microcode ont été appliquées au démarrage mais après le chargement du noyau?
Bachsau
12

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

En bref, les correctifs logiciels / microcodes actuels 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 les autorisent 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, avoir cet avertissement ne signifie pas que les méthodes connues des exploits Spectre / Meltdown fonctionneront; ils ne fonctionneront pas si les correctifs sont installés.

Dans le cas mentionné dans la question, le noyau vérifie uniquement 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 ceux cpu-insecurequi sont toujours répertoriés dans la section des bogues / line in /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.

Rui F Ribeiro
la source
2
Par exemple, si vous pouvez suspendre l'achat de matériel pendant un certain temps, attendez une nouvelle génération de CPU. Ma boule de cristal me dit que nous aurons beaucoup de serveurs d'occasion à vendre des arachides à moyen terme.
Rui F Ribeiro
Les bogues CPU sont répertoriés /proc/cpuinfomême s'ils sont entièrement atténués par un correctif logiciel. Leur présence ne signifie pas que votre système est vulnérable à ce bogue particulier.
Gilles 'SO- arrête d'être méchant'
@Gilles accordé, vous ne pourrez pas appliquer les exploits connus. Cependant, nous avions déjà déjà une série d'exploits autour de la 1ère génération de correctifs, et je me risquerais à dire qu'il y a beaucoup d'intérêts commerciaux là-bas faisant taire les critiques de ce qui est une faille de conception fondamentale qui forcera une refonte majeure du CPU.
Rui F Ribeiro
1
C'est vrai pour les exploits de type Spectre / Meltdown, ce sont des problèmes de conception fondamentaux qui continueront de donner. Mais vous avez écrit que cela est vrai pour les bugsspectacles en ligne, et c'est tout simplement faux. La plupart des bogues de conception du processeur ont une solution logicielle complète qui ne coûte que peu de performances. Si le noyau applique la solution de contournement, le bogue est inoffensif.
Gilles 'SO- arrête d'être méchant'
1
@Rui oh je pense que je ne me suis pas exprimé assez clairement - je voulais dire que l'article n'a pas répondu à la question posée par son propre titre, pas qu'il n'a pas répondu à cette question ;-). (Comme dans, le titre de l'article est «Comment le bogue Spectre révolutionnaire est resté secret pendant sept mois», mais l'article n'explique pas comment l' OMI.)
Stephen Kitt