Zabezpečení vyrovnávací paměti konzoly a přístupová práva

Model zabezpečení systému Windows umožňuje řídit přístup ke vstupním vyrovnávacím pamětím konzoly a vyrovnávací paměti obrazovky konzoly. Další informace o zabezpečení naleznete v tématu Access-Control Model.

Popisovače zabezpečení objektů konzoly

Při volání funkce CreateFile nebo CreateConsoleScreenBuffer můžete zadat popisovač zabezpečení pro vstup konzoly a vyrovnávací paměti obrazovky konzoly. Pokud zadáte NULL, objekt získá výchozí popisovač zabezpečení. Seznamy ACL ve výchozím popisovači zabezpečení pro vyrovnávací paměť konzoly pocházejí z primárního tokenu nebo tokenu zosobnění tvůrce.

Popisovače vrácené CreateFile, CreateConsoleScreenBuffer a GetStdHandle mají GENERIC_READ a GENERIC_WRITE přístupová práva.

Platná přístupová práva zahrnují GENERIC_READ a GENERIC_WRITEobecná přístupová práva.

Hodnota Význam
GENERIC_READ (0x80000000L) Vyžaduje přístup pro čtení do vyrovnávací paměti obrazovky konzoly a umožňuje procesu číst data z vyrovnávací paměti.
GENERIC_WRITE (0x40000000L) Vyžaduje přístup k zápisu do vyrovnávací paměti obrazovky konzoly, což umožňuje procesu zapisovat data do vyrovnávací paměti.

Poznámka:

Aplikace konzoly Pro univerzální platformu Windows a aplikace s nižší úrovní integrity , než je připojená konzola, nebudou moci číst výstupní vyrovnávací paměť i zapisovat do vstupní vyrovnávací paměti, i když by výše uvedené popisovače zabezpečení normálně umožňovaly. Další podrobnosti najdete v níže uvedené diskuzi o slovesech nesprávným způsobem .

Wrong-Way slovesa

Některé operace s objekty konzoly budou odepřeny, i když má objekt popisovač zabezpečení, který je uveden tak, aby výslovně povolil čtení nebo zápis. Týká se to konkrétně aplikací příkazového řádku spuštěných v kontextu s omezenými oprávněními, které sdílejí relaci konzoly, kterou vytvořila aplikace příkazového řádku v více permisivním kontextu.

Termín "chybná slovesa" je určen k použití na operaci, která je naopak normálním tokem pro jeden z objektů konzoly. Konkrétně normální tok výstupní vyrovnávací paměti zapisuje a normální tok vstupní vyrovnávací paměti čte. Chybným způsobem by tedy bylo čtení výstupní vyrovnávací paměti nebo zápis vstupní vyrovnávací paměti. Jedná se o funkce popsané v dokumentaci ke vstupně-výstupním funkcím konzolyLow-Level .

Existují dva scénáře, ve kterých se dá najít:

  1. Konzolové aplikace pro Univerzální platformu Windows Vzhledem k tomu, že se jedná o bratrance jiných aplikací pro Univerzální platformu Windows, mají slib, že jsou izolované od jiných aplikací a poskytují uživatelské záruky ohledně účinků jejich provozu.
  2. Každá konzolová aplikace se záměrně spustila s nižší úrovní integrity , než je stávající relace, kterou lze provést pomocí popisků nebo manipulace s tokeny během createProcess.

Pokud se zjistí některý z těchto scénářů, konzola použije u připojení aplikace příkazového řádku příznak chybných příkazů a odmítne volání následujících rozhraní API, aby se snížila plocha komunikace mezi úrovněmi:

Odmítnutá volání obdrží kód chyby odepření přístupu , stejně jako v případě, že oprávnění ke čtení nebo zápisu byly odepřeny popisovači zabezpečení objektu.