Récit de la découverte effarante des failles Spectre et Meltdown

Nicolas Furno |

L’année a commencé sur les chapeaux de roue dans le monde de l’informatique ! Dès le 2 janvier, on découvrait l’existence d’une faille de sécurité vieille de dix ans touchant tous les processeurs Intel. Ce n’était que la partie émergée de l’iceberg ; on découvrait le lendemain l’existence de deux failles, surnommées Meltdown et Spectre, concernant tous les processeurs récents (lire : Meltdown et Spectre : tout savoir sur les failles historiques des processeurs).

Les correctifs sont en train d'arriver, au moins pour Meltdown, une faille qui ne touche que les processeurs Intel, mais qui est aussi très simple à exploiter. Corriger Spectre nécessitera davantage de temps, puisque c’est une faille liée à la conception même de tous les processeurs récents, mais il y a aussi des solutions à court terme pour limiter son impact — Apple a déployé des patchs sur macOS comme sur iOS.

Maintenant que l’on commence à respirer un petit peu, on peut revenir sur l’un des aspects les plus fascinants de ces failles. Il n’y a pas qu’un seul chercheur en sécurité qui a déniché Spectre et Meltdown, ni même une seule équipe ; en l’espace de quelques mois, ce ne sont pas moins de quatre personnes ou équipes qui ont trouvé ces failles, et ce en parallèle.

L’une des équipes de chercheurs qui a trouvé la faille Meltdown. (montage MacGeneration) Cliquer pour agrandir

Comment est-ce possible ? Des articles de Wired et de Bloomberg permettent d’en savoir plus sur ces découvertes. C’est passionnant, mais aussi un petit peu inquiétant… on vous dit tout.

Une faille trop énorme pour être inconnue, pensent des chercheurs

La découverte d’une faille de sécurité prend toujours du temps. C’est encore plus vrai pour des failles aussi importantes que celles qui ont été identifiées dans tous les processeurs modernes. Les chercheurs qui ont finalement découvert Meltdown et Spectre ont travaillé à partir des résultats d’autres chercheurs remontant jusqu’au milieu des années 2000.

Le nom de Yuval Yarom, chercheur à l’université d’Adélaïde en Australie, est présent dans la liste des personnes qui ont déniché Spectre. Pourtant, il n’a pas mené de recherches sur le sujet en 2017, mais ses trouvailles en 2005 contiennent plusieurs idées de base qui ont servi à exploiter les faiblesses des processeurs modernes.

Le papier académique qui présente la faille de sécurité Spectre liste les noms de dix chercheurs en sécurité qui ont commencé pour la plupart à aborder le problème séparément. Cliquer pour agrandir

C’est en 2013 que la première pierre est posée avec la découverte de la faille KASLR, une vulnérabilité qui permet d’accéder au modèle du noyau depuis le système d’exploitation. C’est loin d’être aussi grave que les failles Spectre et Meltdown, puisqu’il n’y a pas d’accès aux données elles-mêmes. C’est plutôt une menace théorique, un accès aux méthodes utilisées par le noyau pour protéger les données en questions. Mais KASLR est la base utilisée pour une partie des découvertes réalisées en 2017.

À l’occasion de la conférence Black Hat de Las Vegas en août 2016, une équipe de chercheurs de l’université de Graz, en Autriche, présente un moyen de protéger les processeurs Intel contre la faille KASLR. La technique, nommée KAISER, ne bloque pas l’accès à la mémoire réservée au noyau, mais elle masque la position de la mémoire pour éviter les attaques. Cette approche présente toutefois l’inconvénient de réduire les performances et à ce stade, personne dans l'équipe ne croit à une faille plus large qui permettrait d'accéder aux données.

Les trois chercheurs en sécurité de l’université de Graz. Cliquer pour agrandir

L’un des chercheurs de Graz, Daniel Gruss, a l’occasion d’échanger avec Anders Fogh, qui pense le contraire. Pour le dire autrement, ce chercheur considérait la possibilité des failles Spectre et Meltdown plus d’un an et demi avant leurs révélations, mais il n’avait que des doutes et aucune preuve.

C’est pour cette raison qu’il essaie de convaincre d’autres chercheurs de l’aider, mais ses confrères restent sceptiques. Si une telle faille existait, les fabricants de processeurs l’auraient certainement trouvée et ils l’auraient corrigée ! Cette faille semble tellement énorme que les trois chercheurs de Graz n’envisagent pas de lui accorder du temps.

