Personalizar la protección contra vulnerabilidades

La protección contra vulnerabilidades aplica automáticamente muchas técnicas de mitigación de exploits tanto a los procesos del sistema operativo como a las aplicaciones individuales.

Configure estas opciones con la aplicación Seguridad de Windows en un dispositivo individual. Luego, exporte la configuración como archivo XML para implementarla en otros dispositivos. Use la directiva de grupo para distribuir el archivo XML a varios dispositivos a la vez. También puede configurar las mitigaciones con PowerShell.

En este artículo se enumeran todas las mitigaciones disponibles en la protección contra vulnerabilidades de seguridad. Indica si la mitigación se puede aplicar en todo el sistema o a aplicaciones individuales, y proporciona una breve descripción de cómo funciona la mitigación.

En este artículo también se describe cómo habilitar o configurar las mitigaciones mediante proveedores de servicios de configuración (CSP) de Seguridad de Windows, PowerShell y administración de dispositivos móviles (MDM). La configuración de la protección contra vulnerabilidades de seguridad en un único dispositivo es el primer paso para crear una configuración que se pueda implementar en la red. Para implementar esta configuración en varios dispositivos, consulte Importación, exportación e implementación de configuraciones de protección contra vulnerabilidades de seguridad.

Advertencia

Algunas tecnologías de mitigación de seguridad pueden tener problemas de compatibilidad con algunas aplicaciones. Debe probar la protección contra vulnerabilidades de seguridad en todos los escenarios de uso de destino mediante el modo de auditoría de protección contra vulnerabilidades antes de implementar la configuración en un entorno de producción o en el resto de la red.

Mitigaciones de protección contra vulnerabilidades de seguridad

Todas las mitigaciones se pueden configurar para aplicaciones individuales. Algunas mitigaciones también se pueden aplicar en el nivel de sistema operativo.

Puede configurar cada mitigación como activada, desactivada o con su valor predeterminado. Algunas mitigaciones tienen más opciones que se indican en la descripción de la tabla.

Los valores predeterminados siempre se especifican entre corchetes en la opción Usar valor predeterminado para cada mitigación. En el ejemplo siguiente, el valor predeterminado de Prevención de ejecución de datos es "Activado".

La configuración Usar valor predeterminado para cada una de las opciones de mitigación indica nuestra recomendación para un nivel básico de protección para el uso diario de los usuarios domésticos. Las implementaciones empresariales deben tener en cuenta la protección necesaria para sus necesidades individuales y, por tanto, deben modificar la configuración lejos de los valores predeterminados.

Para ver los cmdlets de PowerShell asociados para cada mitigación, consulte los cmdlets de PowerShell para las mitigaciones de protección contra vulnerabilidades en la parte inferior de este artículo.

