Creación de instalaciones de dispositivos seguros

Al crear un paquete de controladores, debe asegurarse de que la instalación del dispositivo siempre se realizará de forma segura. Una instalación segura de dispositivos es una que hace lo siguiente:

  • limita el acceso al dispositivo y a sus clases de interfaz de dispositivo.

  • limita el acceso a los servicios de controlador que se crearon para el dispositivo.

  • protege los archivos del controlador de la modificación o eliminación

  • limita el acceso a las entradas del Registro del dispositivo.

  • limita el acceso a las clases WMI del dispositivo.

  • usa las funciones setupAPI correctamente

La seguridad de la instalación de dispositivos se controla mediante descriptores de seguridad. El medio principal para especificar descriptores de seguridad es el archivo INF. El sistema proporciona descriptores de seguridad predeterminados y, en la mayoría de las circunstancias, no es necesario anular estos descriptores.

Configuración de seguridad para dispositivos e interfaces

El sistema proporciona descriptores de seguridad predeterminados para todas las clases de configuración de dispositivos proporcionadas por el sistema. Por lo general, estos descriptores permiten acceso completo a los administradores del sistema y acceso de lectura, escritura y ejecución para los usuarios. (Los descriptores de seguridad que controlan el acceso a un dispositivo también controlan el acceso a las clases de interfaz de dispositivo del dispositivo, si los hay).

Los archivos INF para los controladores WDM pueden especificar la configuración de seguridad, ya sea por clase o por dispositivo, la cual invalida la configuración predeterminada del sistema. Los proveedores que crean una nueva clase de configuración de dispositivos deben especificar un descriptor de seguridad para la clase . Por lo general, no es necesario especificar un descriptor de seguridad específico del dispositivo. Puede ser útil proporcionar un descriptor de seguridad específico del dispositivo si diferentes tipos de dispositivos que pertenecen a la misma clase tienen tipos de usuarios significativamente diferentes.

Para especificar un descriptor de seguridad para todos los dispositivos que pertenecen a una clase de instalación de dispositivos WDM, use una directiva INF AddReg dentro de una sección INF ClassInstall32 del archivo INF del instalador de clase. La directiva AddReg debe apuntar a un add-registry-section que establece valores para las entradas de registroDeviceType y Security. Estos valores del Registro especifican un descriptor de seguridad para todos los dispositivos del tipo de dispositivo especificado.

Para especificar un descriptor de seguridad para un único dispositivo que pertenece a una clase de configuración de dispositivo WDM, use una directiva AddReg inf dentro de una sección INF DDInstall.HW del archivo INF del dispositivo. La directiva AddReg debe apuntar a un add-registry-section que establece valores para las entradas de registroDeviceType y Security. Estos valores del Registro especifican un descriptor de seguridad para todos los dispositivos que coinciden con el identificador de hardware o los identificadores compatibles especificados por una sección de modelos INF asociada.

De forma predeterminada, el sistema aplica el descriptor de seguridad establecido para un dispositivo a una solicitud para abrir el objeto de dispositivo que representa el dispositivo (por ejemplo, una solicitud para abrir el dispositivo cuyo nombre de dispositivo NT es \Device\DeviceName).

Sin embargo, el sistema no aplica de forma predeterminada el descriptor de seguridad configurado para un dispositivo a una solicitud para abrir un objeto en el espacio de nombres del dispositivo, donde el espacio de nombres del dispositivo incluye todos los objetos cuyos nombres tienen el formato \Device\DeviceName\ObjectName. Para asegurarse de que la misma configuración de seguridad se aplica a las solicitudes de apertura de objetos en el espacio de nombres de un dispositivo, establezca la marca de características de dispositivo FILE_DEVICE_SECURE_OPEN para un dispositivo. Para obtener más información sobre el acceso seguro al dispositivo, consulte Control del acceso al espacio de nombres del dispositivo (controladores de Windows). Para obtener información sobre cómo establecer la marca de características del dispositivo FILE_DEVICE_SECURE_OPEN, consulte Especificar las características del dispositivo (controladores de Windows).