Anders Fogh ne lâche pas son idée toutefois et c’est en janvier 2017 qu’il entrevoit la possibilité d’utiliser l’exécution spéculative, qui permet d’accélérer les processeurs en essayant de deviner les prochaines commandes et en les exécutant sans attendre d’en recevoir l’ordre, pour élargir la brèche. Le chercheur allemand considère que cette fonction pourrait servir à déjouer les sécurités mises en place pour protéger le noyau et ainsi extraire des données.

Il pressent qu'un programme pourrait accéder à une partie de la mémoire réservée au noyau, avant même que le processeur n’ait le temps de vérifier s’il a bien le droit de le faire. C’est l’une des conséquences de l’exécution spéculative : parfois, le processeur se trompe et il exécute des commandes qu’il n’aurait pas dû. Ces erreurs de spéculation sont rapidement effacées, mais le programme peut puiser dans le cache, une section de la mémoire qui sert à stocker des données fréquemment utilisées pour accélérer encore les opérations.

Le logo du blog d’Anders Fogh. Cliquer pour agrandir

Les détails techniques sont complexes, mais l’idée est assez simple à comprendre. Anders Fogh imagine qu’un programme pourrait embrouiller l’exécution spéculative des processeurs modernes pour les forcer à afficher des informations qui doivent rester confidentielles. Il évoque cette possibilité lors d’une conférence donnée en début d’année, puis publie un article sur son blog à la fin du mois de juillet.

Cet article est important, car il décrit assez largement la faille Meltdown, mais il n’a aucun impact immédiat. Et pour cause, il reste uniquement théorique et n’apporte aucune preuve. En effet, même si ce chercheur a les bonnes intuitions sur les processus qui serviront à l’attaque, il ne parvient pas à les mettre en œuvre. À la fin de son article, il mentionne en passant une autre recherche dans la même veine et décrit ce qui sera la faille Spectre, la qualifiant à ce stade de « boîte de Pandore » par l’ampleur qu’elle pourrait avoir.

Un intérêt soudain et suspect pour KAISER

Entre la fin de l’été 2017 et le début de l’automne, il se passe quelque chose d’étonnant dans la communauté Linux. KAISER, le patch créé par les trois chercheurs de l’université de Graz pour combler la faille KASLR, commence à intéresser Google, Amazon et Microsoft et les autres acteurs majeurs du cloud. Ils essaient de convaincre les développeurs du noyau Linux d’intégrer le patch et surtout, ils ne veulent pas dire pourquoi.

D’abord flattés, les chercheurs suspectent vite qu’il y a quelque chose de louche et que les motivations derrière l’adoption de KAISER sont importantes. Surtout que leurs estimations d’impact sur les performances étaient fausses, et pas qu’un peu. Les premiers tests montrent qu’il peut y avoir des baisses de l’ordre de 30 % dans certains cas, ce qui est énorme dans l’univers des serveurs.

Un des exemples les plus spectaculaires de l’impact de Meltdown sur les performances : celui d’Epic Games, éditeur de jeux qui fait tourner de nombreux serveurs. Cliquer pour agrandir

Pourquoi s’entêter à vouloir intégrer KAISER dans ces conditions ? Les chercheurs autrichiens font alors le lien avec les recherches d’Anders Fogh et suggèrent que leur patch est en fait utilisé pour combler une faille beaucoup plus sérieuse dans les processeurs. Pour la première fois, ils enquêtent sérieusement et testent les suggestions de leur confrère pour lever le lièvre.

Très peu de temps après, les trois spécialistes mettent au point un concept qui prouve l’existence de la faille Meltdown. Ils créent un programme qui affiche toutes les données du noyau, des informations qui restent en théorie parfaitement masquées. Leur première réaction est horrifiée :

C’était vraiment, vraiment flippant. Vous ne vous attendez pas à lire vos conversations privées dans un programme qui n’a aucune permission pour accéder aux données.

Voici à quoi ressemble le programme développé par l'équipe. Ce script exploite la faille de sécurité pour lire les données du noyau, puis les affiche sous la forme de code machine, avant de les traduire en texte lisible. On y voit de tout, des textes affichés sur l’écran, des mots saisis sur l’ordinateur et aussi tous les mots de passe utilisés, en clair.

