Condividi tramite


Controllo dell'accesso dello spazio dei nomi dei dispositivi

Nel modello di driver windows (WDM), ogni oggetto dispositivo ha uno spazio dei nomi associato. I nomi nello spazio dei nomi del dispositivo sono percorsi che iniziano con il nome del dispositivo. Per un dispositivo denominato "\\DeviceDeviceName", lo spazio dei nomi è costituito da qualsiasi nome del modulo "\Device\DeviceName FileName\". Per un file system, FileName è un nome effettivo di un file nel file system.

Un driver WDM riceve richieste aperte per tutti i nomi nello spazio dei nomi del dispositivo. Il driver considera una richiesta aperta per "\Device\DeviceName" come apertura dell'oggetto dispositivo stesso. Se il driver implementa il supporto per le richieste aperte nello spazio dei nomi del dispositivo, considera una richiesta aperta per "\Device\DeviceName FileName\" come apertura di un "file" nello spazio dei nomi dell'oggetto dispositivo (dove la nozione di "file" per il dispositivo è determinata dal driver).

La maggior parte dei driver non implementa il supporto per le operazioni aperte nello spazio dei nomi del dispositivo, ma tutti i driver devono fornire controlli di sicurezza per impedire l'accesso non autorizzato allo spazio dei nomi del dispositivo. Per impostazione predefinita, i controlli di sicurezza per le richieste di apertura dei file nello spazio dei nomi del dispositivo, ad esempio "\Device\DeviceName FileName\" vengono lasciati interamente al driver, ovvero l'ACL dell'oggetto dispositivo non viene controllato dal sistema operativo.

Se viene impostata la caratteristica FILE_DEVICE_SECURE_OPEN di un oggetto dispositivo, il sistema applica il descrittore di sicurezza dell'oggetto dispositivo a tutte le richieste aperte dei file nello spazio dei nomi del dispositivo. I driver possono impostare FILE_DEVICE_SECURE_OPEN quando creano l'oggetto dispositivo con IoCreateDevice o IoCreateDeviceSecure. Per i driver WDM, è anche possibile impostare FILE_DEVICE_SECURE_OPEN nel Registro di sistema. Può anche essere impostato nel Registro di sistema per gli oggetti dispositivo di driver non WDM creati da IoCreateDeviceSecure. Per altre informazioni sull'impostazione delle proprietà dell'oggetto dispositivo, ad esempio le caratteristiche del dispositivo, nel Registro di sistema, vedere Impostazione delle proprietà dell'oggetto dispositivo nel Registro di sistema. Per altre informazioni sulle caratteristiche del dispositivo, vedere Specifica delle caratteristiche del dispositivo.

I driver per i dispositivi che non supportano gli spazi dei nomi devono usare uno dei due metodi per garantire che le richieste aperte dei file all'interno dello spazio dei nomi del dispositivo vengano gestite correttamente:

  • Gli oggetti dispositivo del driver hanno il set di caratteristiche del dispositivo FILE_DEVICE_SECURE_OPEN. Il driver può quindi considerare qualsiasi richiesta aperta nello spazio dei nomi del dispositivo come richiesta aperta per l'oggetto dispositivo.

  • Il driver può avere esito negativo in qualsiasi IRP_MJ_CREATE richieste che specificano un parametro IrpSp-FileObject-FileName>> la cui lunghezza non è zero. In questo caso, le richieste aperte per il dispositivo sono soggette al controllo ACL del sistema, mentre tutte le richieste aperte file all'interno dello spazio dei nomi del dispositivo non sono riuscite dal driver. I driver che supportano l'apertura esclusiva devono usare questa opzione.

I driver per i dispositivi che supportano spazi dei nomi possono anche usare due metodi per proteggere le richieste aperte dei file nello spazio dei nomi del dispositivo:

  • Gli oggetti dispositivo del driver hanno il set di caratteristiche del dispositivo FILE_DEVICE_SECURE_OPEN. Ciò garantisce che le impostazioni di sicurezza per il dispositivo si applichino uniformemente allo spazio dei nomi del dispositivo. Il driver è responsabile dell'implementazione del supporto per lo spazio dei nomi nella relativa funzione di callback DRIVER_DISPATCH .

  • Il driver controlla eventuali elenchi di controllo di accesso per il nome del file nella routine DispatchCreate . Anche in questo caso il driver deve impostare la caratteristica FILE_DEVICE_SECURE_OPEN a meno che non si apre nello spazio dei nomi del dispositivo possa avere impostazioni di sicurezza più deboli rispetto all'oggetto del dispositivo.

La caratteristica FILE_DEVICE_SECURE_OPEN viene controllata nella parte superiore dello stack, quindi gli oggetti dispositivo di filtro devono copiare il membro Caratteristiche dell'oggetto dispositivo inferiore successivo dopo il collegamento.