Seguridad y derechos de acceso del búfer de la consola

El modelo de seguridad de Windows permite controlar el acceso a los búferes de entrada de la consola y a los búferes de pantalla de la consola. Para más información sobre seguridad, consulte Modelo Access-Control.

Descriptores de seguridad de objetos de consola

Puede especificar un descriptor de seguridad para los búferes de pantalla de consola y entrada de consola al llamar a la función CreateFile o CreateConsoleScreenBuffer. Si especifica NULL, el objeto obtiene un descriptor de seguridad predeterminado. Las ACL del descriptor de seguridad predeterminado para un búfer de consola proceden del token de suplantación o principal del creador.

Los identificadores devueltos por CreateFile, CreateConsoleScreenBuffer y GetStdHandle tienen los derechos de acceso GENERIC_READ y GENERIC_WRITE.

Los derechos de acceso válidos son GENERIC_READ y GENERIC_WRITE(derechos de acceso genéricos).

Valor Significado
GENERIC_READ (0x80000000L) Solicita acceso de lectura al búfer de pantalla de la consola, lo que permite que el proceso lea los datos del búfer.
GENERIC_WRITE (0x40000000L) Solicita acceso de escritura al búfer de pantalla de la consola, lo que permite al proceso escribir datos en el búfer.

Nota:

Las aplicaciones de consola de la Plataforma universal de Windows y aquellas que tengan un nivel de integridad inferior al de la consola asociada tendrán prohibido leer el búfer de salida y escribir en el búfer de entrada, incluso aunque los descriptores de seguridad anteriores lo permitieran normalmente. Consulte la discusión Verbos con dirección incorrecta a continuación para obtener más detalles.

Verbos con dirección incorrecta

Se denegarán algunas operaciones para los objetos de consola incluso aunque el objeto tenga un descriptor de seguridad que se indica para permitir específicamente la lectura o escritura. Esto se refiere específicamente a las aplicaciones de línea de comandos que se ejecutan en un contexto con privilegios reducidos que comparten una sesión de consola creada por una aplicación de línea de comandos en un contexto más permisivo.

El término "verbos con dirección incorrecta" pretende aplicarse a la operación inversa del flujo normal para uno de los objetos de la consola. En concreto, el flujo normal del búfer de salida está escribiendo y el flujo normal del búfer de entrada está leyendo. Por lo tanto, la "dirección incorrecta" sería la lectura del búfer de salida o la escritura del búfer de entrada. Estas son funciones que se describen en la documentación de funciones de E/S de consola de bajo nivel.

Los dos escenarios en los que se puede encontrar esto son los siguientes:

  1. Aplicaciones de consola de la Plataforma universal de Windows. Dado que son primos de otras aplicaciones de Plataforma universal de Windows, tienen la promesa de estar aislados de otras aplicaciones y proporcionar garantías de usuario en torno a los efectos de su funcionamiento.
  2. Cualquier aplicación de consola iniciada intencionadamente con un nivel de integridad inferior al de la sesión existente que se puede realizar mediante etiquetado o manipulación de tokens durante CreateProcess.

Si se detecta cualquiera de estos escenarios, la consola aplicará la marca "verbos con dirección incorrecta" a la conexión de la aplicación de línea de comandos y rechazará las llamadas a las siguientes API para reducir la superficie de comunicación entre los niveles:

Las llamadas rechazadas recibirán un código de error de acceso denegado, igual que si los descriptores de seguridad del objeto deniegan el permiso de lectura o escritura.