https://www.youtube.com/watch?v=bReA1dvGJ6Y

La surprise : Intel était déjà au courant

Face à la gravité de leur découverte, les chercheurs de Graz réagissent au plus vite. Dès le lendemain, ils envoient un message à Intel pour révéler l’existence de la faille. Première surprise, l’entreprise ne répond pas immédiatement. Une bonne semaine s'écoule avant la réponse.

Mais la plus grosse surprise, c'est le contenu du message. Intel connaissait déjà l’existence de cette faille, et qui plus est ils n’étaient pas les premiers à les avertir, mais les quatrièmes. Comment était-ce possible ?

Image de base : Christiaan Colen (CC BY-SA 2.0) Cliquer pour agrandir

L’université de Graz a été devancée de quelques semaines par Thomas Prescher, un chercheur en sécurité allemand qui travaille pour Cyberus Technology. C’est dans le courant du mois de novembre qu’il s’intéresse à la théorie d’Anders Fogh. Il explique être tombé par hasard sur l’article de blog et avoir essayé à son tour de créer la preuve que son confrère n’avait pas réussi à trouver. Il découvre la faille Meltdown peu après et il alerte Intel dans la foulée. Mais lui aussi reçoit une réponse l’informant que la faille était déjà connue.

Avant l’université de Graz, avant Cyberus Technology et même avant l’article d’Anders Fogh, les failles Meltdown et Spectre avaient été découvertes par Jann Horn. Cet employé de Google travaille dans le cadre de Project Zero, une équipe spécialisée dans la découverte de failles « zero day », des failles inconnues des fabricants. C’est en juin qu’il découvre Meltdown et Spectre.

Comment ce chercheur de 22 ans a-t-il pu trouver les failles seul et avant tout le monde ? Si vous lui posez la question, Jann Horn vous répondra simplement : en lisant le manuel. Ses découvertes commencent fin avril, alors qu’il travaille avec un collègue sur un programme qui dépend du fonctionnement précis des processeurs Intel et en particulier de l’exécution spéculative.

C’est en créant ce programme et en lisant la documentation qu’il réalise que des informations censées rester secrètes peuvent se retrouver par accident dans le cache du processeur et ainsi être récupérées. En théorie, il est envisageable de récupérer par ce biais les données que le processeur doit protéger. Le chercheur commence alors à s’intéresser plus spécifiquement à cette hypothèse et il met au point, en quelques jours seulement, une technique qui exploite la faille qui sera connue plus tard sous le nom Spectre.

Il informe Intel, AMD et ARM de ses découvertes le premier juin, tout en continuant à travailler sur le sujet. Trois semaines plus tard, il découvre aussi la faille Meltdown et informe cette fois seulement Intel, puisque c’est le seul acteur concerné. Le fondeur était ainsi au courant dès l’été et les travaux commencent très vite pour trouver la parade. Ce qui explique pourquoi à l’automne plusieurs acteurs militent pour adopter KAISER, et pourquoi Apple avait déjà bloqué la faille Meltdown dans High Sierra à la fin de l’année.

Pour être complet, le quatrième acteur impliqué est Paul Kocher, chercheur en sécurité américain qui a profité d’un congé sabbatique pour enquêter sur les processeurs. Comme Anders Fogh, il a l’intuition que les techniques employées par les fabricants pour accélérer leurs processeurs se font au détriment de la sécurité. Il parvient à démontrer l’existence de Spectre courant septembre, en se concentrant lui aussi sur l’exécution spéculative.

Qui d’autre connaissait la faille ?

En l’espace de quelques mois, quatre chercheurs ou équipes de chercheurs ont réussi à démontrer l’existence d’une faille de sécurité qui touche tous les processeurs depuis plusieurs années. La coïncidence est troublante, mais surtout, une question embarrassante se pose vite : est-ce que quelqu'un d’autre connaissait ces failles, mais n’a rien dit ?

Impossible de le savoir avec certitude, mais Paul Kocher ne serait pas surpris d’apprendre que des services de renseignement connaissaient et exploitaient ces failles le plus discrètement du monde. La NSA a indiqué au Washington Post n’avoir aucune connaissance des failles, mais même si c’était le cas ils ne l’avoueraient probablement pas. Et puis la NSA est loin d’être la seule agence de renseignement et peut-être qu'un autre pays était au courant… On ne sait pas.