Mitigación Descripción Se puede aplicar a Modo de Auditoría disponible
Protección del flujo de control (CFG) Garantiza la integridad del flujo de control en las llamadas indirectas. Puede, opcionalmente, suprimir exportaciones y usar CFG estricto. Nivel de sistema y aplicación No
Prevención de ejecución de datos (DEP) Impide que se ejecute código desde páginas de memoria que solo contienen datos, como el heap y la pila. Solo se puede configurar para aplicaciones de 32 bits (x86) habilitadas permanentemente para todas las demás arquitecturas. Puede habilitarse opcionalmente la emulación de thunk de ATL. Nivel de sistema y aplicación No
Forzar la selección aleatoria de imágenes (ASLR es obligatorio) Reubica por la fuerza las imágenes no compiladas con /DYNAMICBASE. Opcionalmente, se puede producir un error al cargar imágenes que no tienen información de reubicación. Nivel de sistema y aplicación No
Aleatorizar la asignación de memoria (ASLR de abajo arriba) Aleatoriza las ubicaciones de las asignaciones de memoria virtual. Incluye montículos de estructuras del sistema, pilas, TEBs y PEBs. Opcionalmente, se puede usar una varianza de selección aleatoria más amplia para los procesos de 64 bits. Nivel de sistema y aplicación No
Validar cadenas de excepción (SEHOP) Garantiza la integridad de una cadena de excepciones durante los envíos de excepciones. Solo se puede configurar para aplicaciones de 32 bits (x86). Nivel de sistema y aplicación No
Validar la integridad del heap Finaliza un proceso cuando se detectan daños en el montón. Nivel de sistema y aplicación No
Protección de código arbitrario (ACG) Impide la introducción de código ejecutable no respaldado por imágenes e impide que se modifiquen las páginas de códigos. Opcionalmente, puede permitir la desactivación del subproceso y permitir la degradación remota (configurable solo con PowerShell). Solo nivel de aplicación
Bloquear imágenes de integridad baja Impide la carga de imágenes marcadas como de baja integridad. Solo nivel de aplicación
Bloquear imágenes remotas Impide la carga de imágenes de dispositivos remotos. Solo nivel de aplicación No
Bloquear fuentes que no son de confianza Impide cargar las fuentes basadas en GDI que no están instaladas en el directorio de fuentes del sistema, especialmente las fuentes de la web. Solo nivel de aplicación
Protección de integridad de código Restringe la carga de imágenes firmadas por Microsoft, WHQL o superior. Opcionalmente, puede permitir imágenes firmadas de Microsoft Store. Solo nivel de aplicación
Deshabilitar los puntos de extensión Deshabilita varios mecanismos de extensibilidad que permiten la inserción de DLL en todos los procesos, como archivos DLL de AppInit, enlaces de ventana y proveedores de servicios Winsock. Solo nivel de aplicación No
Deshabilitar llamadas del sistema de Win32k Impide que una aplicación use la tabla de llamadas del sistema Win32k. Solo nivel de aplicación
No permitir procesos secundarios Impide que las aplicaciones creen procesos secundarios. Solo nivel de aplicación
Filtrado de direcciones de exportación (EAF) Detecta operaciones peligrosas que se resuelven mediante código malintencionado. Puede validar opcionalmente el acceso mediante módulos utilizados habitualmente por exploits. Solo nivel de aplicación
Filtrado de direcciones de importación (IAF) Detecta operaciones peligrosas que se resuelven mediante un código malintencionado. Solo nivel de aplicación
Simular la ejecución (SimExec) Garantiza que las llamadas a las API confidenciales se devuelvan a los autores de llamadas legítimos. Solo se puede configurar para aplicaciones de 32 bits (x86). No es compatible con ACG. Solo nivel de aplicación
Validar la invocación de la API (CallerCheck) Garantiza que los autores de llamada legítimos invocan API confidenciales. Solo se puede configurar para aplicaciones de 32 bits (x86). No es compatible con ACG Solo nivel de aplicación
Validar el uso del identificador Hace que se produzca una excepción en las referencias de identificador no válidas. Solo nivel de aplicación No
Validar la integridad de la dependencia de imagen Exige la firma de código para cargar dependencias de imágenes de Windows. Solo nivel de aplicación No
Validar la integridad de la pila (StackPivot) Garantiza que la pila no haya sido redirigida para API sensibles. No es compatible con ACG. Solo nivel de aplicación

Importante

Si añade una aplicación a la sección Configuración del programa y configura allí las opciones de mitigación individuales, estas tendrán prioridad sobre la configuración de esas mismas mitigaciones especificada en la sección Configuración del sistema. La matriz y los ejemplos siguientes ayudan a ilustrar cómo funcionan los valores predeterminados:

