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…

La suite est réservée aux abonnés. Il vous reste 93% à découvrir.
  • Accédez à tous les contenus de Connect en illimité
  • Découvrez des listes de lecture et des contenus Premium
  • Consultez les nouveaux articles en avant-première
Envie de lire la suite ? Rejoignez Connect
Je m'abonne maintenant


Article rédigé par

Par le(s) même(s) auteur(s)

Fuddly : introduction de l’outil et développement d’un protocole

Magazine
Marque
MISC
Numéro
103
Mois de parution
mai 2019
Spécialité(s)
Résumé

Cet article présente Fuddly, un framework de fuzzing et de manipulation de données, écrit en python sous GPLv3, qui fournit de nombreuses briques que l’on retrouve dans d’autres framework de fuzzing, mais qui se différencie par la flexibilité de représentation des données et la diversité des altérations qu’il rend possible.

L'Infrastructure Linux Gadget USB

Magazine
Marque
Open Silicium
Numéro
14
Mois de parution
mars 2015
Spécialité(s)
Résumé

L'infrastructure Gadget USB du noyau Linux facilite la création de périphériques USB, en proposant un cadre et un certain nombre de primitives qui permettent d'une part d'abstraire les contrôleurs matériels de périphériques USB, et d'autre part d'en utiliser les ressources et fonctionnalités afin de créer n'importe quelle fonction USB désirée : qu'elle réponde aux standards (tels que « Mass Storage », « CDC Eth »…), qu'elle soit l'incarnation de vos besoins particuliers, ou bien encore qu'elle soit une combinaison des deux.

Kernel Corner : Interviews A. Morton, G. Kroah-Hartmanet T. Heo

Magazine
Marque
GNU/Linux Magazine
Numéro
166
Mois de parution
décembre 2013
Spécialité(s)
Résumé
Nous avons le plaisir de vous présenter dans un première partie quelques pensées de Andrew Morton et de Greg Kroah-Hartman (deux figures de renom dans la communauté noyau) sur la maturité du noyau Linux et de sa communauté, sur l'importance de l'adaptation continue de Linux à son environnement, ainsi que sur des sujets liés à la maintenabilité du noyau vis-à-vis de la flexibilité que l'ABI peut apporter à l'espace utilisateur. Nous finissons par un éclairage de Tejun Heo (mainteneur des control groups) sur la refonte de l'infrastructure des control groups (en cours d'intégration depuis le 3.10 et accessible via l'option de montage « __DEVEL__sane_behavior »), où le sujet de la flexibilité est au cœur des décisions prises.

Les listes de lecture

Python niveau débutant

9 article(s) - ajoutée le 01/07/2020
Vous désirez apprendre le langage Python, mais ne savez pas trop par où commencer ? Cette liste de lecture vous permettra de faire vos premiers pas en découvrant l'écosystème de Python et en écrivant de petits scripts.

Au pays des algorithmes

11 article(s) - ajoutée le 01/07/2020
La base de tout programme effectuant une tâche un tant soit peu complexe est un algorithme, une méthode permettant de manipuler des données pour obtenir un résultat attendu. Dans cette liste, vous pourrez découvrir quelques spécimens d'algorithmes.

Analyse de données en Python

10 article(s) - ajoutée le 01/07/2020
À quoi bon se targuer de posséder des pétaoctets de données si l'on est incapable d'analyser ces dernières ? Cette liste vous aidera à "faire parler" vos données.
Plus de listes de lecture