Qu’est-ce que le mécanisme d’intégrité Windows ?

Le mécanisme d’intégrité Windows est un composant principal de l’architecture de sécurité Windows qui restreint les autorisations d’accès des applications qui s’exécutent sous le même compte d’utilisateur et qui sont moins fiables.

Le mécanisme d’intégrité de Windows Vista® étend l’architecture de sécurité du système d’exploitation en attribuant un niveau d’intégrité aux processus d’application et aux objets sécurisables.

Le niveau d’intégrité est une représentation de la fiabilité des processus et objets d’application en cours d’exécution, tels que les fichiers créés par l’application. Le mécanisme d’intégrité permet aux gestionnaires de ressources, tels que le système de fichiers, d’utiliser des stratégies prédéfinies qui empêchent les processus d’intégrité inférieure, ou de fiabilité inférieure, de lire ou de modifier des objets d’intégrité supérieure. Le mécanisme d’intégrité permet au modèle de sécurité Windows d’appliquer de nouvelles restrictions de contrôle d’accès qui ne peuvent pas être définies en accordant des autorisations d’utilisateur ou de groupe dans des listes de contrôle d’accès (ACL).

L’architecture de sécurité Windows repose principalement sur l’octroi de droits d’accès (autorisations de lecture, d’écriture et d’exécution) et de privilèges aux utilisateurs ou groupes représentés en interne par des identificateurs de sécurité (SID). Lorsqu’un utilisateur se connecte à Windows, le sous-système de sécurité définit le SID de l’utilisateur et les SID d’appartenance au groupe dans un jeton d’accès de sécurité. Le jeton d’accès de sécurité est affecté à chaque processus d’application exécuté par cet utilisateur. Chaque fois que le processus d’application ouvre un objet, tel qu’un fichier ou une clé de Registre, le gestionnaire de ressources qui gère l’objet appelle le sous-système de sécurité pour prendre une décision d’accès. Le case activée d’accès détermine les autorisations d’accès autorisées pour cet utilisateur. Le sous-système de sécurité (également appelé Moniteur de référence de sécurité) compare les SID d’utilisateur et de groupe dans le jeton d’accès aux droits d’accès dans un descripteur de sécurité associé à l’objet. Si le SID utilisateur bénéficie de droits d’accès complets dans la liste de contrôle d’accès de l’objet, le processus d’application exécuté par l’utilisateur dispose d’un accès total à l’objet. Pour plus d’informations sur l’architecture de sécurité Windows, consultez Ressources du mécanisme d’intégrité Windows.

Extension de l’architecture de sécurité Windows

Le mécanisme d’intégrité Windows étend l’architecture de sécurité en définissant un nouveau type d’entrée de contrôle d’accès (ACE) pour représenter un niveau d’intégrité dans le descripteur de sécurité d’un objet. Le nouvel ACE représente le niveau d’intégrité de l’objet. Un niveau d’intégrité est également attribué au jeton d’accès de sécurité lorsque le jeton d’accès est initialisé. Le niveau d’intégrité dans le jeton d’accès représente un niveau d’intégrité du sujet. Le niveau d’intégrité dans le jeton d’accès est comparé au niveau d’intégrité dans le descripteur de sécurité lorsque le moniteur de référence de sécurité effectue une case activée d’accès. Windows Vista utilise la fonction AccessCheck pour déterminer quels droits d’accès sont autorisés à un objet sécurisable. Windows limite les droits d’accès autorisés selon que le niveau d’intégrité du sujet est supérieur ou inférieur à l’objet, et en fonction des indicateurs de stratégie d’intégrité dans le nouvel ACE de contrôle d’accès. Le sous-système de sécurité implémente le niveau d’intégrité en tant qu’étiquette obligatoire pour le distinguer de l’accès discrétionnaire sous contrôle utilisateur fourni par les ACL.

Objectifs de conception du mécanisme d’intégrité Windows

Le mécanisme d’intégrité Windows active un certain nombre de scénarios importants dans Windows Vista. Pour répondre aux exigences, la conception du mécanisme d’intégrité Windows devait répondre aux objectifs suivants.

  • Les niveaux d’intégrité doivent être attribués automatiquement à chaque jeton d’accès de sécurité lors de la création du jeton d’accès, de sorte que chaque processus et thread dispose d’un niveau d’intégrité effectif pour le contrôle d’accès.
  • Le sous-système de sécurité affecte automatiquement des étiquettes obligatoires à des types d’objets spécifiques.
  • Le système doit utiliser le moins de niveaux d’intégrité possible pour que l’architecture de base reste simple à comprendre et à utiliser.
  • La stratégie d’intégrité doit être flexible pour répondre aux exigences d’accès des différents gestionnaires de ressources d’objets et pour permettre l’extensibilité future.
  • Le mécanisme d’intégrité doit s’intégrer à l’architecture de sécurité existante pour réduire l’impact sur l’héritage important du code système et de l’application qui dépend de la sécurité Windows.
  • Il n’est pas nécessaire que les administrateurs ou les utilisateurs configurent des niveaux d’intégrité pour que le mécanisme d’application fonctionne correctement.

