La société Intel informations sur le nouveau dans ses processeurs — (Microarchitectural Data Sampling). Comme les précédentes attaques de la classe Spectre, les nouveaux problèmes peuvent entraîner la fuite de données sensibles du système d'exploitation, des machines virtuelles et d'autres processus. Il est affirmé que les problèmes ont d'abord été détectés par des employés et partenaires d'Intel lors d'un audit interne, après quoi des informations sur des problèmes similaires chez Intel ont été transmises par des chercheurs indépendants. Les processeurs AMD et ARM ne sont pas affectés par ce problème.
Sur la base des problèmes identifiés par des chercheurs de l'Université technique de Graz (Autriche) plusieurs attaques pratiques par canaux auxiliaires :
- () — permet d'extraire des informations confidentielles d'autres processus, du système d'exploitation, des machines virtuelles et des enclaves sécurisées (TEE, Trusted Execution Environment). Par exemple, il a été montré qu'il est possible de déterminer l'historique des pages ouvertes dans le navigateur Tor, lancé dans une autre machine virtuelle, ainsi que d'identifier les clés d'accès et mots de passe utilisés dans les applications ;
- () — permet d'organiser la fuite d'informations entre différentes zones isolées dans les processeurs Intel, telles que les tampons, les zones de stockage et les ports de chargement. Des exemples d'attaques ont été montrés pour organiser des fuites d'autres processus, du système d'exploitation, des machines virtuelles et des enclaves sécurisées. Par exemple, il a été démontré comment connaître le contenu du hash du mot de passe root depuis /etc/shadow lors de tentatives d'authentification périodiques (l'attaque a duré 24 heures) ;

De plus, un exemple d'attaque utilisant JavaScript et WebAssembly a été montré lors de l'ouverture d'une page malveillante dans l'environnement SpiderMonkey (dans les navigateurs modernes, une telle attaque est peu probable en raison des limitations de précision du minuteur et des mesures de protection contre Spectre) ;

- () — permet de lire les données récemment enregistrées par le système d'exploitation et de déterminer la disposition de la mémoire OS pour faciliter la réalisation d'autres attaques ;
- — exploite les optimisations CPU liées aux tampons et peut être utilisé pour contourner le mécanisme de randomisation de l'espace d'adressage du noyau (KASLR), pour surveiller l'état du système d'exploitation ou pour des fuites en combinaison avec des gadgets utilisant des méthodes Spectre.
Identifiés :
- CVE-2018-12126 — MSBDS (Échantillonnage des données de tampon de stockage microarchitectural), récupération du contenu des tampons de stockage. Utilisé dans l'attaque Fallout. Le niveau de danger est évalué à 6,5 points (CVSS);
- CVE-2018-12127 — MLPDS (Échantillonnage des données de port de chargement microarchitectural), récupération du contenu des ports de chargement. Utilisé dans l'attaque RIDL. CVSS 6,5;
- CVE-2018-12130 — MFBDS (Échantillonnage des données de tampon de remplissage microarchitectural), récupération du contenu des tampons de remplissage. Utilisé dans les attaques ZombieLoad et RIDL. CVSS 6,5;
- CVE-2019-11091 — MDSUM (Échantillonnage des données microarchitectural de mémoire non cacheable), récupération du contenu de la mémoire non cacheable. Utilisé dans l'attaque RIDL. CVSS 3,8.
Problèmes identifiés concernant la possibilité d'appliquer des méthodes d'analyse par canaux auxiliaires aux données dans les structures microarchitecturales, auxquelles les applications n'ont pas directement accès. Il s'agit de structures de bas niveau telles que les tampons de remplissage (Line Fill Buffer), les tampons de stockage (Store Buffer) et les ports de chargement (Load Port), qui sont des blocs plus petits que le cache de premier niveau (L1D), le cache de chargement de données (RDCL) ou L1TF (L1 Terminal Fault), et contiennent donc moins d'informations et sont mis à jour plus fréquemment.

Les attaques par canaux auxiliaires sur les structures microarchitecturales sont beaucoup plus difficiles à réaliser par rapport aux méthodes de récupération du contenu du cache et nécessitent le suivi et l'analyse de volumes importants de données pour établir leur lien avec des adresses spécifiques en mémoire (en substance, l'attaquant ne peut pas cibler des données spécifiques, mais peut accumuler des fuites pendant une longue période et appliquer des méthodes statistiques pour reconstruire certains types de données). De plus, l'attaque n'affecte que les données sur le même cœur physique du CPU que le code de l'attaquant.
Les méthodes proposées pour déterminer le contenu des structures microarchitecturales reposent sur le fait que ces structures sont utilisées lors de traitements spéculatifs d'exceptions (fault) ou d'opérations de chargement et de stockage.
Lors de l'exécution spéculative, le contenu des structures internes est redirigé pour traitement dans des registres ou dans le cache. Les opérations spéculatives ne sont pas terminées et le résultat est rejeté, mais le contenu redirigé peut être déterminé par des méthodes d'analyse du cache par canaux auxiliaires.
Les ports de chargement sont utilisés par le processeur pour obtenir des données de la mémoire ou du sous-système d'entrée/sortie et fournir les informations reçues dans les registres du CPU. En raison de la manière dont ils sont implémentés, les données des anciennes opérations de chargement restent dans les ports jusqu'à ce qu'elles soient écrites à nouveau, ce qui permet de déterminer indirectement l'état des données dans le port de chargement par le biais de manipulations d'exceptions (faults) et d'instructions SSE/AVX/AVX-512 qui chargent plus de 64 bits de données. Dans de telles conditions, les opérations de chargement exposent de manière spéculative les anciennes valeurs des données des structures internes aux opérations dépendantes. Une fuite similaire se produit à travers le tampon de stockage, utilisé pour accélérer l'écriture dans le cache CPU et comprenant une table d'adresses, de valeurs et de drapeaux, ainsi qu'à travers le tampon de remplissage, qui contient des données manquantes dans le cache L1 (cache-miss), en attendant leur chargement depuis d'autres niveaux de cache.
Le problème modèles de processeurs Intel, lancés depuis 2011 (à partir de la 6ème génération). Les vulnérabilités matérielles sont bloquées à partir de certains modèles des 8ème et 9ème générations d'Intel Core et de la 2ème génération d'Intel Xeon Scalable (cette vérification peut se faire via le bit ARCH_CAP_MDS_NO dans le MSR IA32_ARCH_CAPABILITIES). Les vulnérabilités sont également déjà au niveau des firmwares, du microcode et des systèmes d'exploitation. Selon Intel, la perte de performance après activation du correctif pour la plupart des utilisateurs 3%. En désactivant la technologie Hyper-Threading, la baisse de performance peut atteindre 9% dans le test SPECint_rate_base, jusqu'à 11% lors de calculs entiers intensifs et jusqu'à 19% lors de l'exécution d'applications Java sur serveur (avec HT activé, la baisse de performance est presque inexistante). Les correctifs n'affectent pratiquement pas la performance des opérations liées à l'entrée/sortie.
Dans le noyau Linux, la protection contre les MDS dans les mises à jour 5.1.2, 5.0.16,
se base sur le nettoyage du contenu des buffers microarchitecturaux lors du retour du noyau vers l'espace utilisateur ou lors du transfert de contrôle au système invité, pour lequel l'instruction VERW est utilisée. Pour que les protections fonctionnent, il est nécessaire d'avoir le support du mode MD_CLEAR, implémenté dans la dernière mise à jour du microcode. Pour une protection complète, il est également recommandé de désactiver l'Hyper-Threading. Pour vérifier si le système est vulnérable, consultez le cœur de Linux. Le gestionnaire « /sys/devices/system/cpu/vulnerabilities/mds ». Pour gérer l'activation des différents modes de blocage des vulnérabilités, un paramètre « mds= » a été ajouté au noyau, qui peut prendre les valeurs « full », « full,nosmt » (désactivation de l'Hyper-Threading), « vmwerv » et « off ».
Des mises à jour de paquets ont déjà été publiées pour et , mais restent pour l'instant indisponibles pour , et .
Le correctif pour le blocage des fuites de données des machines virtuelles est également pour l'hyperviseur Xen. Pour protéger les systèmes de virtualisation effectuant l'appel de la commande L1D_FLUSH avant de transférer le contrôle à une autre machine virtuelle, ainsi que pour protéger les enclaves Intel SGX, une mise à jour du microcode est suffisante.
Source : opennet.ru


