Share via


Controllo dell'accesso ai dispositivi nei driver KMDF

I driver devono contribuire a impedire agli utenti di accedere in modo non appropriato ai dispositivi e ai file di un computer. Per impedire l'accesso non autorizzato a dispositivi e file, è necessario:

  • Assegnare un nome agli oggetti dispositivo solo quando necessario.

  • Fornire descrittori di sicurezza per oggetti dispositivo e interfacce.

Denominazione degli oggetti dispositivo solo quando necessario

Come la maggior parte dei driver windows Driver Model (WDM), i driver basati su framework in genere non denominano i relativi oggetti dispositivo. Le applicazioni possono accedere a un dispositivo specificando un nome di oggetto dispositivo, quindi ogni nome di oggetto dispositivo aggiuntivo rappresenta un percorso aggiuntivo che un'applicazione può usare per accedere al dispositivo.

Per impedire l'accesso non autorizzato a un dispositivo, ogni driver può specificare un descrittore di sicurezza quando assegna un nome a un oggetto dispositivo. Tuttavia, il nome file fornito dal sistema operativo a un driver (vedere WdfFileObjectGetFileName) non include il nome dell'oggetto dispositivo usato dall'applicazione. Pertanto, se più driver nello stack del driver forniscono nomi per gli oggetti dispositivo, il driver non può determinare il nome dell'oggetto usato per aprire il dispositivo. Di conseguenza, un'applicazione potrebbe aprire il dispositivo con un descrittore di sicurezza meno restrittivo di quello previsto dal driver.

Gli oggetti dispositivo fisico (PDO) devono avere nomi. In genere, i driver del bus basati su framework non specificano un nome per un PDO, perché il framework (per impostazione predefinita) indica al sistema operativo di generare un nome.

D'altra parte, un driver basato su framework può assegnare un nome di dispositivo a un oggetto dispositivo chiamando WdfDeviceInitAssignName. Un driver deve denominare un oggetto dispositivo funzionale (FDO), filtrare l'oggetto dispositivo (FILTRO DO) o PDO solo se il driver deve supportare un'applicazione precedente che prevede un nome di dispositivo specifico o se il driver appartiene a uno stack di driver meno recente la cui architettura richiede nomi di oggetti.

Invece di assegnare nomi FDO e DO di filtro, i driver WDM e i driver basati su framework devono fornire interfacce di dispositivo a cui le applicazioni possono accedere. Il sistema operativo ottiene il descrittore di sicurezza di un'interfaccia del dispositivo dal PDO del dispositivo e dalle voci del Registro di sistema specificate dal file INF di un pacchetto driver. Un driver del bus può fornire interfacce di dispositivo per un PDO se i dispositivi del driver operano in modalità non elaborata, senza un driver di funzione.

Alcuni driver devono chiamare WdfDeviceCreateSymbolicLink per creare nomi di collegamento simbolici per i propri dispositivi. Ad esempio, un driver potrebbe creare un nome di dispositivo MS-DOS se le applicazioni prevedono di visualizzare un nome MS-DOS per il dispositivo. Se il driver crea un nome di collegamento simbolico per un FDO o un filtro DO senza nome, il framework associa il nome del collegamento simbolico al nome del PDO. I dispositivi di controllo non sono associati a un PDO, quindi il driver non può creare un nome di collegamento simbolico per un dispositivo di controllo senza nome.

Fornitura di descrittori di sicurezza per oggetti dispositivo e interfacce

Ogni oggetto dispositivo denominato deve avere un descrittore di sicurezza. Il sistema operativo usa il descrittore di sicurezza dell'oggetto dispositivo per determinare i tipi di utenti autorizzati ad accedere a un dispositivo e alle relative interfacce del dispositivo. I descrittori di sicurezza possono essere assegnati agli oggetti dispositivo tramite:

Per impostazione predefinita, il sistema operativo usa anche il descrittore di sicurezza del pdo del dispositivo per determinare i diritti di accesso alle interfacce del dispositivo fornite da un driver.

Un pacchetto driver può fornire un file INF che specifica i descrittori di sicurezza di un dispositivo con una direttiva INF AddReg all'interno di una sezione INF DDInstall.HW.

Per altre informazioni sulla specifica dei descrittori di sicurezza nei file INF, vedere Creazione di installazioni di dispositivi protetti.

Se il driver crea PDO per i dispositivi che operano in modalità non elaborata, il driver deve specificare una classe di installazione del dispositivo quando chiama WdfPdoInitAssignRawDevice. Inoltre, se il driver crea dispositivi di controllo, può chiamare WdfDeviceInitSetDeviceClass per specificare una classe di installazione del dispositivo. In entrambi questi casi, gli amministratori di sistema possono usare la chiave del Registro di sistema della classe di installazione specificata per archiviare i descrittori di sicurezza per il dispositivo.

Per informazioni su come il sistema operativo determina il descrittore di sicurezza da usare per un dispositivo, vedere Controllo dell'accesso ai dispositivi.

Quando il framework crea un oggetto dispositivo, imposta sempre il flag FILE_DEVICE_SECURE_OPEN in modo che il sistema operativo controlli il descrittore di sicurezza di un dispositivo prima di consentire a un'applicazione di accedere a qualsiasi nome all'interno dello spazio dei nomi del dispositivo. Per altre informazioni sul flag di FILE_DEVICE_SECURE_OPEN e sullo spazio dei nomi del dispositivo, vedere Controllo dell'accesso allo spazio dei nomi dei dispositivi.