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?
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?
Réponses:
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:
Pi 1 et zéro (W) : ARM11
Pi 2 V1 : BRAS Cortex-A7
Pi 2 V1.2 et Pi 3 : BRAS Cortex-A53
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.
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.
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.