Applies To.NET Framework 4.6.1 .NET Framework 4.6.2 .NET Framework 3.5.1

ملخص

الثغرة أمنية لكشف معلومات موجودة في بروتوكول "أمان طبقة النقل" وبروتوكول "طبقة مأخذ التوصيل الآمنة" (TLS/SSL) كما يتم تطبيقها في مكون تشفير Microsoft.NET Framework. يمكن لمهاجم الذي ينجح في استغلال مشكلة عدم الحصانة هذه قد يفك تشفير حركة مرور TLS/SSL مشفرة.لاستغلال مشكلة عدم الحصانة، أولاً المهاجم لإدخال بيانات غير مشفرة في قناة الأمان وقم بتنفيذ هجوم (MiTM) رجل-في-وسط بين العميل المستهدف وخادم مشروع. يعالج هذا التحديث مشكلة عدم الحصانة عن طريق تعديل طريقة تشفير.NET مكون إرسال واستلام حزم الشبكة المشفرة.تم إصلاح مشكلة عدم الحصانة هذه كجزء من نشرة أمان Microsoft MS16-065. هذا التحديث بتغيير طريقة التشفير المكون.NET Framework إرسال واستلام حزم الشبكة المشفرة.

يتضمن الجدول التالي ارتباطات إلى إدخال قياسي لكل ثغرة أمنية في قائمة مشكلات عدم الحصانة العامة والتعرض.

وجود ثغرة أمنية في العنوان

عدد CVE

الإعلان عن

استغلال

TLS/SSL التحايل

CVE-2016-0149

نعم

لا

حل مشكلة عدم الحصانة

يؤدي التغيير في نشرة أمان Microsoft MS16-065 TLS السجل الأول بعد عملية تبادل الإشارات تقسيم. يؤدي سلستريم و WebRequest (HttpWebRequest، فتبويبريكويست)، SmtpClient وهتبكلينت (حيث استناداً إلى HttpWebRequest) تدفقات إرجاع بايت واحد للقراءة الأولى، متبوعاً ببايت المتبقية (n-1) في القراءة المتتابعة. يحدث هذا التغيير في السلوك فقط للتطبيقات التي تستخدم TLS 1.0 + تسلسل كتلة التشفير، ولكن ليس عند استخدام TLS 1.1 أو TLS 1.2.ملاحظة: كشرط مسبق، يجب تثبيت نشرة الأمن ل Microsoft رقم MS12-006 لتمكين هذا التحديث.قد يؤدي هذا التغيير بعض التطبيقات التي تستند إلى إطار عمل.NET لكسر. توضح هذه المقالة نهجين يمكن استخدامها لتحديث التطبيق الخاص بك ليعمل بشكل صحيح بعد تثبيت نشرة الأمن ل Microsoft MS16-065.

عوامل تخفيف مشاكل مشكلات التوافق

الخيار 1: التبديل إلى بروتوكول TLS 1.2

هذا الخيار يجعل تطبيق استخدام بروتوكول TLS 1.2 بتعديل التسجيل أو تكوين إصدار البروتوكول برمجياً.

  • تعديل التسجيلهاماتبع الخطوات الموجودة في هذا القسم بعناية. قد تحدث مشكلات خطيرة إذا قمت بتعديل التسجيل بشكل غير صحيح. قبل تعديله، النسخ الاحتياطي لاستعادة السجل في حالة حدوث مشكلات..NET Framework 4.0 وتطبيقات 4.5.x.NET Framework التي يتم تشغيلها على ".NET Framework 4، 5" والإصدارات الأحدث التبديل البروتوكول الافتراضي ل TLS 1.2 و TLS 1.1 و TLS 1.0 بتمكين مفتاح التسجيل شوسيسترونجكريبتو . مفتاح التسجيل هذا قد تمت مناقشته في القسم الإجراءات المقترحة الموضوع 2960358 النصائح الإرشادية للأمان ل Microsoft على موقع Microsoft TechNet على ويب.هام: يعمل هذا التغيير التسجيل فقط إذا تحققت الشروط التالية:

    • التطبيقات التي تستخدم واجهات برمجة التطبيقات المستندة إلى سيرفيسيبوينتماناجير يتم تعيين قيمة ServicePointManager.SecurityProtocol بشكل صريح . تتضمن أمثلة هذه الفئات System.Net.Http.HttpClient System.Net.FtpWebRequest، System.Net.HttpWebRequestو System.Net.Mail.SmtpClient. إعداد ServicePointManager.SecurityProtocol في التعليمات البرمجية الأسبقية على التسجيل.

    • تستخدم التطبيقات التحميل الزائد سلستريام AuthenticateAsClient(String) .

  • تكوين إصدار البروتوكول برمجياً.NET Framework 4.0 و 4.5 التطبيقات التي يتم تشغيلها على ".NET Framework 4، 5" والإصدارات الأحدث والتي استخدم التحميل الزائد AuthenticateAsClient(String, X509CertificateCollection, SslProtocols, Boolean) سلستريم يجب أن يتم إعادة ترجمتها، تحديد SslProtocols.Tls12و SslProtocols.Tls11و SslProtocols.Tls كمعلمة ثالثة. للحصول على وصف كامل لكيفية استخدام فئة سلستريم، راجع الموضوع فئة سلستريم على موقع مطوري Microsoft (MSDN).ملاحظة: .NET Framework 4، 6 والإصدارات الأحدث استخدام TLS 1.2 و TLS 1.1 و TLS 1.0 كافتراضيات البروتوكول. يناقش هذا الأمر في الموضوع 2960358 النصائح الإرشادية للأمان ل Microsoft على موقع Microsoft TechNet على ويب.

