Riepilogo
Esiste una vulnerabilità in Microsoft Visual Studio 2019 e Visual Studio 2017 se un file XOML (Extensible oggetto Markup Language) fa riferimento a determinati tipi e provoca casuale del codice da eseguire quando il file viene aperto in Visual Studio.
È ora disponibile una restrizione che tipi possono essere utilizzati nei file con estensione xoml. Se viene aperto un file con estensione xoml contenente uno dei tipi non appena autorizzati, viene visualizzato un messaggio di errore che informa che il tipo è non autorizzato.
To ulteriori informazioni sulle vulnerabilità, passare al 2019-CVE-1113.
Soluzione alternativa
Se un file con estensione xoml aperto non causa problemi di protezione, è possibile disattivare il processo di controllo per i tipi non autorizzati. A tale scopo, aggiungere una chiave per il<appSettings>sezione del file devenv.exe.config , come illustrato di seguito:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
Disabilita questo appSetting valore completamente il controllo del serializzatore XOML (Extensible oggetto Markup Language) di tipo. Se il valore è impostato su true, avrà la precedenza sulla seguente nuovo appSetting valore impedisce solo tipi specifici.
Se si desidera solo impedire alcuni tipi specifici, è necessario apportare le modifiche seguenti al file devenv.exe.config :
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerDefaultUnauthorizedTypes" value="true"/>
</appSettings>
...
Questa modifica consente a tutti i tipi che sono autorizzati per impostazione predefinita. Per contrassegnare tipi specifici come non autorizzato, è necessario apportare le modifiche seguenti al file 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>
...
Queste modifiche contrassegnano solo il tipo di WorkflowDesigner nell'assembly System.Activities.Presentation come non autorizzato, come segue:
-
Versione: 4.0.0.0
-
Lingua: neutro
-
PublicKeyToken: 31bf3856ad364e35
Per contrassegnare altri tipi come non autorizzato, è possibile aggiungere voci simili per tali tipi.