Rezumat
Există o vulnerabilitate de cod la distanță din Microsoft Visual Studio 2019 și Visual Studio 2017 dacă un fișier XOML (obiect Extensible Markup Language) face referire la anumite tipuri și provoacă aleatoriu cod pentru a se executa când fișierul se deschide în Visual Studio.
Este acum o restricție care tipuri sunt permise pentru a fi utilizate în fişierele .xoml. Dacă se deschide un fișier .xoml care conține unul dintre tipurile nou neautorizate, primiți un mesaj de eroare care afirmă că tipul este neautorizate.
To Aflați mai multe despre vulnerabilitatea, du-te la CVE-2019-1113.
Soluție de evitare
Dacă un fișier deschis .xoml nu provoacă probleme de securitate, aveți posibilitatea să dezactivați procesul de verificare pentru tipurile de neautorizate. Pentru aceasta, adăugați o cheie<appSettings>secțiune a fișierului devenv.exe.config , după cum urmează:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Acest appSetting valoarea complet dezactivează tip în serializatorului XOML (obiect Extensible Markup Language). Dacă valoarea este setată la true, are prioritate prin următoarea valoare appSetting noi pentru a refuza numai anumite tipuri.
Dacă doriți doar să nu permite anumite tipuri specifice, trebuie să efectuați următoarele modificări în fișierul devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Această modificare permite toate tipurile de care sunt neautorizat în mod implicit. Pentru a marca anumite tipuri ca neautorizate, de asemenea, trebuie să efectuați următoarele modificări în fișierul 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>
...
Aceste modificări marca numai tipul WorkflowDesigner în Adunarea System.Activities.Presentation ca neautorizat, după cum urmează:
-
Versiune: 4.0.0.0
-
Culture: neutru
-
PublicKeyToken: 31bf3856ad364e35
Pentru a marca alte tipuri ca neautorizate, aveți posibilitatea să adăugați intrări similare pentru aceste tipuri.