Tóm tắt
Lỗ hổng thực thi mã từ xa có trong Microsoft Visual Studio 2019 và Visual Studio 2017 nếu tệp XOML (mở rộng đối tượng ngôn ngữ đánh dấu) tham chiếu đến một số loại khiến mã ngẫu nhiên để chạy khi tệp được mở trong hình ảnh Studio.
Bây giờ là một hạn chế có loại được phép sử dụng trong các tập tin .xoml. Nếu tệp .xoml chứa một loại trái phép mới được mở ra, bạn nhận được thông báo lỗi cho biết loại không được phép.
To tìm hiểu thêm về lỗ hổng bảo mật, hãy đi tới CVE-2019-1113.
Cách giải quyết
Nếu tệp được mở .xoml không gây ra các vấn đề bảo mật, bạn có thể tắt quá trình kiểm tra loại trái phép. Để thực hiện việc này, thêm một phím để các<appSettings>phần của tệp devenv.exe.config , như sau:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Này appSetting giá trị hoàn toàn vô hiệu hoá loại kiểm tra trong serializer XOML (mở rộng đối tượng ngôn ngữ đánh dấu). Nếu giá trị được đặt đúng, nó sẽ ưu tiên hơn giá trị appSetting mới sau cho disallowing chỉ loại cụ thể.
Nếu bạn chỉ muốn không cho phép một số loại cụ thể, bạn phải thực hiện các thay đổi tập tin devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Thay đổi này cho phép tất cả các loại không được phép theo mặc định. Để đánh dấu cụ thể loại làm việc, bạn cũng phải thực hiện các thay đổi tệp 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>
...
Những thay đổi đánh dấu chỉ loại WorkflowDesigner hội System.Activities.Presentation làm việc, như sau:
-
Phiên bản: 4.0.0.0
-
Văn hóa: Trung
-
PublicKeyToken: 31bf3856ad364e35
Để đánh dấu các loại làm việc, bạn có thể thêm các mục nhập tương tự cho các loại.