Le Raspberry Pi est-il vulnérable à l'exploit Spectre ou Meltdown?


58

Deux nouvelles failles de sécurité sérieuses ont été découvertes, Specter et Meltdown .

Le Raspberry Pi est-il vulnérable au spectre et / ou à la fusion?


1
Selon les chercheurs: À l’heure actuelle, on ignore si les processeurs ARM et AMD sont également affectés par la fusion.
Janghou

1
Vous pouvez par exemple voler un mot de passe avec Javascript dans un navigateur (Chrome / Firefox).
Janghou

4
@ alex2003super: Ne panique pas. Bien que l’échelle des périphériques affectés soit stupéfiante, les chances que vous soyez réellement affecté par ce problème sont plutôt faibles. Et même s'ils ne l'étaient pas, paniquer ne servirait à rien. :)
Courses de légèreté avec Monica

1
Il semble qu'ils ne soient pas vulnérables, voici un article récent sur le sujet raspberrypi.org/blog/…
Omar Elabd

5
Vous pourriez trouver ce post intéressant: raspberrypi.org/blog/…
pfm

Réponses:


61

Selon ARM eux-mêmes, les cœurs de processeur utilisés dans tous les modèles antérieurs au Pi 4 ne sont pas vulnérables .

La plupart des processeurs Arm ne sont affectés par aucune variation de ce mécanisme de spéculation par canal latéral. Vous trouverez ci-dessous une liste définitive du petit sous-ensemble de processeurs conçus par Arm. [voir lien pour le tableau]

Les cœurs de processeur utilisés par les anciens Pis sont:

