web-dev-qa-db-fra.com

Pourquoi accéder à la mémoire du noyau un risque de sécurité?

Beaucoup de nouvelles concernant la vulnérabilité de la masse fondue soulignent qu'il permet aux programmes de lire la mémoire qui devrait être hors limites de l'utilisateur. Si je comprends que cela ne devrait pas arriver, peu de sources ont expliqué exactement comment accéder à la mémoire du noyau est dangereuse.

Quelles informations sont stockées dans la mémoire du noyau? Qu'est-ce qui permettrait d'accéder, mais de ne pas modifier, la mémoire du noyau permet à un attaquant de faire?

8
Rob Rose

Afin de comprendre la menace de l'effondrement, vous devez comprendre comment la mémoire est organisée dans des ordinateurs modernes.

La vue naïve de la mémoire est que chaque adresse de mémoire correspond à un ensemble spécifique de cellules dans la RAM. C'est ce qu'on appelle "adressage physique", et jusqu'au début des années 90, était le moyen le plus courant de manipuler la mémoire dans un ordinateur. Sous l'adressage physique, si votre programme lit un octet de l'adresse 17, il lit à partir du même ensemble de huit cellules de mémoire à chaque fois. S'avère, une manière "physique" de manière à résoudre la mémoire limite plutôt ce que vous pouvez faire, en particulier en ce qui concerne l'exécution de plusieurs programmes à la fois.

Entrez "Adresse virtuelle". Maintenant, "L'adresse de la mémoire 17" de votre programme ne correspond plus à une partie spécifique de la mémoire physique. Au lieu de cela, lorsque la CPU veut que les données de cette adresse, il pose un composant appelé "unité de gestion de la mémoire" (MMU) qui, en coopération avec le système d'exploitation, des chiffres sur la manière de remplir cette demande.

Cela permet un certain nombre de gains d'efficacité et de capacité. Le plus connu est probablement "échangez", communément appelé "mémoire virtuelle": l'adresse 17 peut être temporairement stockée sur le disque et la demande de votre programme est mise en attente pendant que le système d'exploitation stocke le contenu de la partie de la mémoire physique sur le disque. charge la pièce que votre programme pense comme "adresse 17". Étant donné que la gamme d'adresses virtuelles disponibles est typiquement beaucoup plus importante que la quantité de mémoire physique, cela permet au système d'exploitation donner l'apparence d'un ordinateur avec beaucoup plus RAM =.

Le plus gros gain de l'adressage virtuel, cependant, est également entièrement masqué à partir de l'utilisateur typique: il permet au système d'exploitation donner à chaque programme l'illusion que c'est le seul programme exécutant sur l'ordinateur. "Adresse 17" de votre programme n'est pas la même mémoire que "l'adresse 17" de l'autre programme. Cela signifie que les programmes n'ont pas besoin de s'inquiéter de la masquage des secrets les uns des autres: JavaScript exécutant dans votre navigateur Web, par exemple, vous ne pouvez pas lire le contenu de la mémoire de votre mot de passe.

Pour des raisons d'efficacité, le noyau Linux attribue la moitié des adresses virtuelles disponibles à elle-même dans la vue de la mémoire de chaque programme et attribue toute la mémoire physique dans le cadre de cette plage d'adresses (le noyau Windows fait des choses similaires, bien que les détails varient). Cela permet au noyau d'accéder à tout ce dont il a besoin sans avoir à ajuster le MMU. Le noyau protège ensuite son espace d'adresses afin qu'un programme ordinaire qui tente de lire la mémoire s'écrase.

Entrez Meltdown: il permet à un programme de lire indirectement la mémoire du noyau sans s'écraser. C'est beaucoup plus lent que la lecture directe (généralement environ 150 kilo-octets par seconde, où la lecture directe est mesurée en gigaoctets par seconde), mais elle contourne la protection. Étant donné que toute la mémoire physique est mappée dans l'espace d'adressage du noyau, un attaquant employant de la masse peut casser le "Je suis le seul programme" Illusion.

Un utilisateur de bureau ordinaire n'a pas de nombreux programmes qui doivent garder des secrets les uns des autres et ne gèrent pas beaucoup de code non soigné - la seule menace majeure de l'effondrement est Hostile JavaScript Lecture du contenu de leur gestionnaire de mots de passe et des détails de Comment les œuvres de fusion permettent d'utiliser du JavaScript.

La grande menace de l'effondrement consiste à couvrir les prestataires de nuages ​​et d'hébergement partagés. Ces ordinateurs exécutent régulièrement des programmes d'utilisateurs non approuvés et dépendent de l'illusion "Je suis le seul utilisateur" pour garder les choses en sécurité. Meltdown permet à un récit avec un compte rompre cette illusion et faites des choses comme voler les clés privées SSL d'autres utilisateurs, les noms d'utilisateur et les mots de passe, les informations d'identification de traitement des paiements et autres informations sensibles.

10
Mark