La protection des régions de mémoire du noyau

Magazine
Marque
GNU/Linux Magazine
Numéro
137
Mois de parution
avril 2011


Résumé
Nous présentons dans cette brève le mécanisme de protection des régions de mémoire noyau qui a été intégré à la version 2.6.38 du noyau (sur lequel nous reviendrons au cours d'un prochain Kernel Corner). Nous commençons par expliquer ce que signifie le principe W^X, puis poursuivons sur l'agencement de l'espace d'adressage du noyau, pour enfin détailler la mise en œuvre de la protection.

1. Le principe W^X

Ce principe a été créé pour contrer certains types d'attaques informatiques classiques à base d'injection de code. L'idée est assez simple et se résume ainsi : les régions de données ne doivent pas être exécutables et les régions de code ne doivent pas être inscriptibles (W^X signifie Write xor eXec, le ^ étant l'opération binaire OU exclusif en C). Prenons l'exemple suivant pour mieux comprendre ce qui se cache derrière cette phrase.

Afin d'empêcher un attaquant d'exécuter son propre code via un débordement de tampon dans la pile d'un processus vulnérable, une solution est de rendre la pile non exécutable. Ainsi, lorsque le code malveillant, fourni en entrée du programme vulnérable (sous forme de chaîne de caractères), se voit copié dans la pile, il devient impossible pour l'attaquant de l'exécuter. En effet, le débordement de tampon qui fait suite à cette copie et qui écrase la valeur sauvegardée du compteur d'instructions avec...

Cet article est réservé aux abonnés. Il vous reste 93% à découvrir.
à partir de 21,65€ HT/mois/lecteur pour un accès 5 lecteurs à toute la plateforme
J'en profite