102
Science de la sécurité du système d’information
Deuxième partie
La plupart des systèmes d’exploitation modernes administrent également la séparation des privilèges au sein même de l’espace mémoire affecté à chaque utilisateur
ou, pour être plus précis, à chaque processus en cours d’exécution sur le système.
Cet espace de mémoire (aussi dénommé espace adresse) est divisé en régions,
chacune caractérisée par son contenu.
Par exemple, sous un système Unix tel que Linux, la zone de mémoire allouée
à un programme en cours d’exécution est divisée en sections : le texte du code
exécutable proprement dit est dans la section .text, les données initialisées sont
dans la section .data, les données non initialisées dans la section .bss, sans préjudice des zones allouées au tas (heap) et à la pile (stack). Chacune de ces sections,
ainsi que le tas et la pile, sans oublier les zones affectées respectivement au code
et aux données de chaque bibliothèque utilisée par le programme, seront installés
dans des régions de mémoire particulières et bien identifiées, dotées de privilèges
adéquats. Ainsi, seul le texte des régions affectées au code exécutable sera habilité
à être exécuté, c’est-à-dire qu’une instruction de branchement ne sera valide que
si son adresse de destination est contenue dans une telle région, sinon elle déclenchera une erreur et l’interruption du programme. De cette façon, il sera impossible
d’exécuter du code placé dans une section de données ou sur la pile. De même,
ne pourront être modifiées par programme que les données contenues dans les régions destinées à cet effet. De telles mesures de protection de la mémoire sont de
nature à contrecarrer toute une famille de logiciels malfaisants, conçus à l’origine
pour exploiter des débordements de tampon dans la pile (cf. section 5).
En effet, sur un système qui n’est pas doté de ce type de protection, il est possible
d’injecter du code malfaisant dans une zone de mémoire disponible en écriture,
puis de l’exécuter.
Architectures tripartites
La locution architecture tripartite traduit ici l’anglais three tiers, qui n’a jamais signifié trois-tiers (ni quatre-quarts), et qui pourrait aussi se traduire par architecture
à trois niveaux (c’est le choix de Wikipédia) ou à trois étages. Il s’agit d’un modèle de construction de systèmes informatiques propre à en améliorer la sécurité,
et nous n’hésiterons donc pas à recommander son usage. Il peut bien sûr y avoir
plus de trois étages, et l’on parlera alors d’architecture multipartite, mais trois est
Précédent

- 116/276

Suivant