الخيار 2: مقبض تقسيم الحزم

يؤدي هذا التحديث سجل مفرد تقسيمها إلى سجلات متعددة. ولذلك، إذا كان يتوقع تطبيق سجل كامل تكون متوفرة في مكالمة قراءة واحدة، قد قطع هذه الطلبات. للتأكد من أن التطبيق يعمل بشكل صحيح، تحقق من أن التطبيق يعالج تقسيم الحزم عن طريق إجراء استدعاء Stream.Read بشكل صحيح. يمكنك استخدام عينة التعليمات البرمجية متوفرة هنا كمرجع لكيفية إصلاح التطبيق لإجراء المكالمة القراءة بشكل صحيح.نموذج طلب HTTP الذي يظهر الفرق في السلوك قبل (بالتخفيف) وبعد (دون التخفيف) تم تثبيت التحديثات 3147461 و 3147458 ، راجع قسم "مزيد من المعلومات".على سبيل مثال كامل لطريقة Stream.Read ، راجع الموضوع أسلوب Stream.Read (بايت [] أو Int32، Int32) على موقع مطوري Microsoft (MSDN).

حلول لمشكلات توافق التطبيقات

تحذير قد هذه الحلول إلى جعل جهاز كمبيوتر أو شبكة أكثر عرضه للهجمات التي تتم من قبل المستخدمين الضارين أو من قبل البرامج الضارة كالفيروسات. لا نوصي بهذه الحلول لكننا نورد هذه المعلومات حتى يكون لك تطبيق هذه الحلول رؤيتك. استخدام هذه الحلول على مسؤوليتك الخاصة.

الطريقة الأولى: تحديث مفاتيح التسجيل (متوفر لكافة إصدارات.NET Framework)

تعطيل بنية SCH_SEND_AUX_RECORD (عالمياً) تعطيل بنية SCH_SEND_AUX_RECORD للتطبيقات الفردية

تعطيل بنية SCH_SEND_AUX_RECORD (عالمياً)

لكافة التطبيقات، بإضافة مفتاح التسجيل الفرعي التالي:

موقع التسجيل: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\ < version_number >اسم DWORD: شسينداوكسريكوردقيمة البيانات: 0ملاحظة: هو العنصر النائب < version_number > v4.0.30319 أو v2.0.50727، تبعاً للإصدار.لتطبيقات 32-بت التي تعمل على أجهزة كمبيوتر 64 بت أيضا إضافة مفتاح التسجيل الفرعي التالي:

موقع التسجيل: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. NETFramework\ < version_number >اسم DWORD: شسينداوكسريكوردقيمة البيانات: 0ملاحظة: هو العنصر النائب < version_number > v4.0.30319 أو v2.0.50727، تبعاً للإصدار.

الحل البديل

لتعطيل الوضع الأمن الموضحة في هذه المقالة بشكل مؤقت، انقر فوق الارتباط المناسب لتحميل ملف.reg، وثم انقر نقراً مزدوجاً فوق الملف.reg الذي تم تنزيله لإجراء التغييرات على التسجيل.للتطبيقات التي تستهدف Microsoft NET Framework 35:

Download تحميل الملف ManualOptOutSchSendAuxRecord20.reg الآن. لتطبيقات استهداف Microsoft.NET Framework 4.0 والإصدارات الأحدث:

Download تحميل الملف ManualOptOutSchSendAuxRecord40.reg الآن. لإعادة تمكين الوضع الأمن الموضحة في هذه المقالة، انقر فوق الارتباط المناسب لتحميل ملف.reg، ومن ثم انقر نقراً مزدوجاً فوق الملف.reg الذي تم تنزيله لإجراء التغييرات على التسجيل.للتطبيقات التي تستهدف Microsoft NET Framework 35:

Download تحميل الملف ManualOptInSchSendAuxRecord20.reg الآن. لتطبيقات استهداف Microsoft.NET Framework 4.0 والإصدارات الأحدث:

Download تحميل الملف ManualOptInSchSendAuxRecord40.reg الآن. لمزيد من المعلومات عن كيفية تنزيل ملفات دعم Microsoft، انقر فوق رقم المقالة التالي لعرضها في "قاعدة معارف Microsoft":

119591 كيفية الحصول على ملفات دعم Microsoft من الخدمات عبر الإنترنتقامت Microsoft بفحص هذا الملف بحثًا عن الفيروسات. استخدمت Microsoft أحدث برامج الكشف عن الفيروسات التي كانت متوفرة في التاريخ الذي تم نشر الملف فيه. يتم تخزين الملف على خوادم محسنة الأمان تساعد على منع إجراء أية تغييرات غير مصرح بها على الملف.