Le mécanisme d’intégrité Windows répond à ces objectifs en définissant un nouveau type ACE d’étiquette obligatoire pour l’attribution d’un niveau d’intégrité aux objets. Les détails de cette structure sont décrits dans une section ultérieure de ce document. Toutefois, l’étiquette ACE obligatoire définit un niveau d’intégrité d’objet sans modification de la définition de la structure de données de descripteur de sécurité existante ou de la liste de contrôle d’accès discrétionnaire couramment utilisée.

Le mécanisme d’intégrité Windows est basé sur une étiquette obligatoire que le système d’exploitation attribue afin de le différencier de l’accès discrétionnaire sous contrôle utilisateur. Le contrôle d’accès discrétionnaire permet au propriétaire de l’objet, ou au groupe auquel l’autorisation est accordée, de modifier les autorisations d’accès de l’objet. Windows fournit une interface utilisateur graphique permettant aux utilisateurs avancés d’afficher et de modifier les autorisations de sécurité (représentées par la liste de contrôle d’accès discrétionnaire) sur les objets, tels que les fichiers et les clés de Registre. Les étiquettes obligatoires sont toujours attribuées à des objets spécifiques, et il existe des contrôles sur la façon dont le créateur de l’objet peut définir ou initialiser l’étiquette lors de la création d’un objet. Aucune interface utilisateur graphique pour la gestion des étiquettes d’intégrité n’a été implémentée pour Windows Vista, car la gestion des étiquettes est disponible ou nécessaire pour relativement peu de domaines.

Pourquoi existe-t-il un mécanisme d’intégrité Windows ?

L’objectif du mécanisme d’intégrité Windows est de restreindre les autorisations d’accès des applications qui s’exécutent sous le même compte d’utilisateur et qui sont moins fiables. Le code inconnu et potentiellement malveillant téléchargé à partir d’Internet doit être empêché de modifier l’état du système, de modifier les fichiers de données utilisateur ou de manipuler le comportement d’autres programmes d’application. Le sous-système de sécurité Windows affecte une hiérarchie simple de niveaux d’intégrité au code s’exécutant à différents niveaux de privilèges pour le même utilisateur. Les versions précédentes de Windows peuvent ajuster les privilèges de jeton d’accès de sécurité d’un processus d’application, bien que cet ajustement ne soit pas courant. Avant Windows Vista, la plupart des applications s’exécutaient à l’aide d’un compte d’administration avec des droits d’administrateur complets. Windows Vista intègre le concept de moindre privilège en permettant une utilisation plus large des comptes d’utilisateur standard. Le contrôle de compte d’utilisateur (UAC) dans Administration mode d’approbation pour les comptes d’administrateur signifie que plusieurs applications sur le même bureau s’exécutent avec différents niveaux de privilèges. Par exemple, le mode Internet en mode protégé Explorer utilise le mécanisme d’intégrité pour exécuter le navigateur Web dans un processus avec des autorisations d’accès limités.

Le principal problème de sécurité que le mécanisme d’intégrité Windows résout est la falsification non autorisée des données utilisateur et, indirectement, de l’état du système. La divulgation d’informations constitue un problème secondaire que le mécanisme d’intégrité aide. Toutefois, la divulgation d’informations n’est pas autorisée uniquement en ce qui concerne l’accès à l’espace d’adressage du processus. Le partage d’informations est très courant entre les applications Windows, et le partage pratique d’informations entre les applications est fondamental pour l’expérience utilisateur. Par exemple, le copier-coller. Des limites de sécurité rigides sur le partage d’informations entre les applications exécutées sous le même compte d’utilisateur peuvent gravement affecter la compatibilité des applications et l’expérience utilisateur.

Le code non fiable peut essayer de modifier les données utilisateur de plusieurs façons. Certaines attaques peuvent essayer de manipuler des données directement en créant, en modifiant ou en supprimant des fichiers. D’autres attaques ciblent un autre processus s’exécutant à des privilèges plus élevés, dans le but d’obtenir du code arbitraire à exécuter dans une autre application disposant du niveau d’accès requis. Il existe de nombreux types d’attaques inter-processus. En raison de la large gamme de conception et d’implémentation d’applications, le mécanisme d’intégrité ne peut pas fournir une barrière d’isolation complète. Le mécanisme d’intégrité Windows n’est pas conçu comme un bac à sable d’application. Toutefois, il peut s’agir de l’un des outils de sécurité que les développeurs d’applications utilisent pour restreindre le comportement des applications moins fiables.

Mécanisme d’intégrité Windows Vista et modèles d’intégrité antérieurs

Certaines caractéristiques du mécanisme d’intégrité Windows sont similaires aux modèles d’intégrité antérieurs pour la sécurité de l’ordinateur. Toutefois, le mécanisme d’intégrité Windows est conçu principalement pour traiter la falsification ou l’élévation de privilèges dans l’environnement d’application Windows hautement collaboratif. Les modèles d’intégrité précédents se souciaient davantage du maintien de l’intégrité des processus fiables en appliquant des stratégies qui empêchent la lecture des données non approuvées.

