VDB

CERTFR-2018-ALE-001

CERTFR-2018-ALE-001 PUBLISHED CVSS 8.600000381469727 HIGH

<strong>\[Mise à jour du 25/05/2018 : ajout de bulletins Microsoft (cf. section Documentation)\]</strong> <strong>\[Mise à jour du 22/05/2018 : publications de nouvelles variantes\] </strong> <strong>\[Mise à jour du 23/02/2018 : annonce d'Intel sur la sortie des mises à jour des micrologiciels (cf. section Solution)\]</strong> <strong>\[Mise à jour du 12/02/2018 : ajout des bulletins de sécurité VMware, RedHat et SUSE (cf. section Solution)\]</strong> <strong>\[Mise à jour du 23/01/2018 : modification des recommandations suite au communiqué d'Intel (cf. section Solution)\]</strong> Le 4 janvier 2018, deux vulnérabilités affectant plusieurs familles de processeurs et pouvant conduire à des fuites d'informations ont été rendues publiques \[1\]\[2\]. Intitulées Spectre et Meltdown, ces deux vulnérabilités ont reçu les identifiants CVE-2017-5715, CVE-2017-5753 pour Spectre et CVE-2017-5754 pour Meltdown. Le 21 mai 2018, deux nouvelles vulnérabilités identifiées CVE-2018-3639 et CVE-2018-3640, reposant sur des principes similaires, ont également été publiées \[42\]. ### Vulnérabilité Meltdown Les processeurs modernes intègrent plusieurs fonctionnalités visant à améliorer leurs performances. Parmi celles-ci, l'exécution dite *out-of-order* permet d'exécuter les instructions d'un programme en fonction de la disponibilité des ressources de calculs et plus nécessairement de façon séquentielle. Une faiblesse de ce mécanisme peut cependant conduire à l'exécution d'une instruction sans que le niveau de privilèges requis par celle-ci ne soit correctement vérifié. Bien que le résultat de l'exécution d'une telle instruction ne soit pas validé par la suite, il peut être possible de récupérer l'information en utilisant une attaque par canaux cachés. La vulnérabilité CVE-2017-5754 exploite l’exécution *out-of-order* sur des instructions requérant un haut niveau de privilège pour permettre l'accès en lecture à des zones mémoires propres au système d’exploitation depuis du code s’exécutant de façon non-privilégiée. En particulier, l'exploitation de cette vulnérabilité permet d'accéder depuis un programme utilisateur à la mémoire du système d'exploitation. Cela peut conduire à des fuites de données sensibles présentes en mémoire et peut inclure des informations d'autres programmes ou encore des clés de chiffrement. Cette fuite d'informations peut aussi être mise en œuvre pour faciliter la compromission d'un système. La vulnérabilité CVE-2018-3640 exploite l’exécution *out-of-order* sur des instructions requérant un haut niveau de privilège pour permettre l'accès en lecture à des registres propres au système d’exploitation depuis du code s’exécutant de façon non-privilégiée. En particulier, l'exploitation de cette vulnérabilité permet d'accéder depuis un programme utilisateur à des paramètres de configuration du processeur. Cette fuite d'informations peut aussi être mise en œuvre pour faciliter la compromission d'un système. ### Vulnérabilité Spectre L'exécution spéculative est une seconde technique d'optimisation utilisée par les processeurs modernes. Les dépendances entre les instructions limitent les possibilités d'exécution *out-of-order*. Pour remédier à cette limitation, le processeur émet des hypothèses concernant les résultats non encore disponibles. Ceci lui permet de poursuivre l’exécution *out-of-order* en utilisant ces hypothèses en remplacement des résultats attendus. On parle alors d'exécution spéculative. Ces hypothèses sont vérifiées par le processeur dès que les résultats auxquels elles se rapportent deviennent disponibles. Si elles se révèlent correctes, le processeur valide l'exécution spéculative. Mais inversement, si elles se révèlent erronées, les effets de l'exécution spéculative doivent être annulés et l'exécution doit reprendre au point on les hypothèses erronées avaient été émises, c'est à dire là où l'exécution spéculative avait débutée. Cependant les effets d'une exécution spéculative erronée sur le cache perdurent. Or, en mesurant des temps d'accès à des zones mémoires, il est possible de connaître l'état du cache. Par conséquent, un attaquant sera capable de déterminer les résultats intermédiaires d'une exécution spéculative erronée si ceux-ci influent sur l'état du cache. Cette utilisation du cache pour mener à bien l'exploitation est commune aux trois variantes de Spectre. #### Variante 1 (CVE-2017-5753) Le prédicteur de branches est un composant du processeur utilisé pour émettre des hypothèses concernant l'adresse de la prochaine instruction à exécuter. En particulier, il est utilisé pour prédire l'issue des sauts conditionnels. D'autre part, ce composant est partagé entre des codes s'exécutant dans des cloisonnements de sécurité différents (processus, niveaux de privilège). Dans la variante 1 de Spectre, un attaquant influe sur les heuristiques du prédicteur de branches pour fausser la prédiction d'un saut conditionnel s’exécutant dans un autre cloisonnement de sécurité, ce qui a pour effet de déclencher une exécution spéculative erronée. Un code est vulnérable si cette exécution spéculative erronée modifie le cache de façon qui dépende d'une valeur secrète (c'est à dire non directement accessible depuis le cloisonnement dans lequel se situe l'attaquant). Exemple de code vulnérable fourni dans l'article: \[pastacode lang="c" manual="if%20(x%20%3C%20array1_size)%0Ay%20%3D%20array2%5Barray1%5Bx%5D%20\*%20256%5D%3B" message="" highlight="" provider="manual"/\] Un attaquant maîtrisant la valeur de x peut obtenir une lecture arbitraire dans l'espace d'adressage du processus exécutant le code ci-dessus. Pour cela, l'attaquant commence par soumettre un grand nombre de x valides (c'est à dire vérifiant la condition de la ligne 1) pour faire croire au prédicteur de branches que la condition ligne 1 est toujours vraie. Puis il soumet un x pointant à une adresse arbitraire. Le prédicteur de branches estime néanmoins que la condition est vraie, ce qui déclenche l'exécution spéculative de la ligne 2. La valeur secrète pointée par x est récupérée puis utilisée pour former l'adresse d'une seconde lecture mémoire. Cette seconde lecture aura un effet sur le cache décelable par l'attaquant qui sera alors en mesure de retrouver la valeur secrète. #### Variante 2 (CVE-2017-5715) Le prédicteur de branches est également utilisé pour prédire l'issue des sauts indirects. Dans la variante 2 de Spectre, un attaquant influe sur les heuristiques du prédicteur de branches pour fausser la prédiction d'un saut indirect s’exécutant dans un autre cloisonnement de sécurité, ce qui a pour effet de déclencher une exécution spéculative erronée à une adresse arbitraire maîtrisée par l'attaquant. En choisissant correctement le code exécuté spéculativement, l'attaquant est alors capable d'obtenir une lecture arbitraire dans l'espace d'adressage du processus victime. #### Variante 3 (CVE-2018-3639) Les processeurs émettent également des hypothèses concernant l'adresse de certains accès mémoire. Pour bénéficier de plus de libertés dans l'ordre d'exécution d'opérations de lecture mémoire, le processeur va devoir prédire si celles-ci chevauchent des opérations d'écriture en attente d'exécution. Si une opération de lecture ne chevauche aucune opération d'écriture en attente d'exécution, rien ne s'oppose à qu'elle puisse être exécutée de façon anticipée. Dans la variante 3 de Spectre, un attaquant influe sur les heuristiques du processeur utilisées pour la prédiction d'adresses, ce qui a pour effet de déclencher une exécution spéculative erronée d'une opération de lecture mémoire et des instructions qui en dépendent. Un code est vulnérable si cette exécution spéculative erronée manipule une valeur secrète et la laisse fuir à travers un état observable du cache Microsoft (une des parties ayant découvert la vulnérabilité) \[43\] affirme ne pas avoir identifié de code vulnérable dans leurs produits, ce qui laisse penser que les codes vulnérables sont peu fréquents. ### Impact Les vulnérabilités décrites dans cette alerte peuvent impacter tous les systèmes utilisant un processeur vulnérable et donc de façon indépendante du système d'exploitation. Selon les chercheurs à l'origine de la découverte de ces failles, il est ainsi possible d'accéder à l'intégralité de la mémoire physique sur des systèmes Linux et OSX et à une part importante de la mémoire sur un système Windows. On notera que l'impact peut être plus particulièrement important dans des systèmes de ressources partagés de type conteneur (Docker, LXC) où il serait possible depuis un environnement restreint d'accéder à toutes les données présentes sur la machine physique dans lequel s'exécute le conteneur ou encore dans des environnements virtualisés utilisant la para-virtualisation de type Xen. ### Preuve de concept Le CERT-FR constate que des preuves de concept fonctionnelles pour Meltdown sont désormais publiques. Les règles Yara suivantes servent à détecter les binaires liés à la bibliothèque publiée par l'Institute of Applied Information Processing and Communications (IAIK) : \[pastacode lang="c" manual="rule%20meltdown_iaik_libkdump_meltdown_nonull%20%7B%0A%0Ameta%3A%0A%0Aauthor%20%3D%20%22ANSSI%22%0A%0ATLP_level%20%3D%20%22White%22%0A%0Adescription%20%3D%20%22Detects%20Meltdown%20PoC%20libkdump%20meltdown_nonull%20method%22%0A%0Aversion%20%3D%20%221.0%22%0A%0Alast_modified%20%3D%20%222018-01-09%22%0A%0Astrings%3A%0A%0A%2F\*%0A%0A.text%3A00000000000018A6%2048%2031%20C0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xor%20%20%20%20%20%20rax%2C%20rax%20%20%20.text%3A00000000000018A9%0A%0A.text%3A00000000000018A9%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20loc_18A9%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3B%20CODE%20XREF%3A%20libkdump_read_tsx%2B48j%0A%0A.text%3A00000000000018A9%208A%2001%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20al%2C%20%5Brcx%5D%0A%0A.text%3A00000000000018AB%2048%20C1%20E0%200C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shl%20%20%20%20%20%20rax%2C%200Ch%0A%0A.text%3A00000000000018AF%2074%20F8%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jz%20%20%20%20%20%20%20%20short%20loc_18A9%0A%0A.text%3A00000000000018B1%2048%208B%201C%2003%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20rbx%2C%20%5Brbx%2Brax%5D%0A%0A\*%2F%0A%0A%24asm%3D%7B%0A%0A48%2031%20C0%0A%0A8A%2001%0A%0A48%20C1%20E0%200C%0A%0A74%20F8%0A%0A48%208B%201C%2003%0A%0A%7D%0A%0Acondition%3A%20%24asm%0A%0A%7D%0A%0A%0Arule%20meltdown_iaik_libkdump_meltdown_fast%20%7B%0A%0Ameta%3A%0A%0Aauthor%20%3D%20%22ANSSI%22%0A%0ATLP_level%20%3D%20%22White%22%0A%0Adescription%20%3D%20%22Detects%20Meltdown%20PoC%20libkdump%20meltdown_fast%20method%22%0A%0Aversion%20%3D%20%221.0%22%0A%0Alast_modified%20%3D%20%222018-01-09%22%0A%0Astrings%3A%0A%0A%20%20%20%20%2F\*%0A%0A.text%3A000000000000184F%2048%2031%20C0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xor%20%20%20%20%20%20%20rax%2C%20rax%0A%0A.text%3A0000000000001852%208A%2001%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%20al%2C%20%5Brcx%5D%0A%0A.text%3A0000000000001854%2048%20C1%20E0%200C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shl%20%20%20%20%20%20%20rax%2C%200Ch%0A%0A.text%3A0000000000001858%2048%208B%201C%2003%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20rbx%2C%20%5Brbx%2Brax%5D%0A%0A\*%2F%0A%0A%24asm%20%3D%20%7B%0A%0A48%2031%20C0%0A%0A8A%2001%0A%0A48%20C1%20E0%200C%0A%0A48%208B%201C%2003%0A%0A%7D%0A%0Acondition%3A%0A%0A%24asm%0A%0A%7D%0A%0A%0Arule%20meltdown_iaik_libkdump_meltdown%20%7B%0A%0Ameta%3A%0A%0Aauthor%20%3D%20%22ANSSI%22%0A%0ATLP_level%20%3D%20%22White%22%0A%0Adescription%20%3D%20%22Detects%20Meltdown%20PoC%20libkdump%20meltdown%20method%22%0A%0Aversion%20%3D%20%221.0%22%0A%0Alast_modified%20%3D%20%222018-01-09%22%0A%0Astrings%3A%0A%0A%2F\*%0A%0A.text%3A00000000000018A8%2048%2031%20C0%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xor%20%20%20%20%20rax%2C%20rax%20%20%20.text%3A00000000000018AB%0A%0A.text%3A00000000000018AB%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20loc_18AB%3A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3B%20CODE%20XREF%3A%20libkdump_read_tsx%2B4Dj%0A%0A.text%3A00000000000018AB%2048%208B%2036%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%20rsi%2C%20%5Brsi%5D%0A%0A.text%3A00000000000018AE%208A%2001%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20%20al%2C%20%5Brcx%5D%0A%0A.text%3A00000000000018B0%2048%20C1%20E0%200C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20shl%20%20%20%20%20%20%20rax%2C%200Ch%0A%0A.text%3A00000000000018B4%2074%20F5%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20jz%20%20%20%20%20%20%20%20short%20loc_18AB%0A%0A.text%3A00000000000018B6%2048%208B%201C%2003%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20mov%20%20%20%20rbx%2C%20%5Brbx%2Brax%5D%0A%0A\*%2F%0A%0A%24asm%3D%7B%0A%0A48%2031%20C0%0A%0A48%208B%2036%0A%0A8A%2001%0A%0A48%20C1%20E0%200C%0A%0A74%20F5%0A%0A48%208B%201C%2003%0A%0A%7D%0A%0Acondition%3A%0A%0A%24asm%0A%0A%7D" message="" highlight="" provider="manual"/\] ### Campagne de pourriels Le CERT-FR constate qu'une campagne de pourriels visant à distribuer des logiciels malveillants a été lancée afin de profiter de la situation autour des vulnérabilité Spectre et Meltdown \[32\]. Des attaquants se faisant passer pour la *<span lang="de">Bundesamt für Sicherheit in der Informationstechnik </span>*<span lang="de">(BSI), l'équivalent allemand de l'ANSSI, ont envoyé des courriers électroniques invitant leurs destinataires à se rendre sur une copie du site de la BSI. La différence avec le site officiel était une modification de l'alerte concernant les vulnérabilités: l'utilisateur était invité à installer un correctif qui se trouvait être un logiciel malveillant.</span> Le CERT-FR rappelle de faire preuve de la plus grande vigilance quand à l'ouverture des courriers électroniques ainsi que d'installer les correctifs de sécurité dans les plus brefs délais, et ce uniquement depuis les sources officielles des éditeurs.

Risk Scores

CVSS v4.0
8.600000381469727
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Timeline

  • Apr 25, 2026 CVE Published
Open in Interactive Console →
$ Console Community · 100/wk Open console ›