Ringkasan
Terjadi kerentanan eksekusi kode jauh di Microsoft Visual Studio 2019 dan Visual Studio 2017 jika berkas XOML (Extensible objek Markup Language) referensi jenis tertentu dan menyebabkan kode acak akan dijalankan ketika berkas terbuka di Visual Studio.
Sekarang ada batasan di mana jenis diizinkan untuk digunakan dalam berkas .xoml. Jika berkas .xoml yang berisi salah satu dari jenis baru tidak sah dibuka, Anda menerima pesan galat yang menyatakan bahwa tipe yang tidak sah.
To Pelajari selengkapnya tentang kerentanan, pergi ke CVE 2019 1113.
Penyelesaian Masalah
Apabila berkas dibuka .xoml tidak menyebabkan masalah keamanan, Anda dapat menonaktifkan proses pemeriksaan untuk jenis tidak sah. Untuk melakukannya, tambahkan kunci<appSettings>Bagian berkas devenv.exe.config , sebagai berikut:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Ini appSetting nilai sepenuhnya menonaktifkan jenis Check-in serializer XOML (Extensible objek Markup Language). Jika nilai diatur ke true, akan lebih diutamakan dari nilai appSetting baru berikut ini untuk disallowing hanya jenis tertentu.
Jika Anda hanya ingin menolak beberapa jenis tertentu, Anda harus membuat perubahan berikut ke berkas devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Perubahan ini memungkinkan semua jenis yang tidak diotorisasi secara default. Untuk menandai khusus jenis sebagai tidak sah, Anda juga harus membuat perubahan berikut ke berkas 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>
...
Perubahan ini menandai hanya WorkflowDesigner jenis Majelis System.Activities.Presentation sebagai tidak sah, sebagai berikut:
-
Versi: 4.0.0.0
-
Budaya: netral
-
PublicKeyToken: 31bf3856ad364e35
Untuk menandai jenis lain sebagai tidak sah, Anda dapat menambahkan entri yang serupa untuk jenis tersebut.