요약
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) 직렬 변환기에서 유형 검사를 완전히 비활성화 합니다. 값이 참으로 설정되면 특정 유형만 비활성화하도록 다음과 같은 새로운 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 유형만 승인되지 않은 것으로 표시됩니다.
-
버전: 4.0.0.0
-
Culture: 중립
-
PublicKeyToken: 31bf3856ad364e35
다른 유형을 승인되지 않은 것으로 표시하려면 유사한 항목을 이 유형에 추가할 수 있습니다.