Le modèle de sécurité Biba est basé sur une hiérarchie d’étiquettes d’intégrité et les stratégies d’accès autorisées lorsqu’un niveau d’intégrité du sujet domine le niveau d’intégrité de l’objet. Le mécanisme d’intégrité Windows ressemble au modèle Biba des manières suivantes :

  • Il utilise une hiérarchie d’étiquettes d’intégrité (les étiquettes d’intégrité ne sont pas identiques aux étiquettes de sécurité dans le modèle Bell-LePadula).
  • Le système utilise un ensemble de sujets ordonnés, d’objets et de niveaux d’intégrité.
  • Le niveau d’intégrité du sujet domine (est supérieur ou égal à) le niveau d’intégrité de l’objet.
  • Les stratégies d’intégrité empêchent l’accès aux objets, mais ne sont pas utilisées principalement pour limiter le flux d’informations.
  • La prévention de la divulgation d’informations n’est pas un objectif du mécanisme d’intégrité dans Windows Vista.

Les niveaux d’intégrité Windows sont classés de sorte qu’une valeur inférieure indique moins de fiabilité et qu’une valeur plus élevée indique une fiabilité supérieure. Un sujet de niveau inférieur ne peut pas modifier un objet de niveau supérieur. Le niveau d’intégrité du sujet n’est pas dynamique. Par exemple, le niveau d’intégrité d’un sujet ne passe pas à une valeur inférieure si le processus lit les données d’un objet à faible intégrité. Le modèle d’intégrité stricte dans Biba ne permet pas à un processus à intégrité supérieure de lire des données d’intégrité inférieure. Il s’agit parfois d’une stratégie d’intégrité « sans lecture ». Les stratégies d’intégrité Windows, qui sont décrites plus en détail ci-dessous, n’empêchent pas les sujets à intégrité supérieure de lire ou d’exécuter des objets à intégrité inférieure. Il existe de nombreux exemples d’attaques où la lecture de données d’entrée non approuvées et mal formées entraîne une exploitation d’une vulnérabilité dans une application et une exécution de code arbitraire. Le mécanisme d’intégrité De Windows n’empêche pas la lecture des données à quelque niveau que ce soit. Windows n’applique pas de stratégie d’intégrité stricte décrite dans le modèle Biba. La conception d’intégrité suppose que les processus conçus pour gérer des données non approuvées provenant d’une source inconnue ou non approuvée s’exécutent à un niveau d’intégrité inférieur, ou que les données non approuvées sont vérifiées avant utilisation. Toutefois, le mécanisme d’intégrité Windows n’applique pas cette contrainte.

Le mécanisme d’intégrité Windows n’implémente pas de stratégie dynamique ou « marque de faible débit ». Une stratégie dynamique modifie le niveau d’intégrité du sujet lorsque le sujet ouvre des objets à intégrité inférieure. Un problème d’intégrité dynamique est lorsqu’un processus à haute intégrité obtient des handles ouverts pour de nombreux objets en fonction d’une intégrité élevée, puis devient soudainement un sujet d’intégrité inférieure après l’ouverture d’un fichier particulier à faible intégrité. Le fait de forcer la fermeture de tous les handles ouverts aux objets à intégrité supérieure lorsque le niveau d’intégrité change affecte considérablement le comportement de l’application. Le processus dynamique d’intégrité inférieure lui-même devient un objet cible d’autres processus au niveau d’intégrité inférieur. De tels processus peuvent maintenant être en mesure de modifier le comportement de l’application (au même niveau inférieur) qui a des handles ouverts vers des objets à intégrité supérieure.

Le mécanisme d’intégrité Windows n’est pas conçu pour la protection de l’intégrité des données afin de prendre en charge les exigences militaires ou commerciales, comme décrit dans le modèle Clark-Wilson. L’implémentation Windows des contrôles d’intégrité ne s’appuie pas sur les concepts d’éléments de données contraints ou sans contrainte et de procédures de transformation certifiées. Toutefois, ces concepts sont utiles pour les concepteurs d’applications lorsqu’ils considèrent le flux d’informations provenant de sources non approuvées vers des processus d’intégrité supérieure.

Bien que le mécanisme d’intégrité Windows soit similaire aux modèles d’intégrité antérieurs dans la sécurité de l’ordinateur, Windows Vista n’essaie pas d’implémenter aucun des modèles. Au lieu de cela, le mécanisme d’intégrité Windows limite les autorisations d’accès disponibles pour les processus s’exécutant avec différents niveaux de privilège ou d’approbation. Pour plus d’informations sur les travaux antérieurs sur les modèles d’intégrité de Biba et les stratégies d’intégrité Clark-Wilson et dynamiques, consultez Ressources du mécanisme d’intégrité Windows.