الملخص
مشكلة عدم حصانة في تنفيذ التعليمات برمجية عن بعد موجودة في Microsoft Visual Studio سنة 2019 و Visual Studio 2017 حالة ملف XOML (لغة التوصيف الكائن الموسعة) تشير إلى أنواع معينة ويؤدي رمز عشوائي ليتم تشغيلها عند فتح الملف في Visual الاستوديو.
يوجد الآن قيد عليه المسموح لاستخدامها في ملفات.xoml. إذا تم فتح ملف.xoml يحتوي على أحد أنواع غير مصرح به حديثا، تتلقى رسالة خطأ تنص على النوع غير مخول.
أأ معرفة المزيد حول مشكلة عدم الحصانة، فانتقل إلى CVE 2019 1113.
الحل البديل
إذا كان ملف.xoml المفتوحة لا يسبب مشاكل الأمان، يمكنك تعطيل عملية فحص لأنواع غير المصرح به. للقيام بذلك، إضافة مفتاح إلى<appSettings>مقطع من ملف devenv.exe.config ، كما يلي:
...
<appSettings>
<add key="microsoft:WorkflowComponentModel:DisableXOMLSerializerTypeChecking" value="true"/>
</appSettings>
...
هذا appSetting القيمة تماما تعطيل نوع التحقق في مسلسل XOML (لغة التوصيف الكائن الموسعة). إذا تم تعيين القيمة إلى true، يكون لها الأسبقية على القيمة 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 بدون إذن، علامة كما يلي:
-
الإصدار: 4.0.0.0
-
الثقافة: الطبيعية
-
PublicKeyToken: 31bf3856ad364e35
لوضع علامة على أنواع أخرى بدون إذن، يمكنك إضافة إدخالات مشابهة لتلك الأنواع.