概要
XOML (Extensible Object Markup Language) ファイルで特定の型が参照され、そのファイルが Visual Studio で開かれたときにランダムなコードが実行される場合、Microsoft Visual Studio 2019 および Visual Studio 2017 にリモートでコードが実行される脆弱性が存在します。
.xoml ファイル内で使用できる型には制限が追加されました。 承認されなくなった型のいずれかを含む .xoml ファイルを開くと、その型が承認されていないことを示すエラー メッセージが表示されます。
この脆弱性の詳細については、CVE-2019-1113 を参照してください。
回避策
.xoml ファイルを開いてもセキュリティの問題が発生しない場合は、承認されていない型をチェックするプロセスを無効にすることができます。 これを行うには、次のように devenv.exe.config ファイルの <appSettings> セクションにキーを追加します。
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
この appSetting 値にすると、XOML (Extensible Object Markup Language) シリアライザーの型チェックは完全に無効になります。 この値を true に設定した場合、特定の型のみを禁止する次の新しい 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>
...
このように変更すると、次のように System.Activities.Presentation アセンブリの WorkflowDesigner 型のみが非承認とマークされます。
-
Version: 4.0.0.0
-
Culture: neutral
-
PublicKeyToken: 31bf3856ad364e35
他の型を非承認としてマークするには、それらの型について同様のエントリを追加します。