Bagikan melalui


Pemeriksaan Keamanan Pemverifikasi Driver

Opsi Pemeriksaan Keamanan Driver Verifier memantau driver untuk kesalahan umum yang dapat mengakibatkan kerentanan keamanan. Opsi ini tersedia mulai dari Windows Vista.

Secara khusus, opsi Pemeriksaan Keamanan mencari perilaku driver yang tidak tepat berikut ini:

  • Memanggil rutinitas kernel ZwXxx dengan alamat mode pengguna sebagai parameter. Ketika driver memanggil rutinitas ZwXxx , Driver Verifier memeriksa bahwa tidak ada parameter yang merupakan alamat mode pengguna. Saat memanggil rutinitas ZwXxx , KPROCESSOR_MODE saat ini menjadi KernelMode, dan parameter apa pun yang diteruskan ke rutinitas tersebut diperlakukan seolah-olah mereka adalah alamat mode kernel. Dengan demikian, driver harus memeriksa buffer mode pengguna yang diterima dari aplikasi dan menempatkannya ke dalam memori mode kernel (misalnya, dalam blok kumpulan atau struktur data yang dialokasikan pada tumpukan kernel) sebelum memanggil rutinitas ZwXxx kernel. Driver harus menggunakan buffer yang ditangkap daripada buffer mode pengguna sebagai parameter rutinitas ZwXxx .

  • Memanggil rutinitas kernel ZwXxx dengan UNICODE_STRINGs cacat sebagai parameter. Ketika driver memanggil rutinitas ZwXxx , Driver Verifier memeriksa parameter apa pun yang UNICODE_STRING nilai. Kesalahan umum yang terdeteksi oleh Pemverifikasi Driver dalam string tersebut meliputi:

    • Bidang buffer menunjuk ke memori mode pengguna.
    • Parameter Length atau MaximumLength salah. Misalnya, Panjang MaximumLength<. Atau satu atau kedua nilai ini adalah angka ganjil. Kedua nilai ini harus selalu merata karena mewakili jumlah byte yang digunakan untuk mewakili string Unicode.
  • Memanggil rutinitas kernel ZwXxx dengan struktur OBJECT_ATTRIBUTES yang salah sebagai parameter. Ketika driver memanggil rutinitas ZwXxx , Driver Verifier memeriksa parameter apa pun yang OBJECT_ATTRIBUTE struktur. Anggota setiap parameter struktur OBJECT_ATTRIBUTE tunduk pada pemeriksaan yang sama untuk alamat mode pengguna dan nilai UNICODE_STRING yang dijelaskan di atas.

  • Parameter Permintaan Irp-RequestorMode> dan I/O tidak konsisten. Setiap kali Irp-> RequestorMode diatur ke KernelMode, Driver Verifier memeriksa bahwa tidak ada parameter Permintaan I/O, Irp-AssociatedIrp.SystemBuffer> atau Irp-UserBuffer>, adalah alamat mode pengguna.

Dimulai dengan Windows 7, ketika Anda mengaktifkan opsi Pemverifikasi Driver apa pun, Pemverifikasi Driver memeriksa perilaku driver berikut:

Penghitung referensi objek berubah dari 0 menjadi 1. Saat pengelola objek kernel Windows membuat objek, seperti objek File atau objek Utas, penghitung referensi objek baru diatur ke 1. Panggilan ke fungsi sistem seperti ObReferenceObjectByPointer atau ObReferenceObjectByHandle meningkatkan penghitung referensi. Setiap panggilan ke ObDereferenceObject untuk objek yang sama mengurangi penghitung referensi.

Setelah penghitung referensi mencapai nilai 0, objek menjadi memenuhi syarat untuk dibebaskan. Manajer objek mungkin segera membebaskannya, atau mungkin membebaskannya nanti. Pemverifikasi Driver memeriksa panggilan berikutnya ke ObReferenceObjectByPointer dan ObReferenceObject untuk objek yang sama. Panggilan ini mengubah penghitung referensi dari 0 menjadi 1, yang berarti driver telah menambahkan penghitung referensi dari objek yang sudah dibebaskan. Ini selalu salah karena dapat merusak alokasi memori lainnya.

Mengaktifkan Opsi Ini

Anda dapat mengaktifkan opsi Pemeriksaan Keamanan untuk satu atau beberapa driver dengan menggunakan Driver Verifier Manager atau baris perintah Verifier.exe. Untuk detailnya, lihat Memilih Opsi Pemverifikasi Driver.

  • Menggunakan baris perintah

    Pada baris perintah, opsi Pemeriksaan Keamanan diwakili oleh Bit 8 (0x100). Untuk mengaktifkan Pemeriksaan Keamanan, gunakan nilai bendera 0x100 atau tambahkan 0x100 ke nilai bendera. Contohnya:

    verifier /flags 0x100 /driver MyDriver.sys
    

    Opsi akan aktif setelah Anda menghidupkan ulang komputer.

    Dimulai dengan Windows Vista, Anda juga dapat mengaktifkan dan menonaktifkan Pemeriksaan Keamanan tanpa memulai ulang komputer dengan menambahkan parameter /volatile ke perintah. Contohnya:

    verifier /volatile /flags 0x100 /adddriver MyDriver.sys
    

    Pengaturan ini langsung efektif, tetapi hilang ketika Anda mematikan atau menghidupkan ulang komputer. Untuk detailnya, lihat Menggunakan Pengaturan Volatil.

    Opsi Pemeriksaan Keamanan juga disertakan dalam pengaturan standar. Contohnya:

    verifier /standard /driver MyDriver.sys
    
  • Menggunakan Driver Verifier Manager

    1. Mulai Manajer Pemverifikasi Driver. Ketik Pemverifikasi di jendela Wantian Perintah.
    2. Pilih Buat pengaturan kustom (untuk pengembang kode), lalu klik Berikutnya.
    3. Pilih Pilih pengaturan individual dari daftar lengkap.
    4. Pilih Pemeriksaan Keamanan.

    Fitur Pemeriksaan Keamanan juga disertakan dalam pengaturan standar. Untuk menggunakan fitur ini di Manajer Pemverifikasi Driver, klik Buat Pengaturan Standar.