Sicherheit und Zugriffsrechte für Konsolenpuffer

Mit dem Windows-Sicherheitsmodell können Sie den Zugriff auf Konsoleneingabepuffer und Konsolenbildschirmpuffer steuern. Weitere Informationen zu ACS finden Sie unter Access Control Service.

Konsolenobjektsicherheitsdeskriptoren

Sie können einen Sicherheitsdeskriptor für die Konsoleneingabe und die Konsolenbildschirmpuffer angeben, wenn Sie die CreateFile- oder CreateConsoleScreenBuffer-Funktion aufrufen. Wenn Sie NULL angeben, ruft das Objekt einen Standardsicherheitsdeskriptor ab. Die ACLs im Standardsicherheitsdeskriptor für einen Konsolenpuffer stammen aus dem primären oder Identitätswechseltoken des Erstellers.

Die von CreateFile, CreateConsoleScreenBuffer und GetStdHandle zurückgegebenen Handles verfügen über die GENERIC_READ und GENERIC_WRITE Zugriffsrechte.

Zu den gültigen Zugriffsrechten gehören die GENERIC_READ und GENERIC_WRITEgenerischen Zugriffsrechte.

Wert Bedeutung
GENERIC_READ (0x800000000L) Fordert Lesezugriff auf den Konsolenbildschirmpuffer an, sodass der Prozess Daten aus dem Puffer lesen kann.
GENERIC_WRITE (0x400000000L) Fordert Schreibzugriff auf den Konsolenbildschirmpuffer an, sodass der Prozess Daten in den Puffer schreiben kann.

Hinweis

Universelle Windows-Plattform Konsolen-Apps und diejenigen mit einer niedrigeren Integritätsstufe als die angefügte Konsole dürfen nicht sowohl den Ausgabepuffer lesen als auch in den Eingabepuffer schreiben, auch wenn die oben genannten Sicherheitsdeskriptoren dies normalerweise zulassen würden. Weitere Informationen finden Sie in der Nachstehenden Diskussion zu Den falschen Wegverben.

Gegenläufige Verben

Einige Vorgänge an den Konsolenobjekten werden verweigert, auch wenn das Objekt über einen Sicherheitsdeskriptor verfügt, der angegeben wird, dass das Lesen oder Schreiben ausdrücklich zulässig ist. Dies betrifft insbesondere Befehlszeilenanwendungen, die in einem Kontext mit eingeschränkten Rechten ausgeführt werden, die eine Konsolensitzung freigeben, die von einer Befehlszeilenanwendung in einem weniger zulässigen Kontext erstellt wurde.

Der Begriff "falsche Verben" soll auf den Vorgang angewendet werden, der den normalen Fluss für eines der Konsolenobjekte darstellt. Insbesondere wird der normale Fluss für den Ausgabepuffer geschrieben, und der normale Fluss für den Eingabepuffer liest. Die "falsche Methode" wäre daher das Lesen des Ausgabepuffers oder das Schreiben des Eingabepuffers. Dies sind Funktionen, die in der Dokumentation zu I/O-Funktionen der Low-Level-Konsole beschrieben werden.

Die beiden Szenarien, in denen dies zu finden ist, sind:

  1. Universelle Windows-Plattform (UWP)-Apps. Da es sich hierbei um Cousins anderer Universelle Windows-Plattform Anwendungen handelt, halten sie eine Zusage, dass sie von anderen Anwendungen isoliert sind und den Benutzern Garantien für die Auswirkungen ihres Betriebs bieten.
  2. Jede Konsolenanwendung wurde absichtlich mit einer niedrigeren Integritätsstufe gestartet als die vorhandene Sitzung, die mit bezeichnungs- oder tokenmanipulation während CreateProcess erreicht werden kann.

Wenn eines dieser Szenarien erkannt wird, wendet die Konsole das Flag "falsche Verben" auf die Befehlszeilenanwendungsverbindung an und lehnt Aufrufe der folgenden APIs ab, um die Kommunikationsfläche zwischen den Ebenen zu verringern:

Abgelehnte Aufrufe erhalten einen Fehlercode für "Zugriff verweigert ", dasselbe wie wenn die Lese- oder Schreibberechtigung von den Sicherheitsdeskriptoren für das Objekt verweigert wurde.