Udostępnij przez


Zabezpieczenia buforu konsoli i prawa dostępu

Model zabezpieczeń systemu Windows umożliwia kontrolowanie dostępu do wejściowych konsoli i ekranu konsoli. Aby uzyskać więcej informacji na temat zabezpieczeń, zobacz Access-Control Model.

Deskryptory zabezpieczeń obiektów konsoli

Deskryptor zabezpieczeń dla ekranu wejściowego konsoli i konsoli można określić podczas wywoływania funkcji CreateFile lub CreateConsoleScreenBuffer. Jeśli określisz NULL, obiekt otrzyma domyślny deskryptor zabezpieczeń. Listy ACL w domyślnym deskryptorze zabezpieczeń buforu konsoli pochodzą z podstawowego lub personifikacyjnego tokenu twórcy.

Dojścia zwrócone przez metody CreateFile, CreateConsoleScreenBuffer i GetStdHandle mają prawa dostępu GENERIC_READ i GENERIC_WRITE .

Prawidłowe prawa dostępu obejmują GENERIC_READ i GENERIC_WRITEogólnych praw dostępu.

Wartość Znaczenie
GENERIC_READ (0x8000000000L) Żąda dostępu do odczytu do buforu ekranu konsoli, umożliwiając procesowi odczytywanie danych z buforu.
GENERIC_WRITE (0x400000000L) Żąda dostępu zapisu do buforu ekranu konsoli, umożliwiając procesowi zapisywanie danych w buforze.

Uwaga / Notatka

Aplikacje konsolowe platformy uniwersalnej systemu Windows i te, które mają niższy poziom integralności niż dołączona konsola, nie będą mogli odczytywać buforu wyjściowego i zapisywać w buforze wejściowym, nawet jeśli deskryptory zabezpieczeń powyżej pozwolą na to normalnie. Aby uzyskać więcej informacji, zobacz poniższą dyskusję na temat błędnych czasowników .

Wrong-Way czasowniki

Niektóre operacje na obiektach konsoli zostaną odrzucone, nawet jeśli obiekt ma deskryptor zabezpieczeń określony w celu zezwolenia na odczyt lub zapis. Dotyczy to w szczególności aplikacji wiersza polecenia działających w kontekście ograniczonych uprawnień, które współużytkują sesję konsoli utworzoną przez aplikację wiersza polecenia w bardziej permissywnym kontekście.

Termin "błędne czasowniki" jest przeznaczony do zastosowania do operacji, która jest odwrotnością normalnego przepływu dla jednego z obiektów konsoli. W szczególności normalny przepływ buforu wyjściowego zapisuje, a normalny przepływ buforu wejściowego odczytuje. W związku z tym "niewłaściwy sposób" byłby odczytem buforu wyjściowego lub zapisem buforu wejściowego. Są to funkcje opisane w dokumentacji funkcji we/wy konsoliLow-Level .

Dwa scenariusze, w których można to znaleźć, to:

  1. Aplikacje konsolowe platformy uniwersalnej systemu Windows. Ponieważ są to kuzyni innych aplikacji platformy uniwersalnej systemu Windows, posiadają obietnicę, że są odizolowane od innych aplikacji i zapewniają gwarancje użytkownika dotyczące efektów ich działania.
  2. Każda aplikacja konsolowa celowo uruchomiona z niższym poziomem integralności niż istniejąca sesja, którą można wykonać za pomocą etykietowania lub manipulowania tokenami podczas tworzeniaProcess.

Jeśli którykolwiek z tych scenariuszy zostanie wykryty, konsola zastosuje flagę "błędnych czasowników" do połączenia aplikacji wiersza polecenia i odrzuci wywołania następujących interfejsów API w celu zmniejszenia powierzchni komunikacji między poziomami:

Odrzucone wywołania otrzymają kod błędu odmowy dostępu , tak samo jak w przypadku odmowy uprawnień do odczytu lub zapisu przez deskryptory zabezpieczeń obiektu.