L’ancien centre de surveillance de la NSA de Teufelsberg, à côté de Berlin. Il est abandonné depuis la fin de la Guerre froide. Image Dennis Skley (CC BY-ND 2.0). Cliquer pour agrandir

Cette découverte simultanée ne surprend pas les spécialistes du domaine en tout cas. Il y a des tendances dans le monde de la sécurité informatique qui font que plusieurs personnes vont suivre plus ou moins naturellement les mêmes pistes. Dans le cas de Spectre et Meltdown, les travaux d’Anders Fogh ont probablement influencé plusieurs chercheurs, même si ce n’est pas le cas pour Jann Horn. Ce dernier a indiqué sur Twitter s’être inspiré de recherches antérieures pour trouver Spectre. Elles sont publiques depuis l’automne 2016 et si elles ont permis à un chercheur de trouver ces vulnérabilités, elles ont peut-être servi à d’autres.

Impossible de répondre, mais cette crainte peut expliquer l’embargo imposé par Intel. C’est la règle tacite dans le milieu ; les chercheurs laissent aux acteurs concernés le temps de corriger leurs failles avant de publier leurs recherches. Étant donnée l’ampleur de Spectre et Meltdown, Intel a demandé un délai nettement plus long que la normale et l’entreprise comptait tenir le secret jusqu’au 9 janvier 2018. Son idée était apparemment de mitiger la mauvaise nouvelle avec l’ambiance de fête du CES qui se déroulait la même semaine, mais cela ne s’est pas passé comme prévu. The Verge revient sur cet embargo de plusieurs mois et son arrêt prématuré.

Il n’y a pas que les chercheurs de Graz qui ont été alertés par les modifications du noyau Linux, de nombreux observateurs ont aussi noté ces changements en profondeur et non justifiés. Pour maintenir l’embargo, le noyau Linux a été modifié avec des commentaires partiels, ce qui est inhabituel. Autre chose étrange, une modification à la dernière minute par Linus Torvalds, créateur du noyau Linux, sans passer par le processus classique de validation.

Un commentaire incomplet dans le code source du noyau Linux. Cliquer pour agrandir

Les premières corrections pour Meltdown concernaient tous les processeurs, y compris ceux d’AMD. Mais les puces de ce dernier n’étant en réalité pas concernées, AMD l’a fait savoir juste après Noël, dévoilant au passage la faille concernant l’exécution spéculative. C’est ce qui a poussé le site The Register à enquêter et finalement publier un article le 2 janvier, le premier à dévoiler publiquement l’existence de la faille.

L’embargo était rompu, une semaine en avance par rapport au planning décidé par Intel. Nous avons publié un article sur le sujet comme de nombreux sites, et Intel et les autres acteurs impliqués ont été forcés de répondre, tandis que les chercheurs en sécurité publiaient leurs résultats. Cet emballement a eu un impact négatif sur la qualité des correctifs et deux semaines après la découverte des failles, tout n’est pas encore au point.

Microsoft a publié des mises à jour qui ont bloqué certains ordinateurs, tandis que du côté de Linux, l’impact sur les performances est parfois plus important qu’escompté, ce qui retarde les déploiements. Cette faille est de toute façon trop importante et nécessite des correctifs à un trop bas niveau pour ne pas poser quelque problème que ce soit. On va probablement en entendre parler pendant encore très longtemps…

avatar mattdaft | 

Vraiment passionnant cet article.
Merci et bravo Nicolas Furno pour ce travail très efficace à la lecture.

Ca remets les choses à plat ... quelque soit la plateforme, avec ce genre de failles, tout le monde prends les memes risques.

Je pense que le meilleur moyen de se prémunir d'un vol de données, est de diluer les vraies infos avec de fausses infos ;) (bien sûr selon les secteurs c'est surement une fausse bonne idée ...)

avatar jeanpaulpollue | 

Nous savions déjà (depuis 1995), et la NSA aussi puisqu'elle est à l'initiative de cette étude :

https://pdfs.semanticscholar.org/2209/42809262c17b6631c0f6536c91aaf7756857.pdf

avatar outmen | 

Vraiment bravo pour cet article de fond très complet et passionnant à lire.

Pages

CONNEXION UTILISATEUR