مشاركة عبر


مرجع الحماية من استغلال

توفر الحماية من الهجمات حماية متقدمة للتطبيقات التي يمكن لمسؤولي المؤسسات ومحترفي تكنولوجيا المعلومات تطبيقها بعد قيام المطور بتجميع البرامج وتوزيعها.

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

كيفية تطبيق عوامل التخفيف من المخاطر

يتم تطبيق عوامل تخفيف الحماية من الهجمات لكل تطبيق.

يتم تكوين عوامل تخفيف المخاطر عبر إدخال تسجيل لكل برنامج تقوم بتكوين الحماية له. يتم تخزين هذه الإعدادات في إدخال سجل MitigationOptions لكل برنامج (HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\*ImageFileName*\MitigationOptions). تصبح سارية المفعول عند إعادة تشغيل البرنامج، وتظل فعالة حتى تقوم بتغييرها وإعادة تشغيل البرنامج مرة أخرى.

هام

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

إذا قمت بتكوين عوامل تخفيف الحماية من الهجمات باستخدام ملف تكوين XML باستخدام PowerShell أو نهج المجموعة أو MDM، عند معالجة ملف تكوين XML هذا، يتم تكوين إعدادات التسجيل الفردية لك.

إعادة تعيين الحماية من الاستغلال

هام

عندما لا يتم فرض النهج الذي يوزع ملف XML، لن تتم إزالة الإعدادات التي تم نشرها بواسطة ملف تكوين XML هذا تلقائيا.

لإزالة إعدادات الحماية من الهجمات، قم بتصدير تكوين XML من جهاز Windows 10 نظيف أو Windows 11، وانشر ملف XML الجديد هذا. بدلا من ذلك، توفر Microsoft ملف XML كجزء من خطوط الأساس أمن Windows لإعادة تعيين إعدادات الحماية من الهجمات.

لإعادة تعيين إعدادات الحماية من الهجمات باستخدام PowerShell، استخدم الأمر التالي:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

فيما يلي EP-reset.xml الموزع مع الخطوط الأساسية الخاصة بأمان Windows:

<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <AppConfig Executable="ONEDRIVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR OverrideRelocateImages="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
  </AppConfig>
  <AppConfig Executable="firefox.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
  </AppConfig>
  <AppConfig Executable="fltldr.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="GROOVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="Acrobat.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="AcroRd32.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="chrome.exe">
    <DEP OverrideDEP="false" />
  </AppConfig>
  <AppConfig Executable="EXCEL.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="iexplore.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="INFOPATH.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="java.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaw.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaws.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="LYNC.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSACCESS.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSPUB.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OIS.EXE">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OUTLOOK.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="plugin-container.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="POWERPNT.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="PPTVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VISIO.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VPREVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="WINWORD.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wmplayer.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wordpad.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
</MitigationPolicy>

مرجع عوامل تخفيف المخاطر

تشرح الأقسام التالية بالتفصيل إجراءات الحماية التي يوفرها كل عامل تخفيف المخاطر للحماية من الهجمات واعتبارات توافق تخفيف المخاطر وخيارات التكوين المتوفرة.

حماية التعليمات البرمجية العشوائية

الوصف

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

يحمي حماية التعليمات البرمجية العشوائية التطبيق من تنفيذ التعليمات البرمجية التي تم إنشاؤها ديناميكيا (التعليمات البرمجية التي لم يتم تحميلها، على سبيل المثال، من exe نفسه أو dll). تعمل حماية التعليمات البرمجية العشوائية عن طريق منع وضع علامة قابل للتنفيذ على الذاكرة. عندما يحاول أحد التطبيقات تخصيص الذاكرة، نتحقق من علامات الحماية. (يمكن تخصيص الذاكرة مع علامات الحماية للقراءة والكتابة و/أو التنفيذ.) إذا حاول التخصيص تضمين علامة الحماية للتنفيذ، فسيفشل تخصيص الذاكرة ويرجع رمز خطأ (STATUS_DYNAMIC_CODE_BLOCKED). وبالمثل، إذا حاول أحد التطبيقات تغيير علامات الحماية للذاكرة التي تم تخصيصها بالفعل وتتضمن علامة الحماية للتنفيذ، فسيفشل تغيير الإذن ويرجع رمز خطأ (STATUS_DYNAMIC_CODE_BLOCKED).

من خلال منع تعيين علامة التنفيذ، يمكن لميزة منع تنفيذ البيانات في Windows 10 وWindows 11 الحماية من مؤشر الإرشادات الذي يتم تعيينه إلى تلك الذاكرة وتشغيل هذا الرمز.

اعتبارات التوافق

