Bagikan melalui


Mengontrol Akses Namespace Perangkat

Dalam Windows Driver Model (WDM), setiap objek perangkat memiliki namespace terkait. Nama di namespace perangkat adalah path yang dimulai dengan nama perangkat. Untuk perangkat bernama "\Device\DeviceName", namespace tersebut terdiri dari nama apa pun yang berbentuk "\Device\DeviceName\FileName". (Untuk sistem file, FileName adalah nama aktual file pada sistem file.)

Driver WDM menerima permintaan terbuka untuk semua nama di namespace perangkat. Driver memperlakukan permintaan terbuka untuk "\Device\DeviceName" sebagai pembukaan dari objek perangkat itu sendiri. Jika driver menerapkan dukungan untuk permintaan terbuka ke namespace perangkat, maka driver memperlakukan permintaan terbuka untuk "\Device\DeviceName\FileName" sebagai membuka "file" dalam namespace objek perangkat (di mana konsep "file" untuk perangkat ditentukan oleh driver).

Sebagian besar driver tidak menerapkan dukungan untuk operasi terbuka ke namespace layanan perangkat, tetapi semua driver harus memberikan pemeriksaan keamanan untuk mencegah akses tidak sah ke namespace layanan perangkat. Secara default, pemeriksaan keamanan untuk permintaan buka file dalam ruang nama perangkat (misalnya, "\Device\DeviceName\FileName") sepenuhnya diserahkan kepada driver—objek perangkat ACL tidak diperiksa oleh sistem operasi.

Jika karakteristik FILE_DEVICE_SECURE_OPEN objek perangkat diatur, sistem menerapkan deskriptor keamanan objek perangkat ke semua permintaan buka file di namespace perangkat. Driver dapat mengatur FILE_DEVICE_SECURE_OPEN ketika mereka membuat objek perangkat dengan IoCreateDevice atau IoCreateDeviceSecure. Untuk driver WDM, FILE_DEVICE_SECURE_OPEN juga dapat diatur dalam registri. Ini juga dapat diatur dalam registri untuk objek perangkat driver non-WDM yang dibuat oleh IoCreateDeviceSecure. Untuk informasi selengkapnya tentang mengatur properti objek perangkat, seperti karakteristik perangkat, di registri, lihat Mengatur Properti Objek Perangkat di Registri. Untuk informasi selengkapnya tentang karakteristik perangkat, lihat Menentukan Karakteristik Perangkat.

Driver-driver untuk perangkat yang tidak mendukung namespace harus menggunakan salah satu dari dua metode untuk memastikan penanganan permintaan pembukaan file dalam namespace perangkat dilakukan dengan benar:

  • Objek dari perangkat driver mengandung karakteristik perangkat FILE_DEVICE_SECURE_OPEN. Driver kemudian dapat memperlakukan permintaan terbuka apa pun ke namespace perangkat sebagai permintaan terbuka untuk objek perangkat.

  • Pengemudi mungkin menolak setiap permintaan IRP_MJ_CREATE yang menentukan parameter IrpSp->FileObject->FileName dengan panjang yang tidak nol. Dalam hal ini, permintaan pembukaan untuk perangkat terkena pemeriksaan ACL sistem, sementara semua permintaan pembukaan file dalam namespace perangkat ditolak oleh driver. (Driver yang mendukung akses eksklusif harus menggunakan opsi ini.)

Driver bagi perangkat yang mendukung namespace juga dapat menggunakan dua metode untuk mengamankan permintaan pembukaan file ke dalam namespace perangkat.

  • Objek perangkat pengemudi memiliki karakteristik perangkat FILE_DEVICE_SECURE_OPEN. Ini memastikan bahwa pengaturan keamanan untuk perangkat berlaku secara seragam ke namespace perangkat. (Driver bertanggung jawab untuk menerapkan dukungan untuk namespace dalam fungsi panggilan balik DRIVER_DISPATCH.)

  • Driver memeriksa semua ACL untuk nama file pada rutinitas DispatchCreate. (Bahkan dalam hal ini driver harus mengatur karakteristik FILE_DEVICE_SECURE_OPEN kecuali jika pembukaan ke dalam namespace perangkat dapat memiliki pengaturan keamanan yang lebih lemah daripada objek perangkat.)

Karakteristik FILE_DEVICE_SECURE_OPEN diperiksa di puncak tumpukan, sehingga setelah melampirkan, objek perangkat filter harus menyalin anggota Karakteristik dari objek perangkat selanjutnya yang lebih rendah.