Habilitado en Configuración del programa Habilitado en Configuración del sistema Comportamiento
No Tal y como se define en Configuración del programa
Tal y como se define en Configuración del programa
No Tal y como se define en Configuración del sistema
No No Valor predeterminado definido en la opción Usar valor predeterminado
  • Ejemplo 1 Alberto configura la Prevención de ejecución de datos (DEP) en la sección de Configuración del sistema para que esté Desactivada de forma predeterminada. Mikael agrega a continuación la aplicación test.exe a la sección Configuración del programa. En las opciones de esa aplicación, en Prevención de ejecución de datos (DEP), activa la opción Invalidar la configuración del sistema y establece el interruptor en Activado. No hay otras aplicaciones enumeradas en la sección Configuración del programa. El resultado será que DEP solo se habilitará para test.exe. Todas las demás aplicaciones no tendrán DEP aplicado.

  • Ejemplo 2 Elvira configura la Prevención de ejecución de datos (DEP) en la sección de Configuración del sistema para que esté Desactivada de forma predeterminada. Elvira agrega la aplicación test.exe a la sección Configuración del programa. En las opciones de esa aplicación, en Prevención de ejecución de datos (DEP), habilita la opción Anular la configuración del sistema y pone el interruptor en Activado. Josie también añade la aplicación miles.exe a la sección Configuración del programa y establece Protección de flujo de control (CFG) en Activado. No habilita la opción Invalidar la configuración del sistema para DEP ni para ninguna otra mitigación de esa aplicación. El resultado será que DEP se habilitará para test.exe. DEP no se habilitará para ninguna otra aplicación, incluida miles.exe. CFG se habilitará para miles.exe.

Nota:

Si ha encontrado algún problema en este artículo, puede notificarlo directamente a un asociado de Windows Server o cliente de Windows o usar los números de soporte técnico de Microsoft para su país o región.

Configuración de mitigaciones de nivel de sistema con la aplicación Seguridad de Windows

Para configurar mitigaciones de protección contra vulnerabilidades de seguridad de nivel de sistema y de nivel de aplicación en un dispositivo individual, use la aplicación Seguridad de Windows:

  1. Abra la aplicación Seguridad de Windows seleccionando el icono de escudo en la barra de tareas o buscando Seguridad de Windows en el menú Inicio.

  2. Seleccione el icono Control de aplicaciones y navegador (o el icono de la aplicación en la barra de menús de la izquierda) y seleccione Protección contra vulnerabilidades.

  3. En la sección Configuración del sistema, busque la mitigación que quiera configurar y especifique una de las siguientes opciones. Las aplicaciones que no se configuran individualmente en la sección Configuración del programa usarán las opciones que se configuren aquí:

    • Activada de forma predeterminada: la mitigación está habilitada para aplicaciones que no tienen esta mitigación establecida en la sección de la aplicación Configuración del programa
    • Desactivada de forma predeterminada: la mitigación está deshabilitada para aplicaciones que no tienen esta mitigación establecida en la sección de la aplicación Configuración del programa
    • Usar valor predeterminado: la mitigación está habilitada o deshabilitada, según la configuración predeterminada configurada por la instalación de Windows 10 o Windows 11; el valor predeterminado (Activado o Desactivado) siempre se especifica junto a la etiqueta Usar valor predeterminado para cada mitigación

    Nota:

    Es posible que vea una ventana de Control de cuenta de usuario al cambiar algunas opciones de configuración. Escriba las credenciales de administrador para aplicar la configuración.

    Cambiar algunas opciones de configuración puede requerir reiniciar el dispositivo.

  4. Repita estos pasos de configuración para todas las mitigaciones de nivel de sistema que desea configurar.

  5. Vaya a la sección Configuración del programa y elija la aplicación a la que quiere aplicar mitigaciones:

    1. Si la aplicación que quiere configurar ya aparece en la lista, selecciónela y seleccione Editar
    2. Si la aplicación no aparece en la lista, en la parte superior de la lista, seleccione Agregar programa para personalizar y elija cómo quiere agregar la aplicación:
      • Use Agregar por nombre de programa para aplicar la mitigación a cualquier proceso en ejecución con ese nombre. Debe especificar un archivo con una extensión. Puede introducir una ruta de acceso completa para limitar la mitigación solo a la aplicación con ese nombre y en esa ubicación.
      • Use Elegir la ruta exacta del archivo para abrir la ventana estándar del Explorador de Windows para seleccionar archivos y buscar y seleccionar el archivo que desee.
  6. Después de seleccionar la aplicación, verá una lista de todas las mitigaciones que se pueden aplicar. Para habilitar la mitigación, active la casilla y, a continuación, cambie el control deslizante a Activado. Seleccione cualquier opción adicional. Al elegir Auditoría solo se aplicará la mitigación en modo auditoría. Se le notificará si necesita reiniciar el proceso o la aplicación, o si necesita reiniciar Windows.

  7. Repita estos pasos para todas las aplicaciones y mitigaciones que quiera configurar. Seleccione Aplicar cuando haya terminado de establecer la configuración.