تمنع حماية التعليمات البرمجية العشوائية تخصيص أي ذاكرة كقابلة للتنفيذ، مما يعرض مشكلة توافق مع نهج مثل المحول البرمجي في الوقت المناسب (JIT). تقوم معظم المستعرضات الحديثة، على سبيل المثال، بتجميع JavaScript في التعليمات البرمجية الأصلية من أجل تحسين الأداء. من أجل دعم هذا التخفيف، يجب إعادة تصميمها لنقل التحويل البرمجي JIT خارج العملية المحمية. التطبيقات الأخرى التي ينشئ تصميمها تعليمة برمجية ديناميكيا من البرامج النصية أو اللغات الوسيطة الأخرى غير متوافقة بالمثل مع هذا التخفيف.

خيارات التكوين

السماح بإلغاء اشتراك مؤشر الترابط - يمكنك تكوين التخفيف للسماح لمؤشر ترابط فردي بإلغاء الاشتراك في هذه الحماية. يجب على المطور كتابة التطبيق مع الوعي بتخفيف المخاطر هذا، واستدعاء واجهة برمجة تطبيقات SetThreadInformation مع تعيين معلمة ThreadInformation إلى ThreadDynamicCodePolicy من أجل السماح بتنفيذ التعليمات البرمجية الديناميكية على مؤشر الترابط هذا.

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Defender for Endpoint.

حظر الصور منخفضة التكامل

الوصف

يمنع حظر صور التكامل المنخفض التطبيق من تحميل الملفات غير الموثوق بها، عادة لأنه تم تنزيلها من الإنترنت من مستعرض آلية تحديد الوصول.

يمنع التخفيف هذا تحميل الصورة إذا كانت الصورة تحتوي على إدخال التحكم في الوصول (ACE) الذي يمنح الوصول إلى عمليات IL المنخفضة والتي لا تحتوي على تسمية ثقة ACE. يتم تنفيذه من قبل مدير الذاكرة، والذي يمنع تعيين الملف إلى الذاكرة. إذا حاول أحد التطبيقات تعيين صورة تكامل منخفضة، فإنه يؤدي إلى خطأ STATUS_ACCESS_DENIED. للحصول على تفاصيل حول كيفية عمل مستويات التكامل، راجع "التحكم في التكامل الإلزامي".

اعتبارات التوافق

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

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

حظر الصور البعيدة

الوصف

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

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

اعتبارات التوافق

منع الصور البعيدة منع التطبيق من تحميل الصور من الأجهزة البعيدة. إذا كان تطبيقك يقوم بتحميل الملفات أو المكونات الإضافية من الأجهزة البعيدة، فلن يكون متوافقًا مع هذا التخفيف.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

حظر الخطوط غير الموثوقة

الوصف

يؤدي حظر الخطوط غير الموثوق بها إلى تقليل خطر حدوث خلل في تحليل الخطوط مما يؤدي إلى قدرة المهاجم على تشغيل التعليمات البرمجية على الجهاز. سيتم تحميل الخطوط المثبتة في دليل windows\fonts فقط للمعالجة بواسطة GDI.

يتم تنفيذ هذا التخفيف داخل GDI، الذي يتحقق من موقع الملف. إذا لم يكن الملف في دليل خطوط النظام، فلن يتم تحميل الخط لتحليله وسيفشل الاستدعاء.

هذا التخفيف بالإضافة إلى التخفيف المضمن المتوفر في Windows 10 1607 والإصدار الأحدث، وWindows 11، الذي ينقل تحليل الخط خارج kernel وإلى حاوية تطبيق وضع المستخدم. ونتيجة لذلك، يحدث أي استغلال يستند إلى تحليل الخط في سياق معزول وبيئة الاختبار المعزولة، مما يقلل من المخاطر بشكل ملحوظ. للحصول على تفاصيل حول هذا التخفيف، راجع لمدونة تعزيز Windows 10 مع تخفيف الهجمات لثغرة أمنية أولية.

اعتبارات التوافق

الاستخدام الأكثر شيوعًا للخطوط خارج دليل خطوط النظام هو مع خطوط الويب. تستخدم المستعرضات الحديثة، مثل Microsoft Edge، DirectWrite بدلا من GDI، ولا تتأثر. ومع ذلك، يمكن أن تتأثر المستعرضات القديمة، مثل Internet Explorer 11 (ووضع IE في Microsoft Edge الجديد)، خاصة مع تطبيقات مثل Office 365، التي تستخدم صور الخطوط لعرض واجهة المستخدم.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

حماية تكامل التعليمات البرمجية

الوصف

يضمن "حماية تكامل التعليمات البرمجية" توقيع كل الثنائيات التي تم تحميلها في عملية رقميًا من قبل Microsoft. يتضمن حماية تكامل التعليمات البرمجية توقيعات WHQL (مختبرات جودة أجهزة Windows)، والتي تسمح بتشغيل برامج التشغيل المعتمدة من WHQL ضمن العملية.

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

اعتبارات التوافق

