Partager via


Sécurité de la mémoire tampon et droits d’accès d’une console

Le modèle de sécurité Windows permet de contrôler l'accès aux mémoires tampons d'entrée et d'écran de la console. Pour plus d'informations sur la sécurité, consultez Modèle de contrôle d'accès.

Descripteurs de sécurité des objets de console

Vous pouvez spécifier un descripteur de sécurité pour les mémoires tampons d’entrée et d’écran de console lorsque vous appelez la fonction CreateFile ou CreateConsoleScreenBuffer. Si vous spécifiez NUL, l’objet obtient un descripteur de sécurité par défaut. Les ACL du descripteur de sécurité par défaut d'une mémoire tampon de console proviennent du jeton primaire ou du jeton d'emprunt d'identité du créateur.

Les descripteurs renvoyés par CreateFile, CreateConsoleScreenBuffer et GetStdHandle ont les droits d’accès GENERIC_READ et GENERIC_WRITE.

Les droits d’accès valides incluent les droits d’accès GENERIC_READ et GENERIC_WRITE droits d’accès génériques.

Valeur Signification
GENERIC_READ (0x80000000L) Demande l’accès en lecture à la mémoire tampon de l’écran de la console, ce qui permet au processus de lire des données à partir de la mémoire tampon.
GENERIC_WRITE (0x40000000L) Demande l’accès en écriture à la mémoire tampon de l’écran de la console, ce qui permet au processus d’écrire des données dans la mémoire tampon.

Remarque

Les applications de console de la plateforme Windows universelle et celles dont le niveau d'intégrité est inférieur à celui de la console attachée ne pourront ni lire la mémoire tampon de sortie ni écrire dans la mémoire tampon d'entrée, même si les descripteurs de sécurité ci-dessus l'autorisent normalement. Pour plus de détails, consultez la discussion sur les Verbes à direction inverse ci-dessous.

Verbes à direction inverse

Certaines opérations sur les objets de console sont refusées même si l’objet a un descripteur de sécurité qui autorise spécifiquement la lecture ou l’écriture. Les applications en ligne de commande exécutées dans un contexte à privilèges réduits qui partagent une session de console créée par une application en ligne de commande dans un contexte plus permissif sont particulièrement concernées.

L’expression « verbes à direction inverse » est destiné à s’appliquer à l’opération qui est l’inverse du flux normal pour l’un des objets de console. Plus précisément, le flux normal pour la mémoire tampon de sortie est l'écriture et le flux normal pour la mémoire tampon d'entrée est la lecture. La « direction inverse » serait donc la lecture de la mémoire tampon de sortie ou l'écriture de la mémoire tampon d'entrée. Ces fonctions sont décrites dans la documentation sur les fonctions d'E/S de console de bas niveau.

Les deux scénarios sont les suivants :

  1. Applications de la plateforme Windows universelle. Cousines d'autres applications de la plateforme Windows universelle, elles promettent d'être isolées des autres applications et d'offrir à l'utilisateur des garanties quant aux effets de leur fonctionnement.
  2. Toute application de console est intentionnellement lancée avec un niveau d'intégrité inférieur à celui de la session existante, ce qui peut être réalisé par l'étiquetage ou la manipulation de jetons au cours de CreateProcess.

Si l'un de ces scénarios est détecté, la console appliquera l'indicateur « verbes à direction inverse » à la connexion de l'application en ligne de commande et rejettera les appels aux API suivantes afin de réduire la surface de communication entre les niveaux :

Les appels rejetés recevront un code d’erreur d’accès refusé, comme si l’autorisation de lecture ou d’écriture a été refusée par les descripteurs de sécurité sur l’objet.