Ahora puede exportar la configuración de protección contra vulnerabilidades como un archivo XML o seguir configurando mitigaciones específicas de la aplicación.

La exportación de la configuración como un archivo XML permite copiar la configuración de un dispositivo en otros dispositivos.

Referencia de PowerShell

Puede usar la aplicación de Seguridad de Windows para configurar la protección contra vulnerabilidades o puede usar cmdlets de PowerShell.

Siempre se aplicarán las opciones de configuración que se modificaron más recientemente, independientemente de si usa PowerShell o Seguridad de Windows. Dado que la configuración modificada más recientemente siempre se aplica, si usa la aplicación para configurar una mitigación, use PowerShell para configurar la misma mitigación, la aplicación se actualizará para mostrar los cambios realizados con PowerShell. Si fuera a usar la aplicación para volver a cambiar la mitigación, ese cambio se aplicaría.

Importante

Cualquier cambio que se implemente en un dispositivo a través de directiva de grupo invalidará la configuración local. Al configurar una configuración inicial, use un dispositivo que no tenga aplicada una configuración de directiva de grupo para asegurarse de que los cambios no se invalidan.

Puede usar el verbo de PowerShell Get o Set con el cmdlet ProcessMitigation. Al usar Get se mostrará el estado de configuración actual de las mitigaciones habilitadas en el dispositivo. Agregue el cmdlet -Name y el archivo exe de la aplicación para ver las mitigaciones solo para esa aplicación:

Get-ProcessMitigation -Name processName.exe

Importante

Las mitigaciones de nivel de sistema que no se han configurado mostrarán el estado NOTSET.

Para la configuración de nivel del sistema, NOTSET indica que se ha aplicado la configuración predeterminada para esa mitigación.

Para la configuración de nivel de aplicación, NOTSET indica que se aplicará la configuración de nivel de sistema para la mitigación.

La configuración predeterminada para cada mitigación de nivel de sistema se puede ver en Seguridad de Windows.

Use Set para configurar cada mitigación en el formato siguiente:

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

Donde:

  • <Ámbito>:
    • -Name para indicar que las mitigaciones se deben aplicar a una aplicación específica. Especifique el ejecutable de la aplicación después de esta marca.
    • -System para indicar que la mitigación debe aplicarse en el nivel del sistema
  • <Acción>:
    • -Enable para habilitar la mitigación
    • -Disable para deshabilitar la mitigación
  • <Mitigación>:

Por ejemplo, para habilitar la mitigación de Prevención de ejecución de datos (DEP) con emulación de thunk ATL y para un ejecutable llamado testing.exe en la carpeta C:\Apps\LOB\tests, y para evitar que ese ejecutable cree procesos secundarios, usaría el siguiente comando:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

Importante

Separe cada opción de mitigación con comas.

Para aplicar una mitigación a nivel de sistema en lugar de aplicarla a una aplicación específica, use el ámbito -System. Por ejemplo, para habilitar DEP para todos los procesos del dispositivo, usaría el siguiente comando:

Set-Processmitigation -System -Enable DEP

Para deshabilitar las mitigaciones, puede reemplazar -Enable por -Disable. Sin embargo, en el caso de las mitigaciones de nivel de aplicación, esta acción obliga a deshabilitar la mitigación solo para esa aplicación.

Si necesita restaurar una mitigación de nivel de aplicación al valor predeterminado del sistema, también debe incluir el cmdlet -Remove. En el ejemplo siguiente se elimina la anulación de DEP específica de la aplicación para test.exe para que herede la configuración predeterminada del sistema:

Set-Processmitigation -Name test.exe -Remove -Disable DEP