يمنع هذا التخفيف على وجه التحديد أي ثنائي لم يتم توقيعه من قبل Microsoft. على هذا النحو، فإنه غير متوافق مع معظم البرامج غير التابعة ل Microsoft، ما لم يتم توزيع هذا البرنامج بواسطة (وموقع رقميا من قبل) Microsoft Store، ويتم تحديد خيار السماح بتحميل الصور الموقعة من قبل Microsoft Store.

خيارات التكوين

السماح أيضا بتحميل الصور الموقعة من قبل Microsoft Store - التطبيقات التي يتم توزيعها بواسطة Microsoft Store موقعة رقميا من قبل Microsoft Store، وتسمح إضافة هذا التكوين بتحميل الثنائيات التي تمر بعملية شهادة المتجر بواسطة التطبيق.

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

حماية تدفق التحكم (CFG)

الوصف

يعمل التحكم في حماية التدفق (CFG) على تقليل مخاطر المهاجمين الذين يستخدمون الثغرات الأمنية في تلف الذاكرة من خلال حماية عمليات استدعاء الوظائف غير المباشرة. على سبيل المثال، قد يستخدم المهاجم ثغرة أمنية تتجاوز سعة المخزن المؤقت للكتابة فوق الذاكرة التي تحتوي على مؤشر دالة، واستبدال مؤشر الدالة هذا بمشير إلى تعليمات برمجية قابلة للتنفيذ من اختياره (والتي يمكن أيضا إدخالها في البرنامج).

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

يتم توفير التحقق من وجود هدف صالح بواسطة kernel في Windows. عند تحميل الملفات القابلة للتنفيذ، يتم استخراج بيانات التعريف لأهداف المكالمات غير المباشرة في وقت التحميل ويتم وضع علامة عليها كأهداف استدعاء صالحة. بالإضافة إلى ذلك، عند تخصيص الذاكرة ووضع علامة عليها كقابلة للتنفيذ (مثل التعليمات البرمجية التي تم إنشاؤها)، يتم أيضا وضع علامة على مواقع الذاكرة هذه كأهداف استدعاء صالحة، لدعم آليات مثل التحويل البرمجي JIT.

اعتبارات التوافق

نظرا لأنه يجب تجميع التطبيقات لدعم CFG، فإنها تعلن ضمنيا توافقها معها. لذلك، يجب أن تعمل معظم التطبيقات مع تمكين التخفيف هذا. نظرا لأن هذه الاختبارات تم تجميعها برمجيا في الثنائي، فإن التكوين الذي يمكنك تطبيقه هو فقط لتعطيل عمليات التحقق داخل kernel في Windows. بمعنى آخر، يكون التخفيف قيد التشغيل بشكل افتراضي، ولكن يمكنك تكوين نواة Windows لإرجاع "نعم" دائما إذا حددت لاحقا أن هناك مشكلة توافق لم يكتشفها مطور التطبيق في اختباره، والتي يجب أن تكون نادرة.

خيارات التكوين

استخدام CFG صارم - في الوضع المقيد، يجب تجميع جميع الثنائيات التي تم تحميلها في العملية برمجيا ل Control Flow Guard (أو ليس بها أي تعليمات برمجية قابلة للتنفيذ - مثل dlls للمورد) ليتم تحميلها.

ملاحظة

لا تحتويحماية تدفق عنصر التحكم على وضع تدقيق. يتم تجميع الثنائيات مع تمكين التخفيف هذا.

منع تنفيذ التعليمات البرمجية (DEP)

الوصف

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

إذا حاولت تعيين مؤشر التعليمات إلى عنوان ذاكرة لم يتم وضع علامة عليه على أنه قابل للتنفيذ، فإن المعالج يطرح استثناء (انتهاك الحماية العامة)، مما يتسبب في تعطل التطبيق.

اعتبارات التوافق

تم تمكين DEP بشكل افتراضي لجميع الملفات التنفيذية x64 وARM وArm64، ولا يمكن تعطيلها. نظرا لأنه لا يتم تنفيذ تطبيق بدون DEP، يتم افتراض التوافق.

تحتوي جميع ثنائيات x86 (32 بت) على ميزة "منع تنفيذ التعليمات البرمجية" ممكنة بشكل افتراضي، ولكن يمكن تعطيل ميزة "منع تنفيذ التعليمات البرمجية" لكل عملية. قد لا تكون بعض التطبيقات القديمة، عادة التطبيقات التي تم تطويرها قبل Windows XP SP2، متوافقة مع DEP. تقوم هذه التطبيقات عادة بإنشاء التعليمات البرمجية ديناميكيا (على سبيل المثال، تجميع JIT) أو الارتباط بمكتبات قديمة (مثل الإصدارات القديمة من ATL) التي تقوم بإنشاء التعليمات البرمجية ديناميكيا.

خيارات التكوين

