Les processeurs fournissent des modes de privilège qui limitent les instructions sensibles et les accès mémoire. Linux emploie cette frontière matérielle afin que les défaillances ordinaires des applications ne puissent pas écraser directement la mémoire du noyau ou reconfigurer les périphériques. Le noyau contrôle les transitions vers l'exécution privilégiée.
Kernel · Leçon 2
Niveaux de privilège
Découvrez comment les privilèges du processeur séparent l'exécution utilisateur de l'exécution de confiance du noyau.
Mode utilisateur
Un processus ordinaire s'exécute en mode utilisateur dans son espace d'adressage virtuel. Il peut calculer librement et accéder aux mappages mémoire accordés par le noyau, lesquels peuvent être vastes ; le mode utilisateur ne signifie donc pas « seulement une petite quantité de mémoire ». Il ne peut pas accéder directement à une adresse physique arbitraire, aux mappages privés d'un autre processus ou aux contrôles privilégiés du processeur.
Les tables de pages et les bits de protection imposent les accès mémoire. Si un thread référence une adresse invalide ou interdite, le processeur provoque une exception vers le noyau, qui peut résoudre un défaut de page valide ou livrer un signal comme SIGSEGV.
À quelle mémoire un processus en mode utilisateur peut-il normalement accéder directement ?
Mode noyau
Le mode noyau autorise l'exécution d'instructions privilégiées et l'accès aux mappages protégés nécessaires à la gestion de la mémoire, l'ordonnancement, la gestion des interruptions et les pilotes. Sur x86, cette séparation Linux est couramment décrite comme le ring 0 pour le noyau et le ring 3 pour les processus utilisateur. Linux n'emploie normalement pas les rings 1 et 2 pour l'isolation ordinaire des processus.
Les autres architectures possèdent des noms et mécanismes différents, comme les niveaux d'exception. La virtualisation ajoute les relations entre hyperviseur et invités, qui ne rentrent pas dans un simple schéma à deux anneaux. L'idée essentielle est le privilège contrôlé, pas les numéros propres à x86.
Dans quel anneau de protection x86 le noyau Linux s'exécute-t-il normalement ?
Transitions contrôlées
Plusieurs événements transfèrent le contrôle à un point d'entrée du noyau :
- une instruction d'appel système demande un service du noyau ;
- une exception signale une situation comme un défaut de page ou une instruction invalide ;
- une interruption matérielle signale un événement externe.
Le processeur enregistre le contexte d'exécution, change de privilège selon les mécanismes d'entrée configurés et commence à exécuter le code de confiance du noyau. Le noyau valide la demande et l'état, exécute ou refuse le travail, puis revient au mode utilisateur lorsque cela convient.
L'application ne devient pas temporairement du code du noyau. Le processeur exécute un gestionnaire du noyau pour le compte du thread, avec des piles et mappages contrôlés par le noyau.
Que se produit-il pendant une transition d'appel système ?
Le privilège du processeur n'est pas l'identité de l'utilisateur
Une application exécutée comme utilisateur Linux root reste normalement en mode utilisateur. L'UID 0 influence les contrôles d'autorisation du noyau, mais ne permet pas à ses instructions d'accéder directement à la mémoire du noyau. Inversement, le code du noyau s'exécute en mode privilégié quel que soit l'utilisateur qui a provoqué son exécution par un appel système.
Les capacités, espaces de noms, seccomp, modules de sécurité et cgroups limitent davantage ce qu'un processus peut demander. Ces règles en couches sont distinctes de la frontière matérielle entre modes utilisateur et noyau.
Quelle affirmation compare correctement l'identité root et le mode noyau ?
Importance de la frontière
La frontière limite les dommages causés par les bogues ordinaires et fournit un point de contrôle des accès, mais les vulnérabilités du noyau et les modules malveillants peuvent la vaincre. Maintenez noyau et micrologiciel à jour par des canaux fiables, réduisez le code privilégié et évitez les modules non fiables.
Les problèmes d'exécution spéculative et les canaux auxiliaires montrent également que l'isolation matérielle exige des mesures d'atténuation permanentes ; « un anneau différent » est un fondement, pas une preuve de sécurité complète.
La séparation des modes utilisateur et noyau garantit-elle la sécurité complète du système ?
Leçon terminée
Vous avez terminé Niveaux de privilège
Vous savez maintenant distinguer le privilège matériel d'exécution de l'autorité des comptes Linux.
Relier le mode utilisateur aux espaces d'adressage virtuels protégés.
Relier le mode noyau aux instructions et mappages privilégiés.
Considérer les appels système, exceptions et interruptions comme des entrées contrôlées.
Distinguer l'autorisation de l'UID 0 de l'exécution en ring 0.
Voir les modes de privilège comme une couche d'une conception de sécurité plus large.
Conservez votre progression
Créez un compte gratuit pour enregistrer cette leçon et continuer sur n'importe quel appareil.
Créer un compte gratuit