URL: https://linuxfr.org/users/pied/journaux/ca-sent-pas-bon-chez-intel Title: Ça sent pas bon chez Intel ? Authors: Pinaraf Date: 2018年01月03日T00:38:11+01:00 License: CC By-SA Tags: bug, sécurité, cve-2017-5753, meltdown, spectre, kernel et intel Score: 124 Coucou tout le monde Alors, je n’aime pas trop ça, je t’écris en me basant sur des pures spéculations à travers le Web. Mais le faisceau d’indices est trop grave pour passer à côté. Commençons par les faits, rien que les faits. Ces derniers mois, on a vu apparaître pour le noyau Linux une nouvelle solution de sécurité proactive (qui ne corrige pas une faille mais diminue considérablement l’impact d’éventuelles failles présentes ou à venir), nommée KAISER, renommée depuis KPTI, _Kernel Page Table Isolation_. Comprendre l’intérêt de cette sécurité nécessite un peu de compréhension de l’agencement de la mémoire virtuelle de nos machines x86 64 bits. Les 64 bits sont grosso modo découpés en deux parties. En « bas » se trouve l’espace utilisateur, propre à chaque processus. Le processus 1 voit ainsi à l’adresse 0x4273B0B0 ses données alors que le processus 2 y verra les siennes, sans possibilité d’accéder aux données du processus 1. En « haut » en revanche se trouve, d’accès bloqué par l’unité matérielle de gestion de la mémoire (MMU), l’espace noyau. Pourquoi avoir fait ça, me direz‐vous ? Si la MMU (zéro tracus) a un bogue, paf, les applis accèdent à la mémoire du noyau et l’apocalypse se déclenche... La MMU fait heureusement bien son travail, et cela permet d’augmenter considérablement les performances pour les appels système. En effet, basculer sur un espace mémoire séparé nécessite de vider le TLB, un bon gros cache qui tache... Et ça coûte terriblement cher ! (des appels système comme `gettimeofday()` sont encore plus optimisés et utilisent le vDSO pour ne même plus faire de bascule entre espace utilisateur et noyau, mais c’est une autre histoire). Donc, lors d’un appel système, le noyau « dit » à la MMU « C’est bon, j’ai accès à ma RAM » et tout le monde est content. KPTI change tout ça. Les processus n’ont plus en haut de leur espace mémoire virtuel le noyau. À la place, le noyau bascule sur un espace mémoire différent lors des appels système. C’est très coûteux. Avec les derniers processeurs, on est sur un pourcentage pouvant monter à trois chiffres sur le temps d’exécution d’un appel système. Bien sûr, c’est un micro benchmark, un vrai cas d’usage imposerait ~5 % de perte seulement... Jusque‐là, tout va bien, tout le monde est heureux. Mais le patch KPTI a eu une fin de décembre tumultueuse qui soulève un potentiel gravissime problème de sécurité sur les processeurs Intel. En effet, KAISER a été révélé en octobre. Il semblait alors être un patch pour protéger le noyau d’attaques visant à casser le KASLR. Avec KASLR, le noyau a un emplacement aléatoire dans son espace mémoire, et un attaquant voudra trouver l’emplacement exact pour accomplir ses méfaits. Donc, ça ne semblait pas critique, même si le patch semblait être poussé relativement rapidement. Puis, il fut développé, a suivi le cycle de revues, été renommé en KPTI... Et tout récemment, le 30 décembre, Linus Torvalds a intégré KPTI directement dans la version 4.15-rc6 avec un message invitant à son intégration dans tous les noyaux encore maintenus. Et, là, c’est très très louche. Jamais Linus n’aurait intégré dans une rc6 un patch ne servant qu’à pallier des fuites de KASLR. Jamais il n’aurait appelé à un rétroportage. Le patch est très volumineux, a un impact non négligeable sur les performances, et est activé par défaut. Un développeur AMD a juste altéré le patch en précisant que les processeurs AMD ne sont pas impactés car leur fonctionnement rend le patch inutile. Même Microsoft aurait fait des correctifs similaires à KPTI pour le noyau de Windows. Spéculons : a-t-on dans tous les processeurs Intel modernes (≥Core 2 ?) une faille permettant aux processus en espace utilisateur de contourner la MMU, et donc lire voire écrire la mémoire noyau ? Dans tous les cas, ça commence à chauffer, le patch devrait arriver dans les distributions rapidement, peut‐être jeudi (un bogue Xen est sous embargo jusqu’à jeudi, c’est peut‐être le même). --- Quelques sources : - https://lwn.net/Articles/742404/ - https://lwn.net/SubscriberLink/741878/35f76bca42520a92/ (LWN c’est bon, abonnez-vous) - http://pythonsweetness.tumblr.com/post/169166980422/the-mysterious-case-of-the-linux-page-table