تمكين مضاهاة ATL Thunk - يؤدي خيار التكوين هذا إلى تعطيل مضاهاة ATL Thunk. تم تصميم ATL، مكتبة قوالب ActiveX، لتكون صغيرة وسريعة قدر الإمكان. لتقليل الحجم الثنائي، سيستخدم تقنية تسمى twinking. عادة ما يتم التفكير في استخدام Toneking للتفاعل بين تطبيقات 32 بت و16 بت، ولكن لا توجد مكونات 16 بت ل ATL هنا. بدلا من ذلك، من أجل تحسين الحجم الثنائي، يخزن ATL التعليمات البرمجية للجهاز في الذاكرة غير المتوافقة مع الكلمات (إنشاء ثنائي أصغر)، ثم استدعاء هذه التعليمة البرمجية مباشرة. لا تخصص مكونات ATL التي تم تجميعها باستخدام Visual Studio 7.1 أو إصدار سابق (Visual Studio 2003) هذه الذاكرة على أنها قابلة للتنفيذ - يحل محاكاة thunk مشكلة التوافق هذه. يجب تمكين محاكاة ATL Thunk للتطبيقات التي تحتوي على نموذج ملحق ثنائي (مثل Internet Explorer 11).

تعطيل نقاط الملحق

الوصف

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

يشمل ذلك:

  • AppInit DLLs - كلما بدأت عملية، يقوم النظام بتحميل DLL المحدد في سياق العملية التي بدأت حديثا قبل استدعاء دالة نقطة الإدخال الخاصة به. يمكن العثور على تفاصيل حول AppInit DLLs هنا. مع تطبيق هذا التخفيف، لا يتم تحميل AppInit DLLs. بدءا من Windows 7، يجب توقيع AppInit DLLs رقميا، كما هو موضح هنا. بالإضافة إلى ذلك، بدءا من Windows 8، لن يتم تحميل AppInit DLLs إذا تم تمكين SecureBoot، كما هو موضح هنا.
  • IMEs القديمة - يسمح محرر أسلوب الإدخال (IME) للمستخدم بكتابة نص بلغة تحتوي على أحرف أكثر من التي يمكن تمثيلها على لوحة المفاتيح. يمكن للجهات الخارجية إنشاء IMEs. قد يحصل محرر أسلوب الإدخال الضار على بيانات اعتماد أو معلومات حساسة أخرى من لقطة الإدخال هذه. تعمل بعض IMEs، التي يشار إليها باسم IMEs القديمة، فقط على تطبيقات سطح مكتب Windows، وليس تطبيقات UWP. يمنع تخفيف المخاطر هذا أيضا تحميل IME القديم هذا في تطبيق Windows Desktop المحدد.
  • خطافات أحداث Windows - يمكن للتطبيق استدعاء واجهة برمجة تطبيقات SetWinEventHook لتسجيل الاهتمام بحدث يحدث. يتم تحديد DLL ويمكن إدخاله في العملية. يفرض التخفيف هذا الخطاف ليتم نشره في عملية التسجيل بدلا من التشغيل قيد المعالجة من خلال مكتبة الارتباط الديناميكي (DLL) التي تم إدخالها.

اعتبارات التوافق

تستخدم معظم نقاط الامتداد هذه بشكل غير متكرر نسبيا، لذلك يكون تأثير التوافق صغيرا عادة، خاصة على مستوى التطبيق الفردي. يتمثل الاعتبار الوحيد في ما إذا كان المستخدمون يستخدمون IMEs غير القديمة من Microsoft التي لن تعمل مع التطبيق المحمي.

خيارات التكوين

لا توجد خيارات تكوين لتخفيف هذه المخاطر.

ملاحظة

لا يحتوي تعطيل نقاط الملحق على وضع تدقيق.

تعطيل مكالمات نظام Win32k

الوصف

يوفر Win32k.sys مساحة هجوم واسعة لمهاجم. كمكون وضع kernel، يتم استهدافه بشكل متكرر كمتجه للهروب للتطبيقات التي تم وضع آلية تحديد الوصول لها. يمنع التخفيف هذا الاستدعاءات إلى win32k.sys عن طريق حظر مؤشر ترابط من تحويل نفسه إلى مؤشر ترابط GUI، والذي يتم منحه بعد ذلك حق الوصول لاستدعاء دالات Win32k. مؤشر الترابط ليس واجهة GUI عند إنشائه، ولكنه يتم تحويله عند أول استدعاء إلى win32k.sys، أو من خلال استدعاء API ل IsGuiThread.

اعتبارات التوافق

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

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

عدم السماح بالعمليات التابعة

الوصف

