Opciones del comprobador de controladores y clases de reglas
En este tema se describen las características opcionales y las clases de regla dentro del Comprobador de controladores. Consulte Configuración estándar para obtener la lista de opciones incluidas al usar la configuración estándar.
Nota:
Algunas comprobaciones automáticas siempre se realizan en un controlador que se está comprobando, independientemente de las opciones seleccionadas. Si el controlador usa memoria en un IRQL incorrecto, llama incorrectamente o libera bloqueos por subproceso y asignaciones de memoria, cambia las pilas de conmutadores incorrectamente o libera el grupo de memoria sin quitar primero los temporizadores, el Comprobador de controladores detectará este comportamiento. Cuando se descarga el controlador, el Comprobador de controladores comprobará que ha liberado correctamente sus recursos.
Habilitación de clases de reglas con /ruleclasses
A partir de Windows 10, versión 17627 y posteriores, puede habilitar clases de reglas con la sintaxis siguiente:
/ruleclasses or /rc [<ruleclass_1> <ruleclass_2> ... <ruleclass_k>]
Tenga en cuenta que al habilitar varias clases (representadas por el entero decimal positivo siguiente), debe separar cada entero con un carácter de espacio.
A continuación se pueden encontrar descripciones de estas clases de regla.
Clases de reglas estándar
Clase de regla | ID decimal |
---|---|
Grupo especial | 1 |
Forzar comprobación de IRQL | 2 |
Seguimiento de grupo | 4 |
Verificación de E/S | 5 |
Detección de interbloqueos | 6 |
Comprobación de DMA | 8 |
Comprobaciones de seguridad | 9 |
Otras comprobaciones | 12 |
Comprobación de cumplimiento de DDI | 18 |
Verificación de WDF | 34 |
Clases de reglas adicionales
Estas clases de reglas están pensadas para pruebas de escenario específicas. Las clases de regla marcadas con (*) requieren verificación de E/S (5) que se habilitará automáticamente. Las marcadas con (**) admiten la deshabilitación de reglas individuales.
Clase de regla | ID decimal |
---|---|
Simulación aleatoria de recursos bajos | 3 |
Forzar solicitudes de E/S pendientes (*) | 10 |
Registro del IRP | 11 |
Comprobación de MDL invariable para pila (*) | 14 |
Comprobación de MDL invariable para controlador (*) | 15 |
Pruebas de exploración de vulnerabilidades mediante datos aleatorios de retraso de marco de energía | 16 |
Comprobación de la interfaz de puerto o minipuerto | 17 |
Simulación sistemática de recursos bajos | 19 |
Comprobación de cumplimiento de DDI (adicional) | 20 |
Pruebas de exploración de vulnerabilidades mediante datos aleatorios de retraso de sincronización de kernel | 24 |
Verificación de conmutador de VM | 25 |
Comprobaciones de integridad de código | 26 |
Comprobaciones de aislamiento de controladores (requiere 36) | 33 |
Comprobación de IRQL adicional | 35 |
Habilitación de DIF | 36 |
Descripciones de características y clases de reglas opcionales
Cuando esta opción está habilitada, el Comprobador de controladores asigna la mayoría de las solicitudes de memoria del controlador desde un grupo especial. Este grupo especial se supervisa en busca de saturaciones de memoria, infrautilizaciones de memoria y memoria a la que se accede después de liberarla.
Cuando esta opción está habilitada, el Comprobador de controladores coloca una presión extrema de memoria en el controlador mediante la invalidación del código paginable. Si el controlador intenta acceder a la memoria paginada en el IRQL incorrecto o mientras mantiene pulsado un bloqueo por subproceso, el Comprobador de controladores detecta este comportamiento.
Simulación de recursos bajos (denominada Simulación aleatoria de recursos bajos en Windows 8.1)
Cuando esta opción está habilitada, el Comprobador de controladores produce un error aleatorio en las solicitudes de asignación del grupo y otras solicitudes de recursos. Al insertar estos errores de asignación en el sistema, el Comprobador de controladores prueba la capacidad del controlador para hacer frente a una situación de bajos recursos.
Cuando esta opción está habilitada, el Comprobador de controladores comprueba si el controlador ha liberado todas sus asignaciones de memoria cuando se descarga. Esto revela fugas de memoria.
Cuando esta opción está activa, el Comprobador de controladores asigna los IRP del controlador desde un grupo especial y supervisa el control de E/S del controlador. Esto detecta el uso no válido o incoherente de rutinas de E/S.
Cuando esta opción está activa, el Comprobador de controladores supervisa el uso de bloqueos por subproceso del controlador, las exclusiones mutuas y las exclusiones mutuas rápidas. Esto detecta si el código del controlador tiene la posibilidad de provocar un interbloqueo en algún momento.
Cuando esta opción está activa, el Comprobador de controladores supervisa las llamadas de varias rutinas del Administrador de E/S y realiza pruebas de estrés de los IRP de PnP, los IRP de energía y los IRP de WMI. En Windows 7 y versiones posteriores del sistema operativo Windows, todas las características de comprobación mejorada de E/S se incluyen como parte de la verificación de E/S y ya no está disponible ni es necesario seleccionar esta opción en el Administrador del comprobador de controladores o desde la línea de comandos.
Cuando esta opción está activa, el Comprobador de controladores supervisa el uso del controlador de rutinas DMA. Esto detecta un uso incorrecto de búferes de DMA, adaptadores y registros de mapa.
(Windows Vista y versiones posteriores) Cuando esta opción está activa, el Comprobador de controladores busca errores comunes que pueden dar lugar a vulnerabilidades de seguridad, como una referencia a direcciones en modo de usuario por rutinas en modo kernel.
(Windows Vista y versiones posteriores) Cuando esta opción está activa, el Comprobador de controladores busca causas comunes de bloqueos de controladores, como el mal control de la memoria liberada.
Forzar solicitudes de E/S pendientes
(Windows Vista y versiones posteriores) Cuando esta opción está activa, El comprobador de controladores prueba la respuesta del controlador a los valores de devolución de STATUS_PENDING devolviendo STATUS_PENDING para las llamadas aleatorias a IoCallDriver.
(Windows Server 2003 y versiones posteriores) Cuando esta opción está activa, el Comprobador de controladores supervisa el uso de IRP de un controlador y crea un registro de uso de IRP.
(Windows Vista y versiones posteriores) Cuando esta opción está activa, El comprobador de controladores supervisa un controlador de minipuerto Storport para ver si hay un uso incorrecto de las rutinas de Storport exportadas, retrasos excesivos y un control incorrecto de las solicitudes de Storport.
Pruebas de exploración de vulnerabilidades mediante datos aleatorios de retraso de marco de energía
(A partir de Windows 8) Cuando esta opción está activa, el Comprobador de controladores aleatoriza las programaciones de subprocesos para ayudar a vaciar los errores de simultaneidad en los controladores que usan el marco de administración de energía (PoFx). Esta opción no se recomienda para los controladores que no utilicen directamente el marco de administración de energía (PoFx).
Comprobación de cumplimiento de DDI
(A partir de Windows 8) Cuando esta opción está activa, el Comprobador de controladores aplica un conjunto de reglas de interfaz de controlador de dispositivo (DDI) que comprueban la interacción adecuada entre un controlador y la interfaz de kernel del sistema operativo.
Comprobación de MDL invariable para pila
(A partir de Windows 8) La opción Comprobación de MDL invariable para pila supervisa cómo el controlador controla los búferes de MDL invariables en toda la pila de controladores. El Comprobador de controladores puede detectar modificaciones incorrectas de búferes de MDL invariables. Para usar esta opción, la comprobación de E/S debe estar habilitada en al menos un controlador.
Comprobación de MDL invariable para controlador
(A partir de Windows 8) La opción Comprobación de MDL invariable para controlador supervisa cómo el controlador controla los búferes de MDL invariables por controlador. Esta opción detecta la modificación no válida de los búferes de MDL invariables. Para usar esta opción, debe habilitar la comprobación de E/S en al menos un controlador.
Inyección de errores basada en pila
(Solo disponible con Windows 8 y WDK 8) La opción Inserción de errores basada en pila inserta errores de recursos en controladores en modo kernel. Esta opción usa un controlador especial, KmAutoFail.sys, junto con el Comprobador de controladores para penetrar las rutas de acceso de control de errores del controlador.
Simulación sistemática de recursos bajos
(A partir de Windows 8.1) La opción Simulación sistemática de recursos bajos inserta errores de recursos en los controladores en modo kernel.
(A partir de Windows 8.1) Cuando esta opción está activa, el Comprobador de controladores aplica un conjunto de reglas NDIS e inalámbricas LAN (WIFI) que comprueban la interacción adecuada entre un controlador de minipuerto NDIS y el kernel del sistema operativo.
(A partir de Windows 8.1) Esta opción aleatoriza las programaciones de subprocesos para ayudar a detectar errores de simultaneidad en los controladores.
Verificación de conmutador de VM
(A partir de Windows 8.1) Esta opción supervisa los controladores de filtro (extensiones de conmutador extensible) que se ejecutan dentro del conmutador extensible de Hyper-V.
Comprobación de la interfaz de puerto/minipuerto
La comprobación de la interfaz de puerto/minipuerto permite al Comprobador de controladores inspeccionar la interfaz DDI entre PortCls.sys y sus controladores de minipuerto de audio, junto con ks.sys y sus controladores de minipuerto AVStream. Consulte Reglas para controladores AVStream y reglas para controladores de audio.
Comprobación de integridad de código
Al utilizar la seguridad basada en virtualización para aislar la integridad de código, la única forma en que la memoria del kernel puede convertirse en ejecutable es a través de una comprobación de la integridad de código. Esto significa que las páginas de memoria del kernel nunca pueden ser regrabables y ejecutables (W+X) y el código ejecutable no se puede modificar directamente. La integridad del código comprueba la compatibilidad de estas reglas de integridad de código y detecta infracciones.
La comprobación de WDF comprueba si un controlador en modo kernel sigue correctamente los requisitos del marco de controladores en modo kernel (KMDF).
Comprobación de IRQL adicional
La comprobación de IRQL adicional aumenta las reglas IRQL de comprobación de cumplimiento de DDI para PASSIVE_LEVEL. Consta de dos reglas:
- La regla IrqlIoRtlZwPassive especifica que el controlador llama a las DDI enumeradas en la regla solo cuando se ejecuta en IRQL = PASSIVE_LEVEL.
- La regla IrqlNtifsApcPassive especifica que el controlador llama a las DDI enumeradas en la regla solo cuando se ejecuta en IRQL = PASSIVE_LEVEL o en IRQL <= APC_LEVEL.
Comprobaciones de aislamiento de controladores
Las comprobaciones de aislamiento de controladores son fundamentales para validar los requisitos de aislamiento del paquete de controladores en tiempo de ejecución de controladores de Windows. Para obtener más información, consulte Introducción al desarrollo de controladores de Windows. Las comprobaciones supervisan las lecturas y escrituras del registro que no están permitidas para los paquetes de controladores aislados.
Configuración estándar
Opciones incluidas en la configuración estándar |
---|
Comprobación mejorada de E/S (en Windows 7 y versiones posteriores, esta opción se activa automáticamente al seleccionar Verificación de E/S). |
Comprobaciones varias (Windows Vista y versiones posteriores) |
Comprobación de cumplimiento de DDI (a partir de Windows 8) |
Opciones del Comprobador de controladores que requieren verificación de E/S
Hay cuatro opciones que requieren que primero habilite la comprobación de E/S. Si la comprobación de E/S no está habilitada, estas opciones no están habilitadas.