Criando instalações de dispositivo seguro

Ao criar um pacote de driver, você deve garantir que a instalação do dispositivo sempre será executada de maneira segura. Uma instalação segura do dispositivo é aquela que faz o seguinte:

  • limita o acesso ao dispositivo e suas classes de interface do dispositivo

  • limita o acesso aos serviços de driver que foram criados para o dispositivo

  • protege arquivos de driver contra modificação ou exclusão

  • limita o acesso às entradas do registro do dispositivo

  • limita o acesso às classes WMI do dispositivo

  • usa funções SetupAPI corretamente

A segurança de instalação do dispositivo é controlada por descritores de segurança. O meio primário para especificar descritores de segurança é o arquivo INF. O sistema fornece descritores de segurança padrão e, na maioria das circunstâncias, você não precisa substituir esses descritores.

Configurações de segurança para dispositivos e interfaces

O sistema fornece descritores de segurança padrão para todas as classes de configuração de dispositivo fornecidas pelo sistema. Geralmente, esses descritores permitem acesso completo para administradores do sistema e acesso de leitura/gravação/execução para usuários. (Os descritores de segurança que controlam o acesso a um dispositivo também controlam o acesso às classes de interface do dispositivo do dispositivo, se houver.)

Os arquivos INF para drivers WDM podem especificar configurações de segurança, por classe ou por dispositivo, que substituem as configurações padrão do sistema. Os fornecedores que criam uma nova classe de configuração de dispositivo devem especificar um descritor de segurança para a classe . Em geral, não é necessário especificar um descritor de segurança específico do dispositivo. Pode ser útil fornecer um descritor de segurança específico do dispositivo se diferentes tipos de dispositivos que pertencem à mesma classe tiverem tipos de usuários significativamente diferentes.

Para especificar um descritor de segurança para todos os dispositivos que pertencem a uma classe de configuração de dispositivo WDM, use uma diretiva AddReg INF em uma seção INF ClassInstall32 do arquivo INF do instalador de classe. A diretiva AddReg deve apontar para uma seção add-registry que define valores para entradas do Registro devicetype e de segurança . Esses valores de registro especificam um descritor de segurança para todos os dispositivos do tipo de dispositivo especificado.

Para especificar um descritor de segurança para um único dispositivo que pertença a uma classe de configuração de dispositivo WDM, use uma diretiva AddReg INF em uma seção INF DDInstall.HW do arquivo INF do dispositivo. A diretiva AddReg deve apontar para uma seção add-registry que define valores para entradas do Registro devicetype e de segurança . Esses valores de registro especificam um descritor de segurança para todos os dispositivos que correspondem à ID de hardware ou às IDs compatíveis especificadas por uma seção de Modelos INF associados.

Por padrão, o sistema aplica o descritor de segurança definido para um dispositivo a uma solicitação para abrir o objeto de dispositivo que representa o dispositivo (por exemplo, uma solicitação para abrir o dispositivo cujo nome de dispositivo NT é \Device\DeviceName).

No entanto, o sistema não aplica por padrão o descritor de segurança definido para um dispositivo a uma solicitação para abrir um objeto no namespace do dispositivo, em que o namespace do dispositivo inclui todos os objetos cujos nomes têm o formulário \Device\DeviceName\ObjectName. Para garantir que as mesmas configurações de segurança sejam aplicadas a solicitações abertas para objetos no namespace de um dispositivo, defina o sinalizador FILE_DEVICE_SECURE_OPEN características do dispositivo para um dispositivo. Para obter mais informações sobre o acesso seguro ao dispositivo, consulte Controling Device Namespace Access (Drivers do Windows). Para obter informações sobre como definir o sinalizador FILE_DEVICE_SECURE_OPEN características do dispositivo, consulte Especificando características do dispositivo (Drivers do Windows).

O gerenciador PnP define valores de segurança em objetos de dispositivo depois de chamar a rotina AddDevice de um driver. Alguns drivers WDM podem especificar um descritor de segurança específico do dispositivo ao criar um PDO (objeto de dispositivo físico) chamando IoCreateDeviceSecure. Para obter mais informações, consulte Protegendo objetos de dispositivo.

Configurações de segurança para arquivos de driver

Ao copiar arquivos usando a diretiva CopyFiles do INF, é possível especificar uma seção de lista de arquivos. seção de segurança . Esta seção especifica um descritor de segurança para todos os arquivos copiados pela diretiva CopyFiles . No entanto, os fornecedores nunca precisarão especificar um descritor de segurança para arquivos de driver, se o destino da instalação for um dos subdiretórios do sistema de %SystemRoot%. (Para obter mais informações sobre esses subdiretórios, consulte Using Dirids.) O sistema fornece descritores de segurança padrão para esses subdiretórios e os descritores padrão não devem ser substituídos.

Configurações de segurança para serviços de driver

Na seção service-install-section de um arquivo INF de driver (consulte Diretiva AddService inf), você pode incluir uma entrada de segurança . Essa entrada especifica as permissões necessárias para executar operações como iniciar, parar e configurar os serviços de driver associados ao seu dispositivo. No entanto, o sistema fornece um descritor de segurança padrão para serviços de driver e esse descritor padrão geralmente não precisa ser substituído.

Configurações de segurança para entradas de registro de dispositivo e driver

Ao especificar entradas do Registro em arquivos INF usando diretivas AddReg INF, você pode incluir uma seção add-registry. Seção de segurança para cada add-registry-section. A seção add-registry-section. A seção de segurança especifica permissões de acesso para as entradas do Registro criadas que são criadas pela seção add-registry-section associada. O sistema fornece um descritor de segurança padrão para todas as entradas do Registro criadas na raiz relativa do HKR . Portanto, você não precisa especificar um descritor de segurança ao criar entradas do Registro na raiz relativa.

Configurações de segurança para classes WMI

O sistema atribui descritores de segurança padrão aos GUIDs que identificam classes WMI. Para o Windows XP e versões anteriores do sistema operacional, o descritor de segurança padrão para GUIDs WMI permite acesso total a todos os usuários. A partir do Windows Server 2003, o descritor de segurança padrão permite acesso somente aos administradores.

Se o driver definir classes WMI e você não quiser usar os descritores de segurança padrão do sistema para essas classes, você poderá fornecer descritores de segurança usando uma seção INF DDInstall.WMI dentro do arquivo INF do dispositivo.

Usando funções SetupAPI corretamente

Se o pacote de driver incluir instaladores, co-instaladores ou outros aplicativos de instalação que chamam as funções SetupAPI, você deverá seguir as diretrizes para usar SetupAPI.

Testando configurações de segurança de instalação

Use o log de SetupAPI para verificar se as configurações de segurança associadas à instalação do dispositivo foram especificadas corretamente. Defina o nível de log como detalhado (0x0000FFFF) e tente vários cenários de instalação.

Esses cenários devem incluir instalações iniciais e reinstalações, tanto de contas de usuário quanto de contas de administrador do sistema. Tente conectar seu dispositivo antes de instalar o software e vice-versa.

Se uma instalação for bem-sucedida, exiba o log para confirmar que nenhum erro ocorreu. Se uma instalação falhar, exiba o log para determinar a causa da falha.

Além disso, depois que uma instalação for concluída, você poderá fazer o seguinte:

  • Use o Editor do Registro para exibir as configurações de segurança atribuídas a uma entrada do Registro.

  • Use Meu Computador para exibir as configurações de segurança atribuídas a um arquivo.