Samenvatting
Er bestaat een beveiligingslek in Microsoft Visual Studio 2019 en Visual Studio 2017 als een XOML (Extensible Object Markup Language)-bestand verwijst naar bepaalde typen en ervoor zorgt willekeurige code wordt uitgevoerd dat wanneer het bestand wordt geopend in Visual Studio.
Er is nu een beperking op welke typen mogen worden gebruikt in XOML-bestanden. Als een XOML-bestand met een van de zojuist door onbevoegden wordt geopend, wordt een foutbericht weergegeven waarin wordt gemeld dat het type niet geautoriseerd is.
To meer informatie over het beveiligingsprobleem, gaat u naar CVE-2019-1113.
Workaround
Als u een geopende XOML-bestand niet leidt tot problemen met de beveiliging, kunt u het proces voor het controleren op onbevoegde typen uitschakelen. Hiertoe toevoegen een sleutel voor de<appSettings>sectie van het bestand devenv.exe.config als volgt:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Deze appSetting waarde volledig uitgeschakeld typecontrole in de serializer XOML (Extensible Object Markup Language). Als de waarde is ingesteld op true, heeft deze voorrang op de volgende nieuwe appSetting -waarde voor het verbieden van alleen bepaalde typen.
Als u alleen toestaan bepaalde specifieke typen wilt, hebt u de volgende wijzigingen aanbrengen in het bestand devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Deze wijziging kan alle typen die niet standaard zijn gemachtigd. Als u specifieke typen als niet-geautoriseerde, hebt u ook de volgende wijzigingen aanbrengen in het bestand 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>
...
Deze wijzigingen markeren alleen het type WorkflowDesigner in de System.Activities.Presentation -assembly als niet-gemachtigde, als volgt:
-
Versie: 4.0.0.0
-
Cultuur: neutraal
-
PublicKeyToken: 31bf3856ad364e35
Als u andere typen als niet-gemachtigde, kunt u soortgelijke vermeldingen voor deze typen toevoegen.