Condividi tramite


Sicurezza dei buffer della console e diritti di accesso

Il modello di sicurezza di Windows consente di controllare l'accesso ai buffer di input della console e ai buffer dello schermo della console. Per altre informazioni sulla sicurezza, vedere Access-Control Model.For more information about security, see Access-Control Model.

Descrittori di sicurezza degli oggetti console

È possibile specificare un descrittore di sicurezza per i buffer dello schermo della console e dell'input della console quando si chiama la funzione CreateFile o CreateConsoleScreenBuffer. Se si specifica NULL, l'oggetto ottiene un descrittore di sicurezza predefinito. Gli ACL nel descrittore di sicurezza predefinito per un buffer della console provengono dal token primario o di rappresentazione dell'autore.

Gli handle restituiti da CreateFile, CreateConsoleScreenBuffer e GetStdHandle hanno i diritti di accesso GENERIC_READ e GENERIC_WRITE.

I diritti di accesso validi includono il GENERIC_READ e GENERIC_WRITE diritti di accesso generico.

Valore Significato
GENERIC_READ (0x80000000L) Richiede l'accesso in lettura al buffer dello schermo della console, consentendo al processo di leggere i dati dal buffer.
GENERIC_WRITE (0x40000000L) Richiede l'accesso in scrittura al buffer dello schermo della console, consentendo al processo di scrivere dati nel buffer.

Nota

piattaforma UWP (Universal Windows Platform) app console e quelli con un livello di integrità inferiore rispetto alla console collegata non potranno leggere il buffer di output e scrivere nel buffer di input anche se i descrittori di sicurezza precedenti lo consentono normalmente. Per altri dettagli, vedere la discussione Sui verbi di modo sbagliato di seguito.

Verbi in modo errato

Alcune operazioni agli oggetti console verranno negate anche se l'oggetto dispone di un descrittore di sicurezza indicato per consentire in modo specifico la lettura o la scrittura. Ciò riguarda in particolare le applicazioni da riga di comando in esecuzione in un contesto con privilegi ridotti che condividono una sessione della console creata da un'applicazione della riga di comando in un contesto più permissivo.

Il termine "verbi non corretti" è destinato all'applicazione all'operazione che è il contrario del flusso normale per uno degli oggetti console. In particolare, il flusso normale per il buffer di output sta scrivendo e il flusso normale per il buffer di input viene letto. Il "modo errato" sarebbe quindi la lettura del buffer di output o la scrittura del buffer di input. Queste sono funzioni descritte nella documentazione delle funzioni di I/O della console di basso livello.

I due scenari in cui è possibile trovare questo scenario sono:

  1. piattaforma UWP (Universal Windows Platform) app console. Poiché questi sono cugini di altre applicazioni piattaforma UWP (Universal Windows Platform), mantengono una promessa che sono isolati da altre applicazioni e forniscono garanzie utente sugli effetti del loro funzionamento.
  2. Qualsiasi applicazione console avviata intenzionalmente con un livello di integrità inferiore rispetto alla sessione esistente che può essere eseguita con l'etichettatura o la manipolazione dei token durante CreateProcess.

Se viene rilevato uno di questi scenari, la console applicherà il flag "verbi non corretti" alla connessione dell'applicazione della riga di comando e rifiuterà le chiamate alle API seguenti per ridurre la superficie di comunicazione tra i livelli:

Le chiamate rifiutate riceveranno un codice di errore di accesso negato, come se l'autorizzazione di lettura o scrittura sia stata negata dai descrittori di sicurezza nell'oggetto.