Aucun des cœurs ci-dessus n'est répertorié comme vulnérable à une version de l'attaque (ils ne le sont pas du tout, car il n'existe aucune vulnérabilité connue à ces attaques).

Le Raspberry Pi 4 utilise le Cortex-A72 , répertorié comme vulnérable contre les variantes 1, 2, 3a et 4. Comme indiqué dans La Raspberry Pi 4 est-il vulnérable aux exploits Spectre? , Raspbian contient des solutions logicielles pour atténuer ces vulnérabilités, de sorte que le risque d’exploitation devrait être faible. D’autres systèmes d’exploitation peuvent ne pas contenir les mesures d’atténuation appropriées. Même si ARM indique que des mesures d’atténuation matérielles ont été publiées pour le Cortex-A72, il n’est pas clair si cela a été appliqué à la Pi 4.

Notez que les variantes 1 et 2 (CVE-2017-5753 et CVE-2017-5715) sont connues sous le nom de Spectre , et que les variantes 3 (CVE-2017-5754) et 3a (une attaque connexe sur laquelle ARM a enquêté) sont appelées Meltdown . Par conséquent, aucun des appareils Raspberry Pi antérieurs à Pi 4 ne semble vulnérable à Spectre ou à Meltdown.


Je me demande si les modifications du noyau Linux requises sur d'autres architectures seront répercutées sur les versions de Linux exécutées sur Raspberry Pi? Soi-disant, ces modifications ralentiront le système, donc le RP sera affecté même si les correctifs ne sont pas nécessaires.
Bobby Durrett

4
Le correctif de noyau détecte le processeur sur lequel il s'exécute et se désactive automatiquement s'il ne s'agit pas d'un modèle affecté. De plus, les noyaux de Raspberry Pi (et de la plupart des autres ordinateurs à carte unique) sont conçus spécifiquement pour le matériel disponible, et les responsables ne sont pas motivés à inclure ou activer le correctif en question.
Perkins

1
@BobbyDurrett, les modifications apportées au noyau par Meltdown se trouvent dans la section de la base de code spécifique à x86. Les modifications liées à Spectre sont omniprésentes, mais la plupart d'entre elles se trouvent dans des sections de code spécifiques au processeur ou sont gérées par le compilateur. Certains bits, tels que les modifications structurelles du code de réseau, peuvent fuir dans le Pi, mais la plupart ne le font pas.
Mark

Merci pour les commentaires. Il est intéressant de savoir quelles parties du code du noyau Linux sont spécifiques au processeur. Je suppose qu'avec un système d'exploitation fonctionnant sur de nombreux types de processeurs différents, vous devez décomposer le code spécifique à chaque processeur.
Bobby Durrett

22

Le Pi (toutes les versions) n'est pas vulnérable.

Spectre et Meltdown requièrent tous deux une exécution dans le désordre. Le Cortex-A7 utilisé dans les premiers Pi 2 et le Cortex A53 utilisé dans les derniers Pi 2 et Pi 3 est une architecture strictement en ordre. L' ARM11 utilisé dans le Pi 1 est partiellement en panne, mais pas d'une manière qui permette à Spectre ou à Meltdown de fonctionner.

ARM le confirme : seuls un sous-ensemble très limité de processeurs ARM ont un matériel qui les rend vulnérables à Spectre, un sous-ensemble encore plus limité est vulnérable à la fusion et on pense que tous permettent d'atténuer la menace.


10

Je voudrais offrir mon point de vue différent sur cela.

À propos de Meltdown, il s’agit d’une vulnérabilité très spécifique de certains processeurs. Par conséquent, si ARM indique que le processeur de Raspberry Pi n’est pas vulnérable, vous pourrez probablement y faire confiance.

Cependant, Spectre est une vulnérabilité plus générale. Jusqu'à présent, seules deux variantes ont été démontrées, mais je suis à peu près sûr qu'il y en a plus. L'erreur de la CPU est que l'état du prédicteur de branche n'est pas vidé lors de la commutation de contexte, et que cet état est indexé par les bits de poids faible de l'adresse d'instruction de branche et qu'il n'est pas du tout étiqueté. Vous pouvez donc avoir deux branches partageant le même état de prédicteur de branche, même au-delà des limites du processus.

Je suis persuadé que le processeur de tous les modèles Raspberry Pi est similaire à celui de tous les autres processeurs, en ce sens que le prédicteur de branche n’est qu’un grand nombre de compteurs saturants à 2 bits (fortement pris, faiblement pris, faiblement non pris, fortement pas pris). L'index de cette matrice est constitué des bits de poids faible de l'adresse d'instruction de branche. Il n'y a pas d'étiquette et cet état de prédicteur n'est jamais vidé.

À présent, si deux branches partagent le même état prédicteur, vous pouvez mesurer la manière dont une branche particulière a évolué dans un passé très récent. La fuite d'informations de Spectre est donc là! Si vous pouvez obliger le navigateur à exécuter de manière fiable une branche du code sur votre mot de passe à partir de JavaScript et à mesurer la direction prise par les branches, vous pouvez effectivement extraire le mot de passe. Maintenant, c’est un exemple extrême, personne ne voudrait créer une branche sur chaque bit de votre mot de passe d’une manière qui puisse être déclenchée à partir de JavaScript, mais cela montre le problème.

Ne croyez pas tout ce que dit ARM. ARM signifie probablement que les exploits développés par Google ne fonctionnent pas sur ces processeurs ARM. Cela ne signifie pas qu'ils seraient invulnérables à Spectre. Un autre type d'exploit pourrait fonctionner.

Voir cette question: https://security.stackexchange.com/questions/176678/is-branch-predictor-flush-instruction-a-complete-spectre-fix et comprendre les implications de sa réponse. Un code JavaScript erroné s'exécutant dans votre navigateur peut, en raison de Spectre, indiquer le chemin que les autres branches du processus ont utilisé. Même une instruction de vidage du prédicteur de branche ne résoudra pas ce problème JavaScript non autorisé, sauf si le navigateur supprime activement le prédicteur de branche avant d'exécuter du code non approuvé.

Specter restera avec nous très longtemps, car un prédicteur de branche utilisant 14 bits en tant qu'index n'est pas étiqueté avec les 18 bits restants d'un espace adresse de 32 bits, car il aurait alors besoin de 20 bits (compteur saturant 2 bits). , Balise 18 bits) au lieu de 2 bits seulement. Cela multiplierait par dix la taille du prédicteur de branche! Je m'attends à ce que les fabricants de processeurs ajoutent une instruction de vidage du prédicteur de branche qui fonctionne même dans l'espace utilisateur sans privilèges spéciaux et que le noyau l'utilise lors de la commutation de contexte et que l'espace utilisateur l'utilise lors de l'exécution de code JITed non approuvé. Cela réglerait la plupart des problèmes de Spectre dans la pratique, mais pas tous en théorie.


" Maintenant, si deux branches partagent le même état prédicteur, vous pouvez mesurer la manière dont une branche particulière a évolué dans un passé très récent. " Comment procédez-vous sans une exécution spéculative?
Peter Taylor

@PeterTaylor ces processeurs ARM ont un prédicteur de branche et, par conséquent, une exécution spéculative. Ce qui leur manque, c'est une exécution dans le désordre.
Juhist

Ils sont documentés pour avoir des instructions spéculatives, mais ce n'est pas une exécution spéculative. Il est juste qu'il soit encore possible de l'utiliser comme un oracle.
Peter Taylor le

Même une extraction spéculative peut être suffisante, car il y aura une différence de latence mineure mais mesurable.
juhist

Linux ajoutait déjà la randomisation des adresses de noyau; vous ne pouvez pas prédire l'adresse d'une succursale.
MSalters
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.