Resumen
Existe una vulnerabilidad de ejecución remoto en Microsoft Visual Studio 2019 y Visual Studio 2017 si un archivo XOML (lenguaje de marcado de objeto extensible) hace referencia a determinados tipos y provoca la ejecución de código aleatorio cuando el archivo se abre en Visual Studio.
Ahora hay una restricción en qué tipos se permiten usar en archivos .xoml. Si un archivo .xoml que contiene uno de los tipos recién prohibidos, recibirá un mensaje de error que indica que el tipo no está autorizado.
Para obtener más información sobre la vulnerabilidad, consulte CVE-2019-1113.
Solución alternativa
Si un archivo .xoml abierto no produce problemas de seguridad, puede deshabilitar el proceso de comprobación de tipos no autorizados. Para ello, agregue una clave a la sección <appSettings> del archivo devenv.exe.config, tal como se indica a continuación:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Este valor appSetting deshabilita completamente la comprobación de tipos en el serializador XOML (lenguaje de marcado de objeto extensible). Si el valor se establece en true, tiene prioridad sobre el nuevo valor appSetting para prohibir solo tipos específicos.
Si desea prohibir solo algunos tipos específicos, debe realizar los siguientes cambios en el archivo devenv.exe.config:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Este cambio permite todos los tipos que están prohibidos de manera predeterminada. Para marcar tipos específicos como no autorizados, también debe realizar los siguientes cambios en el archivo devenv.exe.config:
...
<configuration>
...
<configSections>
<sectionGroup name="System.Workflow.ComponentModel.WorkflowCompiler" type="System.Workflow.ComponentModel.Compiler.WorkflowCompilerConfigurationSectionGroup, System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<section name="authorizedTypes" type="System.Workflow.ComponentModel.Compiler.AuthorizedTypesSectionHandler, System.Workflow.ComponentModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</sectionGroup>
</configSections>
...
<System.Workflow.ComponentModel.WorkflowCompiler>
<authorizedTypes>
<foo version="v4.0">
<authorizedType Assembly="System.Activities.Presentation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Activities.Presentation" TypeName="WorkflowDesigner" Authorized="false"/>
</foo>
</authorizedTypes>
</System.Workflow.ComponentModel.WorkflowCompiler>
...
</configuration>
...
Estos cambios marcan solo el tipo WorkflowDesigner en el ensamblaje System.Activities.Presentation como no autorizados, tal como se indica a continuación:
-
Versión: 4.0.0.0
-
Referencia cultural: neutra
-
PublicKeyToken: 31bf3856ad364e35
Para marcar otros tipos como no autorizados, puede agregar entradas similares para esos tipos.