Séparation des privilèges - Privilege separation

Dans la programmation informatique et la sécurité informatique , la séparation des privilèges est une technique dans laquelle un programme est divisé en parties qui sont limitées aux privilèges spécifiques dont elles ont besoin pour effectuer une tâche spécifique. Ceci est utilisé pour atténuer les dommages potentiels d'une vulnérabilité de sécurité informatique.

Une méthode courante pour mettre en oeuvre la séparation des privilèges est d'avoir un programme d'ordinateur fourche en deux processus . Le programme principal supprime les privilèges et le plus petit programme conserve les privilèges afin d'effectuer une certaine tâche. Les deux moitiés communiquent alors via une paire de sockets . Ainsi, toute attaque réussie contre le programme plus grand obtiendra un accès minimal, même si la paire de programmes sera capable d'effectuer des opérations privilégiées.

La séparation des privilèges est traditionnellement réalisée en distinguant un véritable ID utilisateur / ID de groupe de l'ID utilisateur / ID de groupe effectif , en utilisant le setuid (2) / setgid (2) et les appels système associés , qui ont été spécifiés par POSIX . S'ils ne sont pas correctement positionnés, les espaces peuvent permettre une pénétration étendue du réseau.

De nombreux démons de service réseau doivent effectuer une opération privilégiée spécifique telle que l'ouverture d'un socket brut ou d'un socket Internet dans la plage de ports bien connue . Les utilitaires d' administration peuvent également nécessiter des privilèges particuliers au moment de l' exécution . Un tel logiciel a tendance à séparer les privilèges en les révoquant complètement une fois la section critique terminée, et à changer l'utilisateur sous lequel il s'exécute en un compte non privilégié après cela. Cette action est connue sous le nom de suppression de racine sous les systèmes d'exploitation de type Unix . La partie non privilégiée est généralement exécutée sous l'utilisateur " personne " ou sous un compte utilisateur distinct équivalent.

La séparation des privilèges peut également être effectuée en divisant la fonctionnalité d'un seul programme en plusieurs programmes plus petits, puis en attribuant les privilèges étendus à des parties particulières à l'aide des autorisations du système de fichiers . De cette façon, les différents programmes doivent communiquer entre eux via le système d'exploitation, donc l'étendue des vulnérabilités potentielles est limitée (puisqu'un crash dans la partie la moins privilégiée ne peut pas être exploité pour obtenir des privilèges, simplement pour provoquer un déni de service attaque ).

La séparation des privilèges est l'une des principales fonctionnalités de sécurité d'OpenBSD . La mise en œuvre de Postfix s'est concentrée sur la mise en œuvre d'une séparation complète des privilèges. Solaris implémente un ensemble distinct de fonctions pour le bracketing des privilèges .

Voir également

Liens externes