Sammanfattning
Det finns en säkerhetsrisk för fjärrkörning av kod i Microsoft Visual Studio 2019 och Visual Studio 2017 om en XOML-fil (Extensible Object Markup Language) refererar till vissa typer och orsakar att slumpmässig kod körs när filen öppnas i Visual Studio.
Det finns nu en begränsning för vilka typer som får användas i XOML-filer. Om en .xoml-fil som innehåller en av de nyligen obehöriga typerna öppnas, får du ett felmeddelande som anger att typen är obehörig.
Mer information om sårbarheten finns i CVE-2019-1113.
Lösning
Om en öppnad .xoml-fil inte orsakar säkerhetsproblem kan du inaktivera kontrollen av obehöriga typer. Det gör du genom att lägga till en nyckel i avsnittet i <appSettings> den devenv.exe.config filen, enligt följande:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Det här appSetting-värdet inaktiverar helt typkontroll i XOML-serialiseraren (Extensible Object Markup Language). Om värdet är inställt på true har det företräde framför följande nya appSetting-värde för att endast vissa typer inte tillåts.
Om du bara vill avvisa vissa typer måste du göra följande ändringar i dendevenv.exe.config filen:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Den här ändringen tillåter alla typer som är obehöriga som standard. Om du vill markera vissa typer som obehöriga måste du också göra följande ändringar i dendevenv.exe.config filen:
...
<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>
...
De här ändringarna markerar endast typen WorkflowDesigner i sammansättningen System.Activities.Presentation som obehörig, enligt följande:
- Version: 4.0.0.0
- Kultur: neutral
- PublicKeyToken: 31bf3856ad364e35
Om du vill markera andra typer som obehöriga kan du lägga till liknande poster för dessa typer.