تعطيل بنية SCH_SEND_AUX_RECORD للتطبيقات الفردية

لكافة التطبيقات، بإضافة مفتاح التسجيل الفرعي التالي:

موقع التسجيل: HKEY_LOCAL_MACHINE\Software\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >اسم DWORD: المسار المؤهل بالكامل للتطبيق.exe (على سبيل المثال، C:\MyApp\MyApp.exe)قيمة البيانات: 0ملاحظة: هو العنصر النائب < version_number > v4.0.30319 أو v2.0.50727، تبعاً للإصدار.لتطبيقات 32-بت التي تعمل على أجهزة كمبيوتر 64 بت أيضا إضافة مفتاح التسجيل الفرعي التالي:

موقع التسجيل: HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\. \System.Net.ServicePointManager.SchSendAuxRecord NETFramework\ < version_number >اسم DWORD: المسار المؤهل بالكامل للتطبيق.exe (على سبيل المثال، C:\MyApp\MyApp.exe)قيمة البيانات: 0 (القيمة الصالحة الوحيدة 0. سيتم تجاهل أية قيمة.)ملاحظة: هو العنصر النائب < version_number > v4.0.30319 أو v2.0.50727، تبعاً للإصدار.

الطريقة الثانية: تغيير تكوين مستوى التطبيق (متوفر فقط لإصدار.NET Framework 4، 6 والإصدارات الأحدث)

يبدأ ب 4.6 إطار عمل.NET, يمكنك تغيير تكوين مستوى تطبيق من خلال التعليمات البرمجية أو تطبيق تغييرات التكوين أو التسجيل.في 4.6 إطار عمل.NET، يمكنك تعيين مفتاح التبديل باستخدام أي من الطرق التالية. هذه الأمثلة بتعطيل ميزة الأمان.

  • برمجياًأول شيء يجب القيام به التطبيق يتم تشغيل التعليمات البرمجية التالية. وهذا لأنه سيتم تهيئة "إدارة نقطة الخدمة" مرة واحدة فقط.

    private const string DisableCachingName = @"TestSwitch.LocalAppContext.DisableCaching"; private const string DontEnableSchSendAuxRecordName = @"Switch.System.Net.DontEnableSchSendAuxRecord"; AppContext.SetSwitch(DisableCachingName, true); AppContext.SetSwitch(DontEnableSchSendAuxRecordName , true);
  • تكوين التطبيقلتغيير تكوين التطبيق، يضاف ما يلي:

    <runtime><AppContextSwitchOverrides value="Switch.System.Net.DontEnableSchSendAuxRecord=true"/></runtime>
  • مفتاح التسجيل (الكمبيوتر العالمي)

    مواقع التسجيل: HKEY_LOCAL_MACHINE\Software\Microsoft\. NETFramework\AppContextHKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\. NETFramework\AppContextقيمة: Switch.System.Net.DontEnableSchSendAuxRecordنوع: سلسلةقيمة: صحيحملاحظة: Switch.System.Net.DontEnableSchSendAuxRecord = False لكافة التطبيقات.

مزيد من المعلومات

التالي نمط نموذج عميل/ملقم اتصال قبل وبعد تثبيت هذا التحديث. يتم توفير هذه المعلومات لتوضيح لتعريف أي الكسر التطبيق بسبب تثبيت هذا الإصلاح.

دون التخفيف

مع التخفيف

[خادم] انتظار للاتصالات (127.0.0.1:4431)[العميل] الاتصال ب localhost:4431[خادم] متصل عميل.[العميل] متصل. مصادقة...[خادم] مصادقة العميل.[العميل] إرسال طلب (94 بايت)[العميل] في انتظار الرد...[خادم] تلقي 94 بايت: <<< الحصول على/HTTP/1.0Host: contoso.comعميل المستخدم: تطبيق اختبار>>>[خادم] رد 476 بايت.[العميل بايت 1: 476] الرد: <<<<< HTTP/1.1 200 موافق>>>>>

[خادم] انتظار للاتصالات (127.0.0.1:4431)[العميل] الاتصال ب localhost:4431[خادم] متصل عميل.[العميل] متصل. مصادقة...[خادم] مصادقة العميل.[العميل] إرسال طلب (94 بايت)[العميل] في انتظار الرد...[خادم] تلقي 1 بايت: <<< ز >>>[خادم] تلقي وحدات البايت 93: <<< ET/HTTP/1.0Host: contoso.comعميل المستخدم: تطبيق اختبار>>>[خادم] رد 476 بايت.[العميل 1: 1 بايت] الرد: <<<<< أ >>>>>[العميل 2: 475 بايت] الرد: <<<<< TTP/1.1 200 موافق>>>>>

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

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

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

تساعدك المجتمعات على طرح الأسئلة والإجابة عليها، وتقديم الملاحظات، وسماعها من الخبراء ذوي الاطلاع الواسع.