يمنع التخفيف هذا أحد التطبيقات من إنشاء تطبيقات تابعة جديدة. إحدى التقنيات الشائعة التي يستخدمها المتطفلون هي بدء عملية موثوق بها على الجهاز باستخدام إدخال ضار (هجوم "تعيش على الأرض")، والذي غالبا ما يتطلب تشغيل تطبيق آخر على الجهاز. إذا لم تكن هناك أي أسباب قانونية وراء قيام أحد التطبيقات بتشغيل عملية تابعة، فإن التخفيف من حدة هذا يقلل من خط الهجوم المحتمل هذا. يتم تطبيق التخفيف عن طريق تعيين خاصية على الرمز المميز للعملية، مما يؤدي إلى حظر إنشاء رمز مميز للعملية التابعة مع رسالة الخطأ STATUS_CHILD_PROCESS_BLOCKED.

اعتبارات التوافق

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

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

تصدير عوامل تصفية العنوان (EAF)

الوصف

تعمل تصفية عنوان التصدير (EAF) على تقليل مخاطر التعليمات البرمجية الضارة التي تنظر إلى جدول عنوان التصدير لكافة الوحدات النمطية التي تم تحميلها للعثور على الوحدات النمطية التي تحتوي على واجهات برمجة تطبيقات مفيدة للهجوم. هذا أسلوب شائع يستخدمه shellcode. للتخفيف من مخاطر مثل هذا الهجوم، يحمي هذا التخفيف ثلاث وحدات نمطية شائعة الهجوم:

  • ntdll.dll
  • kernelbase.dll
  • kernel32.dll

