Applies ToVisual Studio 2019 Visual Studio 2017

الملخص

مشكلة عدم حصانة في تنفيذ التعليمات برمجية عن بعد موجودة في 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

لوضع علامة على أنواع أخرى بدون إذن، يمكنك إضافة إدخالات مشابهة لتلك الأنواع.

هل تحتاج إلى مزيد من المساعدة؟

الخروج من الخيارات إضافية؟

استكشف مزايا الاشتراك، واستعرض الدورات التدريبية، وتعرف على كيفية تأمين جهازك، والمزيد.