Aplicación de scripts con Windows Defender Application Control (WDAC)

Nota

Algunas funcionalidades de Windows Defender Application Control solo están disponibles en versiones específicas de Windows. Obtenga más información sobre la disponibilidad de características de Application Control.

Importante

Opción 11 Disabled:Script Enforcement no se admite en Windows Server 2016 ni en Windows 10 1607 LTSB y no se debe usar en esas plataformas. Si lo hace, se producirán comportamientos inesperados de cumplimiento de scripts.

Introducción a la aplicación de scripts

De forma predeterminada, la aplicación de scripts está habilitada para todas las directivas WDAC a menos que se establezca la opción 11 Disabled:Script Enforcement en la directiva. La aplicación de scripts WDAC implica un protocolo de enlace entre un host de script iluminado, como PowerShell, y WDAC. Sin embargo, el host de script controla el comportamiento de cumplimiento real. Algunos hosts de script, como el host de aplicación HTML de Microsoft (mshta.exe), bloquean toda la ejecución de código si hay alguna directiva DE UMCI WDAC activa. La mayoría de los hosts de script preguntan primero a WDAC si se debe permitir la ejecución de un script en función de las directivas WDAC actualmente activas. A continuación, el host de script bloquea, permite o cambia la forma en que se ejecuta el script para proteger mejor al usuario y al dispositivo.

La validación de scripts firmados se realiza mediante WinVerifyTrust API. Para pasar la validación, la raíz de firma debe estar presente en el almacén raíz de confianza del dispositivo y la directiva WDAC debe permitirla. Este comportamiento es diferente de la validación WDAC para archivos ejecutables, lo que no requiere la instalación del certificado raíz.

WDAC comparte el registro de eventos de AppLocker: MSI y Script para todos los eventos de cumplimiento de scripts. Cada vez que un host de script pregunta a WDAC si se debe permitir un script, se registra un evento con la respuesta WDAC devuelta al host de script. Para obtener más información sobre los eventos de cumplimiento de scripts WDAC, consulte Descripción de los eventos de Application Control.

Nota

Cuando se ejecuta un script que no está permitido por la directiva, WDAC genera un evento que indica que el script se ha "bloqueado". Sin embargo, el host de script controla el comportamiento real de la aplicación de scripts y es posible que no bloquee completamente la ejecución del archivo.

Tenga en cuenta también que algunos hosts de script pueden cambiar su comportamiento incluso si una directiva WDAC solo está en modo de auditoría. Debe revisar la información específica del host de script en este artículo y probar exhaustivamente dentro de su entorno para asegurarse de que los scripts que necesita ejecutar funcionan correctamente.

Hosts de script iluminados que forman parte de Windows

PowerShell

Las directivas WDAC deben permitir que todos los scripts de PowerShell (.ps1), módulos (.psm1) y manifiestos (.psd1) se ejecuten con derechos de lenguaje completo.

Las directivas WDAC también deben permitir los módulos dependientes cargados por un módulo permitido, y las funciones de módulo deben exportarse explícitamente por nombre cuando se aplica WDAC. Los módulos que no especifican ninguna función exportada (sin lista de nombres de exportación) todavía se cargan, pero no se puede acceder a ninguna función de módulo. Los módulos que usan caracteres comodín (*) en su nombre no se cargarán.

Cualquier script de PowerShell que no esté permitido por la directiva WDAC todavía se ejecuta, pero solo en el modo de lenguaje restringido.

No se recomienda el suministro de puntos de PowerShell. En su lugar, los scripts deben usar módulos de PowerShell para proporcionar una funcionalidad común. Si un archivo de script permitido intenta ejecutar archivos de script de origen de puntos, esos archivos de script también deben pasar la directiva.

WDAC coloca PowerShell interactivo en modo de lenguaje restringido si se aplica cualquier directiva DE UMCI de WDAC y cualquier directiva WDAC activa permite la aplicación de scripts, incluso si esa directiva está en modo de auditoría. Para ejecutar PowerShell interactivo con derechos de lenguaje completo, debe deshabilitar la aplicación de scripts para todas las directivas.

Para obtener más información, vea Acerca de los modos de idioma y el modo de idioma restringido.

VBscript, cscript y jscript

Las directivas WDAC deben permitir que todos los scripts se ejecuten mediante el host de script basado en Windows (wscript.exe) o el host de script basado en la consola de Microsoft (cscript.exe). Si no es así, se bloquea el script.

Host de aplicaciones HTML de Microsoft (MSHTA) y MSXML

Toda la ejecución de código mediante MSHTA o MSXML se bloquea si hay alguna directiva WDAC con aplicación de scripts activa, incluso si esa directiva está en modo de auditoría.

Objetos COM

WDAC aplica además una lista de permitidos restringida para objetos COM que la directiva WDAC puede expandir o restringir aún más. La aplicación de objetos COM no se ve afectada por la opción 11 Disabled:Script Enforcement. Para obtener más información sobre cómo permitir o denegar objetos COM, vea Permitir el registro de objetos COM.

Scripts que no están controlados directamente por WDAC

WDAC no controla directamente el código que se ejecuta a través del Procesador de comandos de Windows (cmd.exe), incluidos .batarchivos de script /.cmd. Sin embargo, todo lo que intenta ejecutar este script por lotes está sujeto al control WDAC. Si no necesita ejecutar cmd.exe, se recomienda bloquearlo directamente o permitirlo solo por excepción en función del proceso de llamada. Consulte Uso de una directiva de control de aplicaciones de Windows Defender para controlar complementos, complementos y módulos específicos.

WDAC no controla los scripts que se ejecutan a través de un host de script no iluminado, como muchos motores de Java o Python de terceros. Si la directiva WDAC permite que se ejecute un host de script no iluminado, se permiten implícitamente que todos los scripts se ejecuten a través de ese host. En el caso de los hosts de scripts que no son de Microsoft, debe comprobar con el proveedor de software si sus hosts de script están iluminados para la directiva WDAC.