إرشادات التقليل من الثغرات الأمنية في القناة الجانبية ذات التصميم الدقيق والتنفيذ التخميني القائمة على السيليكون
ينطبق على: ✔️ أجهزة ظاهرية بنظام التشغيل Linux ✔️ أجهزة ظاهرية بنظام التشغيل Windows ✔️ مجموعات التوسعة المرنة ✔️ مجموعات التوسعة الموحدة
توفر هذه المقالة إرشادات لفئةٍ جديدةٍ من الثغرات الأمنية في القناة الجانبية ذات التصميم الدقيق والتنفيذ التخميني القائمة على السيليكون والتي تؤثر على العديد من المعالجات وأنظمة التشغيل الحديثة. يتضمن ذلك Intel وAMD وARM. يمكن العثور على تفاصيل محددة لهذه الثغرات الأمنية القائمة على السيليكون في النصائح الأمنية التالية وCVEs:
- ADV180002 - إرشادات للتقليل من الثغرات الأمنية في القناة الجانبية للتنفيذ التخميني
- ADV180012 - إرشادات Microsoft لتجاوز المتجر التخميني
- ADV180013 - إرشادات Microsoft لقراءة سجل النظام المحتال
- ADV180016 - إرشادات Microsoft لاستعادة حالة Lazy FP
- ADV180018 - إرشادات Microsoft للتخفيف من متغير L1TF
- ADV190013 - إرشادات Microsoft للتخفيف من الثغرات الأمنية لأخذ عينات من البيانات التصميمية المصغرة
- ADV220002 - إرشادات Microsoft بشأن الثغرات الأمنية للبيانات القديمة لمعالج Intel MMIO
- CVE-2022-23816 - ارتباك نوع فرع وحدة المعالجة المركزية AMD
- CVE-2022-21123 - ارتباك نوع فرع وحدة المعالجة المركزية AMD
نتج عن الكشف عن هذه الثغرات الأمنية في وحدة المعالجة المركزية أسئلة من العملاء الذين يسعون إلى مزيدٍ من الوضوح.
نشرت Microsoft عمليات تخفيف من المخاطر عبر جميع الخدمات السحابية. البنية الأساسية التي تشغِّل Azure وتعزل أحمال عمل العملاء عن بعضها محمية. وهذا يعني أن المهاجم المحتمل الذي يستخدم نفس البنية الأساسية لا يمكنه مهاجمة تطبيقك باستخدام هذه الثغرات الأمنية.
يستخدم Azure ذاكرة الحفاظ على الصيانة كلما كان ذلك ممكناً، لتقليل تأثير العملاء والحد من ضرورة إعادة التشغيل. ستواصل Azure استخدام هذه الأساليب عند إجراء تحديثات على مستوى النظام للمضيف وحماية عملائنا.
يتوفر مزيد من المعلومات عن كيفية تكامل الأمان في كل جانب من جوانب Azure على موقع وثائق أمان Azure.
إشعار
منذ نشر هذه الوثيقة لأول مرة، تم الكشف عن متغيرات متعددة من فئة الثغرات هذه. تواصل Microsoft بذل قصارى جهدها في حماية عملائنا وتقديم التوجيهات. ستُحدَث هذه الصفحة أثناء استمرارنا في إصدار المزيد من الإصلاحات.
يحتاج العملاء الذين يشغلون تعليمات برمجية غير موثوقة على أجهزتهم الظاهرية إلى اتخاذ إجراءات للحماية من هذه الثغرات الأمنية عن طريق قراءة المعلومات أدناه للحصول على إرشادات إضافية عن جميع الثغرات الأمنية.
يجب أن يقيّم العملاء الآخرون هذه الثغرات من منظور الدفاع المتعمق والنظر في الآثار الأمنية والخاصة بالأداء المترتبة على التكوين الذي اختاروه.
المحافظة على تحديث أنظمة التشغيل
في حين أن تحديث نظام التشغيل غير مطلوب لعزل تطبيقاتك التي تعمل على Azure عن عملاء Azure الآخرين، فمن أفضل الممارسات دائما الحفاظ على تحديث البرنامج الخاص بك. تحتوي آخر تحديثات الأمان لنظام التشغيل Windows على عوامل تخفيف لهذه الثغرات الأمنية. وبطريقة مماثلة، أصدرت توزيعات Linux تحديثات متعددة لمعالجة هذه الثغرات. فيما يلي الإجراءات الموصى بها لتحديث نظام التشغيل:
تقدم | الإجراء الموصى به |
---|---|
خدمات Azure السحابية | مكِّن التحديث التلقائي أو تأكد من تشغيل أحدث نظام تشغيل Guest. |
الأجهزة الظاهرية التي تعمل بنظام التشغيل Linux من Azure | ثبِّت التحديثات من موفر نظام التشغيل. لمزيد من المعلومات، راجع Linux في جزء لاحق في هذا المستند. |
الأجهزة الظاهرية التي تعمل بنظام التشغيل Windows من Azure | ثبِّت أحدث مجموعات الأمان. |
خدمات PaaS الأخرى من Azure | لا يلزم اتخاذ أي إجراء للعملاء الذين يستخدمون هذه الخدمات. يحافظ Azure تلقائياً على تحديث إصدارات نظام التشغيل. |
إرشادات إضافية إذا كنت تقوم بتشغيل رمز غير موثوق به
قد يرغب العملاء الذين يسمحون لمستخدمين غير موثوقين بتنفيذ تعليمات برمجية عشوائية في تطبيق المزيد من ميزات الأمان داخل أجهزة Azure الظاهرية أو الخدمات السحابية. توفر هذه الميزات حماية من خطوط متجهة للكشف عن العملية الداخلية التي تصف العديد من ثغرات التنفيذ سهل التخمين.
مثال للسيناريوهات التي تُوصى باستخدام ميزات أمان أكثر فيها:
- تسمح بتشغيل التعليمات البرمجية التي لا تثق بها داخل الجهاز الظاهري الخاص بك.
- على سبيل المثال، تسمح لأحد العملاء بتحميل ملف ثنائي أو برنامج نصي ثم تنفِذه داخل تطبيقك.
- تسمح للمستخدمين الذين لا تثق بهم بتسجيل الدخول إلى جهازك الظاهري باستخدام حسابات ذات امتيازات منخفضة.
- على سبيل المثال، تسمح لمستخدم بامتياز منخفض بتسجيل الدخول إلى أحد الأجهزة الظاهرية باستخدام سطح مكتب بعيد أو SSH.
- تسمح للمستخدمين غير الموثوقين بالوصول إلى الأجهزة الظاهرية التي يتم تنفيذها عبر المحاكاة الافتراضية المتداخلة.
- على سبيل المثال، تتحكم في مضيف Hyper-V لكن تخصص أجهزة ظاهرية للمستخدمين غير الموثوق بهم.
لا يحتاج العملاء الذين لا يطبقون سيناريو يتضمن تعليمة برمجية غير موثوق بها إلى تمكين ميزات الأمان الإضافية هذه.
تمكين ميزات الأمان الإضافي
يمكنك تمكين المزيد من ميزات الأمان داخل VM أو Cloud Service إذا كنت تقوم بتشغيل رمز غير موثوق به. ففي الوقت نفسه، يجب التأكد من تحديث نظام التشغيل لتمكين ميزات الأمان داخل الجهاز الظاهري أو خدمة السحابة
Windows
يجب أن يكون نظام التشغيل المستهدف محدثاً لتمكين ميزات الأمان الإضافية هذه. بينما تُمكّن العديد من عوامل التخفيف بشكل افتراضي، يجب تمكين الميزات الإضافية المُوضحة هنا يدوياً والتي قد تؤثر في الأداء.
خيار 1
الخطوة 1: اتبع الإرشادات الواردة في KB4072698 للتحقق من تمكين سبل الحماية باستخدام وحدة PowerShell SpeculationControl.
إشعار
في حالة تنزيل هذه الوحدة النمطية مسبقاً، ستحتاج إلى تثبيت الإصدار الأحدث.
للتحقق من سبل الحماية المُمكَّنة ضد هذه الثغرات الأمنية، راجع فهم إخراج البرنامج النصي Get-SpeculationControlSettings PowerShell.
إذا لم يتم تمكين الحماية، فيرجى الاتصال بدعم Azure لتمكين عناصر تحكم إضافية على جهاز Azure الظاهري.
الخطوة 2: لتمكين دعم نظام تشغيل حجب العنوان الافتراضي لـ Kernel (KVAS) وإدخال هدف الفرع (BTI)، اتبع الإرشادات الواردة في KB4072698 لتمكين الحماية باستخدام مفاتيح التسجيل Session Manager
. إعادة التشغيل مطلوبة.
الخطوة 3: لعمليات النشر التي تستخدم المحاكاة الافتراضية المتداخلة (D3 و E3 فقط): تنطبق هذه الإرشادات داخل الجهاز الظاهري الذي تستخدمه كمضيف Hyper-V.
- اتبع الإرشادات الواردة في KB4072698 لتمكين الحماية باستخدام مفاتيح التسجيل
MinVmVersionForCpuBasedMitigations
. - عيِّن نوع جدولة برنامج hypervisor على
Core
باتباع الإرشادات الواردة هنا.
خيار 2
تعطيل الترابط التشعبي على الجهاز الظاهري - قد يختار العملاء الذين يشغلون تعليمات برمجية غير موثوقة على جهاز ظاهري مترابط تشعبياً تعطيل الترابط التشعبي أو الانتقال إلى حجم جهاز ظاهري غير مترابط تشعبياً. راجع هذا المستند للحصول على قائمة أحجام الأجهزة الظاهرية المترابطة تشعبياً (تكون نسبة vCPU إلى Core فيها 2:1). للتحقق مما إذا كان الترابط التشعبي في الجهاز الظاهري ممكناً أم لا، ارجع إلى البرنامج النصي أدناه باستخدام سطر الأوامر في Windows من داخل الجهاز الظاهري.
اكتب wmic
لإدخال الواجهة التفاعلية. ثم اكتب الأمر التالي لعرض مقدار المعالجات الفعلية والمنطقية على الجهاز الظاهري.
CPU Get NumberOfCores,NumberOfLogicalProcessors /Format:List
إذا كان عدد المعالجات المنطقية أكبر من المعالجات الفعلية (الذاكرة الأساسية)، فإن الترابط التشعبي ممكن. في حالة تشغيل جهاز ظاهري مترابط تشعبيًا، اتصل بدعم Azure لتعطيل الترابط التشعبي. بمجرد تعطيل الترابط التشعبي، سيطلب الدعم إعادة تشغيل الجهاز الظاهري بالكامل. ارجع إلى عدد الذواكر الأساسية لمعرفة سبب انخفاض عدد الذواكر الأساسية لجهازك الظاهري.
خيار 3
بالنسبة إلى CVE-2022-23816وCVE-2022-21123 (ارتباك نوع فرع وحدة المعالجة المركزية AMD)، اتبع كل من الخيار 1والخيار 2 أعلاه.
Linux
يتطلب تمكين مجموعة ميزات الأمان الإضافية في الداخل تحديث نظام التشغيل المستهدف بالكامل. ستُمكّن بعض عوامل التخفيف افتراضياً. يوضح القسم التالي الميزات قيد الإيقاف افتراضياً و/أو المعتمدة على دعم الأجهزة (التعليمة البرمجية الصغيرة). قد يؤدي تمكين هذه الميزات إلى تأثير في الأداء. راجع وثائق موفر نظام التشغيل للحصول على مزيد من الإرشادات
الخطوة 1: تعطيل الترابط التشعبي على الجهاز الظاهري - سيحتاج العملاء الذين يشغلون تعليمات برمجية غير موثوقة على جهاز ظاهري مترابط تشعبياً إلى تعطيل الترابط التشعبي أو الانتقال إلى جهاز ظاهري غير مترابط تشعبياً. راجع هذا المستند للحصول على قائمة أحجام الأجهزة الظاهرية المترابطة تشعبياً (تكون نسبة vCPU إلى Core فيها 2:1). للتحقق مما إذا كنت تشغِل جهازًا ظاهريًا مترابطًا تشعبيًا، فشغِل lscpu
الأمر في الأجهزة الظاهرية التي تعمل بنظام التشغيل Linux.
في حالة Thread(s) per core = 2
، فإن الترابط التشعبي ممكَّن.
في حالة Thread(s) per core = 1
، فإن الترابط التشعبي معطل.
نموذج عن البيانات المخرجة من جهاز ظاهري مع تمكين الترابط التشعبي:
CPU Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 2
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
في حالة تشغيل جهاز ظاهري مترابط تشعبيًا، اتصل بدعم Azure لتعطيل الترابط التشعبي. بمجرد تعطيل الترابط التشعبي، سيطلب الدعم إعادة تشغيل الجهاز الظاهري بالكامل. ارجع إلى عدد الذواكر الأساسية لمعرفة سبب انخفاض عدد الذواكر الأساسية لجهازك الظاهري.
الخطوة 2: للتخفيف من أي من الثغرات الأمنية في الذاكرة المستندة إلى وحدة المعالجة المركزية أدناه، راجع وثائق موفر نظام التشغيل:
عدد الذاكرات الأساسية
عند إنشاء جهاز ظاهري مترابط تشعبياً، يخصص Azure مؤشرين تربط لكل ذاكرة أساسية - ويسمى هذا vCPU. عند تعطيل الترابط التشعبي، يزيل Azure مؤشر ترابط ويعرض الذاكرات الأساسية المترابطة المفردة (الذاكرات الأساسية الفعلية). إن نسبة vCPU إلى CPU هي 2:1، لذلك بمجرد تعطيل الترابط التشعبي، سيظهر عدد CPU في الجهاز الظاهري أنه انخفض بمقدار النصف. على سبيل المثال، إن الجهاز الظاهري D8_v3 هو جهاز ظاهري مترابط تشعبياً يعمل على 8 vCPU (مؤشرا ترابط لكل ذاكرة أساسية في 4 ذاكرات أساسية). عند تعطيل الترابط التشعبي، ستنخفض وحدات CPU إلى 4 ذاكرات أساسية فعلية مع مؤشر ترابط واحد لكل ذاكرة أساسية.
الخطوات التالية
لمزيد من المعلومات عن كيفية تكامل الأمان في كل جانب من جوانب Azure، راجع وثائق أمان Azure.