Aracılığıyla paylaş


Sürücü Doğrulayıcı Güvenlik Denetimleri

Sürücü Doğrulayıcı'nın Güvenlik Denetimleri seçeneği, güvenlik açıklarına neden olabilecek yaygın hatalar için sürücüyü izler. Bu seçenek Windows Vista'dan başlayarak kullanılabilir.

Özellikle, Güvenlik Denetimleri seçeneği aşağıdaki hatalı sürücü davranışını arar:

  • Kullanıcı modu adresleriyle çekirdek ZwXxx yordamlarını parametre olarak çağırma. Sürücü herhangi bir ZwXxx yordamını çağırdığında, Sürücü Doğrulayıcı parametrelerin hiçbirinin kullanıcı modu adresleri olmadığını denetler. Herhangi bir ZwXxx yordamı çağrılırken geçerli KPROCESSOR_MODE KernelMode olur ve bu yordama geçirilen tüm parametreler çekirdek modu adresleriymiş gibi değerlendirilir. Bu nedenle, sürücü uygulamalardan alınan kullanıcı modu arabelleklerini yoklamalı ve çekirdek ZwXxx yordamını çağırmadan önce çekirdek modu belleğine (örneğin, çekirdek yığınında ayrılmış bir havuz bloğuna veya veri yapısına) yerleştirmelidir. Sürücü, ZwXxx yordamının parametresi olarak kullanıcı modlu arabellek yerine yakalanan arabelleği kullanmalıdır.

  • Hatalı biçimlendirilmiş UNICODE_STRING'leri parametre olarak kullanarak çekirdek ZwXxx rutinlerini çağırma. Sürücü herhangi bir ZwXxx yordamını çağırdığında, Sürücü Doğrulayıcı UNICODE_STRING değerleri olan parametreleri denetler. Bu tür dizelerde Sürücü Doğrulayıcı tarafından algılanan yaygın hatalar şunlardır:

    • Arabellek alanı kullanıcı modu belleğini gösterir.
    • Length veya MaximumLength parametreleri yanlış. Örneğin, MaximumLength<Length. Ya da bu değerlerden biri veya her ikisi de tek sayıdır. Unicode dizesini temsil etmek için kullanılan bayt sayısını temsil ettiğinden bu değerlerin her ikisi de her zaman eşit olmalıdır.
  • Parametre olarak yanlış OBJECT_ATTRIBUTES yapısına sahip çekirdek ZwXxx yordamlarını çağırma. Sürücü herhangi bir ZwXxx yordamını çağırdığında, Sürücü Doğrulayıcı OBJECT_ATTRIBUTE yapıları olan parametreleri denetler. Her OBJECT_ATTRIBUTE yapısı parametresinin üyeleri, yukarıda açıklanan kullanıcı modu adresleri ve UNICODE_STRING değerleri için aynı denetimlere tabidir.

  • Tutarsız Irp-RequestorMode> ve G/Ç İsteği parametreleri. Irp-> RequestorModeKernelMode olarak ayarlandığında, Sürücü Doğrulayıcı, hiçbir G/Ç İsteği parametresinin, Irp->AssociatedIrp.SystemBuffer veya Irp->UserBuffer'ın kullanıcı modu adresleri olmadığını denetler.

Windows 7'de, herhangi bir Sürücü Doğrulayıcı seçeneğini etkinleştirdiğinizde, Sürücü Doğrulayıcı aşağıdaki sürücü davranışını denetler:

Nesne başvuru sayacı 0'dan 1'e değişir. Windows çekirdek nesne yöneticisi Dosya nesnesi veya İş Parçacığı nesnesi gibi bir nesne oluşturduğunda, yeni nesnenin başvuru sayacı 1 olarak ayarlanır. ObReferenceObjectByPointer veya ObReferenceObjectByHandle gibi sistem işlevlerine yapılan çağrılar başvuru sayacını artırır. Aynı nesne için ObDereferenceObject her çağrısı başvuru sayacını azaltır.

Başvuru sayacı 0 değerine ulaştıktan sonra nesne serbest edilmeye uygun hale gelir. Nesne yöneticisi onu hemen serbest bırakabilir veya daha sonra serbest bırakabilir. Sürücü Doğrulayıcı, aynı nesne için ObReferenceObjectByPointer ve ObReferenceObject'e sonraki çağrıları denetler. Bu çağrılar başvuru sayacını 0'dan 1'e değiştirir; bu da sürücünün zaten serbest olan bir nesnenin başvuru sayacını artırdığı anlamına gelir. Diğer bellek ayırmalarını bozabileceğinden bu her zaman yanlıştır.

Bu Seçeneği Etkinleştir

Sürücü Doğrulayıcı Yöneticisi'ni veya Verifier.exe komut satırını kullanarak bir veya daha fazla sürücü için Güvenlik Denetimleri seçeneğini etkinleştirebilirsiniz. Ayrıntılar için bkz. Sürücü Doğrulayıcı Seçeneklerini Seçme.

  • Komut satırını kullanma

    Komut satırında, Güvenlik Denetimleri seçeneği Bit 8 (0x100) ile temsil edilir. Güvenlik Denetimlerini etkinleştirmek için 0x100 bayrak değerini kullanın veya bayrak değerine 0x100 ekleyin. Örneğin:

    verifier /flags 0x100 /driver MyDriver.sys
    

    Seçenek, bilgisayarı yeniden başlattıktan sonra etkin olur.

    Windows Vista'dan başlayarak, komutuna /volatile parametresini ekleyerek bilgisayarı yeniden başlatmadan Güvenlik Denetimlerini etkinleştirebilir ve devre dışı bırakabilirsiniz. Örneğin:

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

    Bu ayar hemen etkindir, ancak bilgisayarı kapattığınızda veya yeniden başlattığınızda kaybolur. Ayrıntılar için bkz. Geçici Ayarları Kullanma.

    Güvenlik Denetimleri seçeneği standart ayarlara da dahildir. Örneğin:

    verifier /standard /driver MyDriver.sys
    
  • Sürücü Doğrulayıcı Yöneticisini Kullanarak

    1. Sürücü Doğrulayıcı Yöneticisi'ni başlatın. Komut İstemi penceresine Doğrulayıcı yazın.
    2. Özel ayarlar oluştur (kod geliştiricileri için)seçin ve ardından İleritıklayın.
    3. Tam liste'den tek tek ayarları seçin.
    4. Güvenlik Denetimleri'ne tıklayın.

    Güvenlik Denetimleri özelliği standart ayarlara da dahildir. Bu özelliği Sürücü Doğrulayıcı Yöneticisi'nde kullanmak için Standart Ayarlar Oluştur'a tıklayın.