Обобщена информация
Код за отдалечено изпълнение на уязвимост в Microsoft Visual Studio 2019 и Visual Studio 2017 ако XOML (разширен обект Markup Language) препраща към някои видове и предизвиква произволен код да се изпълнява, когато файлът е отворен в Visual Studio.
Сега има ограничение на която типове могат да се използват .xoml файлове. Ако .xoml файл, който съдържа някой от типовете наскоро неупълномощен, получавате съобщение за грешка, уведомяващо, че типът е неразрешено.
To Научете повече за уязвимостта, преминете към CVE-2019-1113.
Заобиколно решение
Ако отвори .xoml файл не води до проблеми със сигурността, можете да забраните на процеса на проверка за неупълномощени типове. За да направите това, добавете ключ към<appSettings>раздел на файла devenv.exe.config , както следва:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Тази appSetting стойност напълно забранява тип проверка в програмата за сериализация XOML (разширен обект Markup Language). Ако стойността е вярно, то по-висок приоритет следните нови appSetting стойност за недопускане само определен тип.
Ако искате само да забраните някои конкретни типове, трябва да се направят следните промени във файла devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Тази промяна позволява на всички видове, които са неразрешени по подразбиране. За да маркирате определени типове като неразрешено, вие също трябва да направят следните промени във файла 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>
...
Тези промени маркирате само WorkflowDesigner тип на System.Activities.Presentation събрание като неразрешено, както следва:
-
Версия: 4.0.0.0
-
Култура: неутрално
-
PublicKeyToken: 31bf3856ad364e35
За да маркирате други типове като неразрешено, можете да добавите подобни записи за тези типове.