También puede establecer mitigaciones en modo de auditoría. En lugar de usar el cmdlet de PowerShell para la mitigación, use el cmdlet de modo de auditoría tal como se especifica en la siguiente tabla de cmdlets de mitigación de protección contra vulnerabilidades de seguridad.

Por ejemplo, el siguiente comando habilita la supervisión solo de auditoría para la mitigación de Protección de código arbitrario (ACG) en la testing.exe usada anteriormente, que registra las infracciones de la directiva sin bloquear la ejecución:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

Puede deshabilitar el modo de auditoría mediante el mismo comando, pero reemplazando -Enable por -Disable.

Tabla de referencia de PowerShell

En esta tabla se enumeran los cmdlets de PowerShell (y el cmdlet de modo de auditoría asociado) que se pueden usar para configurar cada mitigación.

Mitigación Se aplica a Cmdlets de PowerShell Cmdlet del modo de auditoría
Protección del flujo de control (CFG) Nivel de sistema y aplicación CFG, StrictCFG, SuppressExports Auditoría no disponible
Prevención de ejecución de datos (DEP) Nivel de sistema y aplicación DEP, EmulateAtlThunks Auditoría no disponible
Forzar la selección aleatoria de imágenes (ASLR es obligatorio) Nivel de sistema y aplicación ForceRelocateImages Auditoría no disponible
Aleatorizar la asignación de memoria (ASLR de abajo arriba) Nivel de sistema y aplicación BottomUp, HighEntropy Auditoría no disponible
Validar cadenas de excepción (SEHOP) Nivel de sistema y aplicación SEHOP, SEHOPTelemetry Auditoría no disponible
Validar la integridad del heap Nivel de sistema y aplicación TerminateOnError Auditoría no disponible
Protección de código arbitrario (ACG) Solo nivel de aplicación DynamicCode AuditDynamicCode
Bloquear imágenes de integridad baja Solo nivel de aplicación Etiqueta de bloque bajo AuditImageLoad
Bloquear imágenes remotas Solo nivel de aplicación Bloquear imágenes remotas Auditoría no disponible
Bloquear fuentes que no son de confianza Solo nivel de aplicación DisableNonSystemFonts AuditFont, FontAuditOnly
Protección de integridad de código Solo nivel de aplicación MicrosoftSignedOnly, AllowStoreSignedBinaries AuditMicrosoftSigned, AuditStoreSigned
Deshabilitar los puntos de extensión Solo nivel de aplicación ExtensionPoint Auditoría no disponible
Deshabilitar llamadas del sistema de Win32k Solo nivel de aplicación DisableWin32kSystemCalls AuditSystemCall
No permitir procesos hijo Solo nivel de aplicación No permitir la creación de procesos secundarios AuditChildProcess
Filtrado de direcciones de exportación (EAF) Solo nivel de aplicación EnableExportAddressFilterPlus, EnableExportAddressFilter [1] Auditoría no disponible[2]
Filtrado de direcciones de importación (IAF) Solo nivel de aplicación Habilitar filtro de direcciones de importación Auditoría no disponible[2]
Simular la ejecución (SimExec) Solo nivel de aplicación EnableRopSimExec Auditoría no disponible[2]
Validar la invocación de la API (CallerCheck) Solo nivel de aplicación EnableRopCallerCheck Auditoría no disponible[2]
Validar el uso del identificador Solo nivel de aplicación StrictHandle Auditoría no disponible
Validar la integridad de la dependencia de imagen Solo nivel de aplicación Aplicar la firma de dependencias de módulos Auditoría no disponible
Validar la integridad de la pila (StackPivot) Solo nivel de aplicación EnableRopStackPivot Auditoría no disponible[2]

[1]: Para habilitar Export Address Filtering Plus (EAF+) para un proceso y restringirlo a módulos DLL específicos, use el siguiente formato:

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]: La auditoría de esta mitigación no está disponible a través de cmdlets de PowerShell.

Personalización de las notificaciones de protección contra vulnerabilidades

Para obtener información sobre cómo personalizar la notificación cuando se desencadena una regla y se bloquea una aplicación o un archivo, consulte Seguridad de Windows.