El administrador de PnP establece valores de seguridad en objetos de dispositivo después de llamar a la rutina AddDevice de un controlador. Algunos controladores WDM pueden especificar un descriptor de seguridad específico del dispositivo al crear un objeto de dispositivo físico (PDO) mediante una llamada a IoCreateDeviceSecure. Para obtener más información, consulte Protección de objetos de dispositivo.

Configuración de seguridad para archivos de driver

Al copiar archivos mediante la directiva INF CopyFiles, es posible especificar una sección file-list-section.security. En esta sección se especifica un descriptor de seguridad para todos los archivos copiados por la directiva CopyFiles . Sin embargo, los proveedores nunca tienen que especificar un descriptor de seguridad para los archivos de controlador, si el destino de la instalación es uno de los subdirectorios del sistema de %SystemRoot%. (Para obtener más información sobre estos subdirectorios, vea Uso de Dirids). El sistema proporciona descriptores de seguridad predeterminados para estos subdirectorios y no se deben invalidar los descriptores predeterminados.

Configuración de seguridad para servicios de controladores

Dentro de service-install-section del archivo INF del controlador (consulte Directiva AddService de INF), puede incluir una entrada Security. Esta entrada especifica los permisos necesarios para realizar operaciones como iniciar, detener y configurar los servicios de controlador asociados al dispositivo. Sin embargo, el sistema proporciona un descriptor de seguridad predeterminado para los servicios de controlador, y este descriptor predeterminado generalmente no tiene que redefinirse.

Configuración de seguridad para entradas del Registro de dispositivos y controladores

Al especificar entradas de registro en archivos INF utilizando Directivas AddRegINF, puede incluir una sección add-registry-section.Security para cada sección add-registry-section. La sección add-registry-section.Seguridad especifica los permisos de acceso a las entradas del Registro creadas por la sección add-registry-section asociada. El sistema proporciona un descriptor de seguridad predeterminado para todas las entradas del Registro creadas bajo la raíz relativa HKR. Por lo tanto, no es necesario especificar un descriptor de seguridad al crear entradas del Registro en la raíz relativa.

Configuración de seguridad para clases WMI

El sistema asigna descriptores de seguridad predeterminados a los GUID que identifican las clases WMI. Para Windows XP y versiones anteriores del sistema operativo, el descriptor de seguridad predeterminado para GUID de WMI permite el acceso total a todos los usuarios. A partir de Windows Server 2003, el descriptor de seguridad predeterminado solo permite el acceso a los administradores.

Si el controlador define las clases WMI y no desea usar los descriptores de seguridad predeterminados del sistema para estas clases, puede proporcionar descriptores de seguridad mediante una sección INF DDInstall.WMI dentro del archivo INF del dispositivo.

Uso correcto de las funciones SetupAPI

Si el paquete de controladores incluye instaladores, coinstaladores u otras aplicaciones de instalación que llaman a funciones SetupAPI, debe seguir las directrices para usar SetupAPI.

Probar la configuración de seguridad de la instalación

Utilice el registro SetupAPI para comprobar que la configuración de seguridad asociada a la instalación del dispositivo se ha especificado correctamente. Establezca el nivel de registro en detallado (0x0000FFFF) y, a continuación, intente varios escenarios de instalación.

Estos escenarios deben incluir tanto las instalaciones iniciales como las reinstalaciones, tanto de cuentas de usuario como de cuentas de administrador del sistema. Pruebe a conectar el dispositivo antes de instalar software y viceversa.

Si una instalación se realiza correctamente, vea el registro para confirmar que no se produjo ningún error. Si falla una instalación, vea el registro para determinar la causa del error.

Además, una vez completada una instalación, puede hacer lo siguiente:

  • Utilice el Editor del Registro para ver la configuración de seguridad asignada a una entrada del Registro.

  • Utilice Mi PC para ver la configuración de seguridad asignada a un archivo.