يحمي التخفيف صفحة الذاكرة في [دليل التصدير الذي يشير إلى جدول عنوان التصدير. تحتوي صفحة الذاكرة هذه على الحماية PAGE_GUARD المطبقة عليها. عندما يحاول شخص ما الوصول إلى هذه الذاكرة، فإنه ينشئ STATUS_GUARD_PAGE_VIOLATION. يعالج التخفيف هذا الاستثناء، وإذا لم تنجح تعليمات الوصول في التحقق من الصحة، يتم إنهاء العملية.

اعتبارات التوافق

هذا التخفيف هو في الأساس مشكلة للتطبيقات مثل مصححات الأخطاء أو تطبيقات آلية تحديد الوصول أو التطبيقات التي تستخدم DRM أو التطبيقات التي تطبق تقنية مكافحة تصحيح الأخطاء.

خيارات التكوين

التحقق من صحة الوصول إلى الوحدات النمطية التي يتم إساءة استخدامها بشكل شائع من قبل عمليات الاستغلال - يضيف هذا الخيار، المعروف أيضا باسم EAF+، الحماية للوحدات النمطية الأخرى التي تتعرض للهجوم بشكل شائع:

  • mshtml.dll
  • flash*.ocx
  • jscript*.ocx
  • vbscript.dll
  • vgx.dll
  • mozjs.dll
  • xul.dll
  • acrord32.dll
  • acrofx32.dll
  • acroform.api

بالإضافة إلى ذلك، من خلال تمكين EAF+، يضيف هذا التخفيف حماية PAGE_GUARD إلى الصفحة التي تحتوي على عنوان "MZ"، أول 2 بايت من رأس DOS في ملف PE، وهذا جانب من محتوى الذاكرة المعروف الذي يمكن أن يبحث عنه shellcode من أجل تحديد الوحدات النمطية المثيرة للاهتمام المحتملة في الذاكرة.

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

فرض إعادة الترتيب العشوائي للصور (ASLR إلزامي)

الوصف

تخفف عشوائية تخطيط مساحة العنوان (ASLR) من مخاطر المهاجم باستخدام معرفته لتخطيط ذاكرة النظام من أجل تنفيذ التعليمات البرمجية الموجودة بالفعل في ذاكرة العملية وتم وضع علامة عليها بالفعل كملف تنفيذي. يمكن أن يقلل هذا من مخاطر المهاجم باستخدام أساليب مثل هجمات العودة إلى libc، حيث يقوم المتطفل بتعيين السياق ثم تعديل عنوان الإرجاع لتنفيذ التعليمات البرمجية الموجودة مع السياق الذي يناسب غرض الخصم.

يفرض ASLR الإلزامي إعادة قاعدة لكافة DLL داخل العملية. يمكن للمطور تمكين ASLR باستخدام خيار /DYNAMICBASE linker، وهذا التخفيف له نفس التأثير.

عندما يقوم مدير الذاكرة بتعيين الصورة في العملية، ستقوم ASLR الإلزامية بإعادة إنشاء DLLs و EXEs التي لم تشترك في ASLR. لاحظ، على الرغم من ذلك، أن إعادة التكبير هذه لا تحتوي على إنتروبيا، وبالتالي يمكن وضعها في موقع يمكن التنبؤ به في الذاكرة. بالنسبة إلى الموقع العشوائي والمعاد تعيينه للثنائيات، يجب إقران هذا التخفيف بتخصيصات الذاكرة العشوائية (ASLR من الأسفل إلى الأعلى).

اعتبارات التوافق

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

خيارات التكوين

لا تسمح بالصور المجردة - يمنع هذا الخيار تحميل الصور التي تم تجريد معلومات النقل منها. يحتوي تنسيق ملف Windows PE على عناوين مطلقة، ويقوم المحول البرمجي أيضا بإنشاء [جدول نقل أساسي يمكن للمحمل استخدامه للعثور على جميع مراجع الذاكرة النسبية وإزاحتها، بحيث يمكن تحديثها إذا لم يتم تحميل الثنائي على عنوانه الأساسي المفضل. تقوم بعض التطبيقات القديمة بتجريد هذه المعلومات في إصدارات الإنتاج، وبالتالي لا يمكن إعادة بناء هذه الثنائيات. يؤدي هذا التخفيف إلى منع تحميل هذه الثنائيات (بدلا من السماح لها بالتحميل على عنوانها الأساسي المفضل).

ملاحظة

فرض العشوائية للصور (ASLR الإلزامي) ليس له وضع تدقيق.

حماية المكدس المفروض على الأجهزة

الوصف

توفر حماية المكدس التي تفرضها الأجهزة حماية قوية ضد عمليات استغلال ROP لأنها تحتفظ بسجل لتدفق التنفيذ المقصود للبرنامج. لضمان اعتماد النظام البيئي السلس وتوافق التطبيقات، يوفر Windows هذه الحماية كنموذج اشتراك، حتى يتمكن المطورون من تلقي هذه الحماية، بالسرعة التي تناسبك.

اعتبارات التوافق

تعمل حماية المكدس المفروضة على الأجهزة فقط على مجموعات الشرائح مع دعم مكدسات الظل للأجهزة أو تقنية فرض تدفق التحكم (CET) أو مكدسات الظل AMD من Intel.

إذا قمت بتشغيل التطبيقات استنادا إلى .NET Framework، فإن حماية المكدس المفروضة على الأجهزة تعمل مع .NET Framework 7 (الاشتراك) أو الأحدث. إذا كنت تستخدم إصدارا قديما، فقد تواجه تعطلا أو استخداما عاليا لوحدة المعالجة المركزية. يمكن أن تحدث هذه المشكلات أيضا في وضع التدقيق أو عند استهداف الوحدات المتوافقة فقط.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Defender for Endpoint.

فرض لكافة الوحدات النمطية بدلا من الوحدات النمطية المتوافقة - يمكنك تمكين هذا التخفيف من المخاطر لفرض لكافة الوحدات النمطية بدلا من الوحدات المتوافقة.

استيراد عوامل تصفية العنوان (IAF)

الوصف

يساعد تقليل مخاطر تصفية عنوان الاستيراد (IAF) على تقليل مخاطر تغيير الخصم لتدفق التحكم في أحد التطبيقات عن طريق تعديل جدول عنوان الاستيراد (IAT) لإعادة التوجيه إلى التعليمات البرمجية العشوائية لاختيار المهاجم عند استدعاء هذه الدالة. يمكن للمهاجم استخدام هذا النهج لسرقة التحكم، أو لاعتراض المكالمات وفحصها وحظرها لواجهات برمجة التطبيقات الحساسة.

تحتوي صفحات الذاكرة لجميع واجهات برمجة التطبيقات المحمية على الحماية PAGE_GUARD المطبقة عليها. عندما يحاول شخص ما الوصول إلى هذه الذاكرة، فإنه ينشئ STATUS_GUARD_PAGE_VIOLATION. يعالج التخفيف هذا الاستثناء، وإذا لم تنجح تعليمات الوصول في التحقق من الصحة، يتم إنهاء العملية.

يحمي هذا التخفيف واجهات برمجة تطبيقات Windows التالية:

  • GetProcAddress
  • GetProcAddressForCaller
  • LoadLibraryA
  • LoadLibraryExA
  • LoadLibraryW
  • LoadLibraryExW
  • LdrGetProcedureAddress
  • LdrGetProcedureAddressEx
  • LdrGetProcedureAddressForCaller
  • LdrLoadDll
  • VirtualProtect
  • VirtualProtectEx
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • NtProtectVirtualMemory
  • CreateProcessA
  • CreateProcessW
  • WinExec
  • CreateProcessAsUserA
  • CreateProcessAsUserW
  • GetModuleHandleA
  • GetModuleHandleW
  • RtlDecodePointer
  • DecodePointer

اعتبارات التوافق

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

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

ترتيب تخصيصات الذاكرة عشوائيًا (ASLR من أسفل لأعلى)

الوصف

تضيف تخصيصات الذاكرة العشوائية (ASLR من الأسفل إلى الأعلى) إنتروبيا إلى عمليات تغيير الموقع، بحيث يكون موقعها عشوائيا وبالتالي أقل قابلية للتنبؤ. يتطلب التخفيف هذا أن يصبح ASLR الإلزامي ساري المفعول.

يضع حجم مساحة العنوان 32 بت قيودا عملية على الإنتروبيا التي يمكن إضافتها، وبالتالي تجعل تطبيقات 64 بت من الصعب على المهاجم تخمين موقع في الذاكرة.

اعتبارات التوافق

تتوافق معظم التطبيقات المتوافقة مع ASLR الإلزامي (rebasing) أيضًا مع الإدخالات الأخرى الخاصة ب ASLR من الأسفل إلى الأعلى. قد تواجه بعض التطبيقات مشكلات في اقتطاع المؤشر إذا كانت تحفظ المؤشرات المحلية في متغيرات 32 بت (توقع عنوان أساسي أقل من 4 غيغابايت)، وبالتالي ستكون غير متوافقة مع خيار الإنتروبيا العالي (الذي يمكن تعطيله).

خيارات التكوين

لا تستخدم إنتروبيا مرتفعة - يقوم هذا الخيار بتعطيل استخدام ASLR عالي الإنتروب، الذي يضيف 24 بت من الإنتروب (1 تيرابايت من التباين) إلى التخصيص من الأسفل إلى الأعلى لتطبيقات 64 بت.

ملاحظة

لا يحتويتخصيصات الذاكرة العشوائية (ASLR من أسفل إلى أعلى) على وضع تدقيق.

محاكاة التنفيذ (SimExec)

الوصف

يعد تنفيذ محاكاة (SimExec) تقليلا لتطبيقات 32 بت فقط. يساعد هذا في التحقق من أن استدعاءات واجهات برمجة التطبيقات الحساسة تعود إلى وظائف المتصل الشرعية. يقوم بذلك عن طريق اعتراض المكالمات في واجهات برمجة التطبيقات الحساسة، ثم محاكاة تنفيذ واجهات برمجة التطبيقات هذه من خلال السير عبر إرشادات لغة التجميع المرمزة التي تبحث عن إرشادات RET، والتي يجب أن تعود إلى المتصل. ثم يفحص هذه الدالة وينتقل إلى الخلف في الذاكرة للعثور على إرشادات CALL السابقة لتحديد ما إذا كانت الدالة وإرشادات CALL مطابقة، وأنه لم يتم اعتراض RET.

واجهات برمجة التطبيقات التي تم اعتراضها بواسطة هذا التخفيف هي:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

إذا تم اكتشاف أداة ROP ذكية، يتم إنهاء العملية.

اعتبارات التوافق

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

هذا التخفيف غير متوافق مع التخفيف من الحماية من التعليمات البرمجية العشوائية.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

التحقق من صحة استدعاء واجهة برمجة التطبيقات API (CallerCheck)

الوصف

يعد التحقق من صحة استدعاء API (CallerCheck) تقليلا لتقنيات البرمجة الموجهة للإرجاع (ROP) التي تتحقق من استدعاء واجهات برمجة التطبيقات الحساسة من متصل صالح. يفحص التخفيف هذا عنوان المرسل الذي تم تمريره، ثم يقوم بفك التجميع للخلف بشكل عمودي للعثور على مكالمة أعلى عنوان الإرجاع لتحديد ما إذا كان هدف الاستدعاء يطابق المعلمة التي تم تمريرها إلى الدالة.

واجهات برمجة التطبيقات التي تم اعتراضها بواسطة هذا التخفيف هي:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

إذا تم اكتشاف أداة ROP ذكية، يتم إنهاء العملية.

اعتبارات التوافق

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

هذا التخفيف غير متوافق مع التخفيف من الحماية من التعليمات البرمجية العشوائية.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

التحقق من صحة سلاسل الاستثناء (SEHOP)

الوصف

التحقق من صحة سلاسل الاستثناءات (SEHOP) هي التخفيف من تقنية الاستغلال فوق معالج الاستثناء المنظم (SEH ). معالجة الاستثناءات المنظمة هي العملية التي يمكن للتطبيق من خلالها طلب معالجة استثناء معين. يتم تسلسل معالجات الاستثناءات معا، بحيث إذا اختار معالج استثناء واحد عدم معالجة استثناء معين، يمكن تمريره إلى معالج الاستثناء التالي في السلسلة حتى يقرر أحد المعالجات معالجته. نظرا لأن قائمة المعالج ديناميكية، يتم تخزينها على المكدس. يمكن للمهاجم استخدام ثغرة أمنية في تجاوز المكدس للكتابة فوق معالج الاستثناء باستخدام مؤشر للتعليمات البرمجية لاختيار المهاجم.

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

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

إذا فشلت عمليات التحقق من الصحة هذه، إحباط معالجة الاستثناءات، ولن تتم معالجة الاستثناء.

اعتبارات التوافق

تعد مشاكل التوافق مع SEHOP نادرة نسبيا. من غير الشائع أن يتخذ التطبيق تبعية لتلف سلسلة الاستثناءات. ومع ذلك، تتأثر بعض التطبيقات بالتغييرات الدقيقة في التوقيت، والتي قد تظهر كشرط تعارض يكشف عن خطأ كامن متعدد مؤشرات الترابط في التطبيق.

خيارات التكوين

ملاحظة

لا يحتوي التحقق من صحة سلاسل الاستثناءات (SEHOP) على وضع تدقيق.

التحقق من صحة استخدام المؤشر

الوصف

التحقق من صحة استخدام المعالجة هو تقليل يساعد على الحماية من المهاجم باستخدام مقبض موجود للوصول إلى عنصر محمي. المؤشر هو مرجع لعنصر محمي. إذا كانت التعليمات البرمجية للتطبيق تشير إلى مقبض غير صالح، فقد يشير إلى أن الخصم يحاول استخدام مقبض سجله مسبقا (ولكن أي حساب مرجعي للتطبيق لن يكون على علم به). إذا حاول التطبيق استخدام كائن غير صالح، بدلا من إرجاع فارغ ببساطة، يقوم التطبيق برفع استثناء (STATUS_INVALID_HANDLE).

يتم تطبيق هذا التخفيف تلقائيا على تطبيقات متجر Windows.

اعتبارات التوافق

من المحتمل أن تتأثر التطبيقات التي لم تتعقب مراجع المقبض بدقة، والتي لم تكن تغلف هذه العمليات في معالجات الاستثناءات، بهذا التخفيف.

خيارات التكوين

ملاحظة

لا يحتوي "التحقق من صحة استخدام المعالجة " على وضع تدقيق.

التحقق من صحة تكامل كومة الذاكرة المؤقتة

الوصف

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

  • منع تحرير مقبض HEAP
  • إجراء تحقق آخر من الصحة على رؤوس الكتلة الموسعة لتخصيصات كومة الذاكرة الخاصة بكعب الذاكرة
  • التحقق من أن تخصيصات كومة الذاكرة المؤقتة لم يتم وضع علامة عليها بالفعل على أنها قيد الاستخدام
  • إضافة صفحات حماية إلى التخصيصات الكبيرة ومقاطع كومة الذاكرة المؤقتة والفئات الفرعية التي تتجاوز الحد الأدنى للحجم

اعتبارات التوافق

يتم بالفعل تطبيق التخفيف هذا بشكل افتراضي على تطبيقات 64 بت وتطبيقات 32 بت التي تستهدف نظام التشغيل Windows Vista أو الإصدارات الأحدث. التطبيقات القديمة من Windows XP أو الإصدارات السابقة هي الأكثر عرضة للخطر، على الرغم من أن مشاكل التوافق نادرة.

خيارات التكوين

ملاحظة

لا يحتوي التحقق من صحة تكامل كومة الذاكرة المؤقتة على وضع تدقيق.

التحقق من صحة تكامل تبعية الصورة

الوصف

يساعد التحقق من صحة تقليل تبعية الصورة على الحماية من الهجمات التي تحاول استبدال التعليمات البرمجية ل dlls المرتبطة بشكل ثابت بواسطة ثنائيات Windows. تسيء تقنية زرع DLL آلية البحث الخاصة بالمحمل لإدخال تعليمات برمجية ضارة، والتي يمكن استخدامها لتشغيل التعليمات البرمجية الضارة في سياق مرتفع. عندما يقوم المحمل بتحميل ثنائي موقع من Windows، ثم يقوم بتحميل أي dlls يعتمد عليها الثنائي، يتم التحقق من هذه الثنائيات للتأكد من أنها أيضا موقعة رقميا كثنائي Windows. إذا فشلوا في التحقق من التوقيع، فلن يتم تحميل dll، ويطرح استثناء، مع إرجاع حالة STATUS_INVALID_IMAGE_HASH.

اعتبارات التوافق

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

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.

التحقق من صحة تكامل المكدس (StackPivot)

الوصف

يساعد التخفيف من صحة تكامل المكدس (StackPivot) على الحماية من هجوم Stack Pivot، وهو هجوم ROP حيث يقوم المهاجم بإنشاء مكدس زائف في ذاكرة كومة الذاكرة المؤقتة، ثم يخدع التطبيق للعودة إلى المكدس الزائف الذي يتحكم في تدفق التنفيذ.

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

واجهات برمجة التطبيقات التي تم اعتراضها بواسطة هذا التخفيف هي:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

اعتبارات التوافق

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

هذا التخفيف غير متوافق مع التخفيف من الحماية من التعليمات البرمجية العشوائية.

خيارات التكوين

التدقيق فقط - يمكنك تمكين هذا التخفيف في وضع التدقيق لقياس تأثير التوافق المحتمل على أحد التطبيقات. يمكن بعد ذلك عرض أحداث التدقيق إما في عارض الحدث أو باستخدام "التعقب المتقدم" في Microsoft Defender for Endpoint.