
Reptar, Downfall, Zenbleed, ZombieLoad, RIDL, Fallout, Foreshadow, Spectre, Meltdown مدقق الثغرات/التخفيف لنظامي لينكس وBSD
سكربت شل ذاتي لتقييم مرونة نظامك تجاه ثغرات التنفيذ العابر (CVE) التي نُشرت منذ أوائل 2018، مع تقديم إرشادات حول كيفية التخفيف منها.
| CVE | الاسم | الأسماء المستعارة |
|---|---|---|
| CVE-2017-5753 | تجاوز فحص الحدود (Bounds Check Bypass) | Spectre V1 |
| CVE-2017-5715 | حقن هدف الفرع (Branch Target Injection) | Spectre V2 |
| CVE-2017-5754 | تحميل ذاكرة التخزين المؤقت للبيانات المارقة (Rogue Data Cache Load) | Meltdown |
| CVE-2018-3640 | قراءة سجل النظام المارقة (Rogue System Register Read) | Variant 3a |
| CVE-2018-3639 | تجاوز المتجر التخميني (Speculative Store Bypass) | Variant 4, SSB |
| CVE-2018-3615 | خطأ طرفي L1 (L1 Terminal Fault) | Foreshadow (SGX) |
| CVE-2018-3620 | خطأ طرفي L1 (L1 Terminal Fault) | Foreshadow-NG (OS/SMM) |
| CVE-2018-3646 | خطأ طرفي L1 (L1 Terminal Fault) | Foreshadow-NG (VMM) |
| CVE-2018-12126 | أخذ عينات بيانات المخزن المؤقت المعماري الصغير (Microarchitectural Store Buffer Data Sampling) | MSBDS, Fallout |
| CVE-2018-12127 | أخذ عينات بيانات منفذ التحميل المعماري الصغير (Microarchitectural Load Port Data Sampling) | MLPDS, RIDL |
| CVE-2018-12130 | أخذ عينات بيانات المخزن المؤقت للملء المعماري الصغير (Microarchitectural Fill Buffer Data Sampling) | MFBDS, ZombieLoad |
| CVE-2018-12207 |
الإدخالات التالية هي أخطاء في السيليكون ARM64 يعمل النواة على تجاوزها بنشاط. ليس لها CVE مخصصة؛ يتم تتبعها فقط بأرقام الأخطاء من ARM. حددها باستخدام --errata <number> أو رمز --variant المرتبط.
| ID | الاسم | النوى المتأثرة |
|---|---|---|
| CVE-0001-0001 | تلف TLB التخميني لـ AT (أخطاء 1165522، 1319367، 1319537، 1530923) | Cortex-A55/A57/A72/A76 |
اعتمادًا على حالتك، يوضح الجدول أدناه ما إذا كان بإمكان المهاجم في موقع معين استخراج بيانات من هدف معين. ينطبق عمود "Userland → Kernel" أيضًا داخل VM (Userland لـ VM مقابل Kernel لـ VM)، نظرًا لأن نفس آليات وحدة المعالجة المركزية (CPU) قيد التشغيل بغض النظر عن المحاكاة الافتراضية.
💥 يمكن تسريب البيانات عبر هذه الحدود.
✅ غير متأثرة في هذا السيناريو.
☠️ حرمان من الخدمة (تعطل النظام أو سلوك غير متوقع)، لا تسريب للبيانات.
(1) يتطلب تسريب عبر العمليات تفعيل SMT (Hyper-Threading) — يجب أن يشارك المهاجم والضحية نواة مادية.
(2) يسرب فقط مخرجات RDRAND/RDSEED، وليس الذاكرة العشوائية؛ مع ذلك يسمح باستعادة المواد المشفرة من أي ضحية.
(3) CVE-2018-3615 (Foreshadow SGX) يعكس نموذج الثقة الطبيعي: يقوم نظام التشغيل بقراءة بيانات enclave لـ SGX. لا يكون ذا صلة إلا إذا كان النظام يشغل enclaves لـ SGX، ويجب أن يكون المهاجم قد حصل بالفعل على وصول على مستوى نظام التشغيل.
(4) ينطبق تسريب VM→Host فقط على بعض نماذج CPU المتأثرة (Skylake-X، Kaby Lake، Comet Lake). Ice Lake، Tiger Lake، و Rocket Lake تتأثر فقط لهجمات المستوى الأصلي (من المستخدم إلى النواة)، وليس من ضيف إلى مضيف.
CVE-2017-5753 — تجاوز فحص الحدود (Spectre Variant 1)
يمكن للمهاجم تدريب متنبئ الفرع (branch predictor) على التنبؤ الخاطئ لفحص الحدود، مما يتسبب في وصول وحدة المعالجة المركزية (CPU) تخمينيًا إلى ذاكرة خارج الحدود. يؤثر هذا على جميع البرامج، بما في ذلك النواة، لأن أي فحص حدود شرطي يمكن استغلاله. يتطلب التخفيف إعادة ترجمة البرامج والنواة باستخدام مترجم يقوم بإدراج تعليمات LFENCE (أو حواجز التخمين المماثلة مثل array_index_nospec) في المواضع المناسبة. تأثير الأداء ضئيل لأن الحواجز تنطبق فقط على أنماط تعليمات برمجية محددة ومستهدفة.
CVE-2017-5715 — حقن هدف الفرع (Spectre Variant 2)
يمكن للمهاجم تسميم مخزن أهداف الفرع (BTB) لإعادة توجيه التنفيذ التخميني للفروع غير المباشرة في النواة، مما يؤدي إلى تسريب ذاكرة النواة. توجد استراتيجيتان للتخفيف: (1) تحديثات الميكروكود التي توفر IBRS (Indirect Branch Restricted Speculation)، والتي تقوم بمسح حالة متنبئ الفرع عند انتقالات الامتياز — وهذا له تكلفة أداء متوسطة إلى عالية، خاصة على الأجهزة القديمة؛ أو (2) retpoline، وهي تقنية مترجم تستبدل الفروع غير المباشرة بتركيبة لا يستطيع المخمن استغلالها — وهذا له تكلفة أداء أقل ولكنه يتطلب إعادة ترجمة النواة والبرامج الحساسة.
CVE-2017-5754 — تحميل ذاكرة التخزين المؤقت للبيانات المارقة (Meltdown)
على معالجات Intel المتأثرة، يمكن لعملية مستخدم قراءة ذاكرة النواة تخمينيًا على الرغم من عدم وجود الإذن. في النهاية، يثير وحدة المعالجة المركزية (CPU) خطأً، لكن البيانات تترك آثارًا ملحوظة في ذاكرة التخزين المؤقت. التخفيف يكون بالكامل في جانب النواة: عزل جداول الصفحات (PTI/KPTI) يقوم بإلغاء تعيين معظم ذاكرة النواة من جداول صفحات مساحة المستخدم، لذلك لا يوجد شيء لقراءته تخمينيًا. تأثير الأداء منخفض إلى متوسط، ويرجع أساسًا إلى زيادة الضغط على TLB الناتج عن تبديل جداول الصفحات عند كل دخول وخروج من النواة.
CVE-2018-3640 — قراءة سجل النظام المارقة (Variant 3a)
مشابه لـ Meltdown ولكنه يستهدف سجلات النظام: يمكن لعملية غير مميزة قراءة قيم سجلات النظام المميزة تخمينيًا (مثل سجلات MSR) وإخراجها عبر قناة جانبية. يتطلب التخفيف تحديث الميكروكود فقط — لا حاجة لتغييرات في النواة. تأثير الأداء ضئيل.
CVE-2018-3639 — تجاوز المتجر التخميني (Variant 4)
قد تقوم وحدة المعالجة المركزية (CPU) بتحميل قيمة من الذاكرة تخمينيًا قبل أن يكتمل متجر سابق لنفس العنوان، مما يؤدي إلى قراءة بيانات قديمة. يؤثر هذا بشكل أساسي على البرامج التي تستخدم الترجمة في الوقت المناسب (JIT) (مثل محركات JavaScript، eBPF)، حيث يمكن للمهاجم صياغة كود يستغل الاعتماد بين المتجر والتحميل. لم يتم إثبات أي استغلال معروف ضد النواة نفسها. يتطلب التخفيف تحديث الميكروكود (الذي يوفر آلية SSBD) بالإضافة إلى تحديث النواة الذي يسمح للبرامج المتأثرة بالاشتراك في الحماية عبر prctl(). تأثير الأداء منخفض إلى متوسط، اعتمادًا على مدى تكرار تفعيل التخفيف.
العديد من CVEs التنفيذ العابر غير مغطاة بهذه الأداة، لأسباب مختلفة (مكررة، تؤثر فقط على أجهزة أو أنظمة تشغيل غير مدعومة، نظرية بدون استغلال معروف، إلخ). القائمة الكاملة مع سبب كل استبعاد متاحة في ملف UNSUPPORTED_CVE_LIST.md.
أنظمة التشغيل المدعومة:
بالنسبة لأنظمة Linux، ستكتشف الأداة التخفيفات، بما في ذلك التصحيحات غير الأصلية المنقولة (backported)، بغض النظر عن رقم إصدار النواة المعلن والتوزيع (مثل Debian, Ubuntu, CentOS, RHEL, Fedora, openSUSE, Arch, ...)، كما تعمل إذا قمت بتجميع نواتك الخاصة. مزيد من المعلومات هنا.
أنظمة التشغيل الأخرى مثل MacOS و Windows و ESXi وما إلى ذلك لن يتم دعمها أبدًا.
البنى المعمارية المدعومة:
x86 (32 بت)amd64/x86_64 (64 بت)ARM و ARM64ما هو الغرض من هذه الأداة؟ لماذا كتبت؟ كيف يمكن أن تكون مفيدة لي؟ كيف تعمل؟ ماذا يمكنني أن أتوقع منها؟
كل هذه الأسئلة (وغيرها) لها إجابات مفصلة في الأسئلة الشائعة، من فضلك ألقِ نظرة!
يدعم البرنامج النصي أربعة أوضاع تشغيل، اعتمادًا على ما إذا كنت تريد فحص النواة قيد التشغيل، أو صورة النواة، أو أجهزة وحدة المعالجة المركزية، أو مزيجًا.
في وضع المباشر (الافتراضي)، يفحص البرنامج النصي كلاً من وحدة المعالجة المركزية والنواة قيد التشغيل.
يمكنك اختياريًا تمرير --kernel أو --config أو --map لتوجيه البرنامج النصي إلى ملفات لم يتمكن من اكتشافها تلقائيًا.
في وضع بدون وقت تشغيل، لا يزال البرنامج النصي يقرأ وحدة المعالجة المركزية المحلية (CPUID, MSRs, البرنامج المصغر) لكنه يتخطى جميع آثار النواة قيد التشغيل (/sys, /proc, dmesg).
استخدم هذا عندما يكون لديك صورة نواة من نظام آخر ولكنك تريد تقييمها مقابل وحدة المعالجة المركزية الحالية.
في وضع بدون أجهزة، يتم تخطي كل من فحص وحدة المعالجة المركزية وآثار النواة قيد التشغيل تمامًا. هذا مفيد للتحليل عبر البنى المعمارية، على سبيل المثال فحص صورة نواة ARM على محطة عمل x86.
في وضع الأجهزة فقط، يقوم البرنامج النصي فقط بالإبلاغ عن معلومات وحدة المعالجة المركزية وتأثر الأجهزة لكل CVE، دون فحص أي نواة.
احصل على أحدث إصدار من البرنامج النصي باستخدام curl أو wget
curl -L https://meltdown.ovh -o spectre-meltdown-checker.sh
wget https://meltdown.ovh -O spectre-meltdown-checker.sh
افحص البرنامج النصي. أنت لا تقوم بتشغيل نصوص برمجية قمت بتنزيلها من الإنترنت بشكل أعمى، أليس كذلك؟
vim spectre-meltdown-checker.sh
عندما تكون مستعدًا، قم بتشغيل البرنامج النصي كجذر
chmod +x spectre-meltdown-checker.sh
sudo ./spectre-meltdown-checker.sh
باستخدام docker compose:```shell
docker compose build
docker compose run --rm spectre-meltdown-checker
لاحظ أنه في الإصدارات القديمة من docker، `docker-compose` هو أمر منفصل، لذلك قد تحتاج إلى استبدال ظهوري `docker compose` أعلاه بـ `docker-compose`.
استخدام `docker build` مباشرة:```shell
docker build -t spectre-meltdown-checker .
docker run --rm --privileged -v /boot:/boot:ro -v /dev/cpu:/dev/cpu:ro -v /lib/modules:/lib/modules:ro spectre-meltdown-checker

| استثناء فحص الآلة عند تغييرات حجم الصفحة (Machine Check Exception on Page Size Changes) |
| iTLB Multihit, No eXcuses |
| CVE-2019-11091 | أخذ عينات البيانات المعمارية الصغيرة للذاكرة غير المخزنة (Microarchitectural Data Sampling Uncacheable Memory) | MDSUM, RIDL |
| CVE-2019-11135 | إحباط TSX غير المتزامن (TSX Asynchronous Abort) | TAA, ZombieLoad V2 |
| CVE-2020-0543 | أخذ عينات بيانات المخزن المؤقت للسجل الخاص (Special Register Buffer Data Sampling) | SRBDS, CROSSTalk |
| CVE-2022-21123 | قراءة البيانات من المخازن المؤقتة المشتركة (Shared Buffers Data Read) | SBDR, MMIO Stale Data |
| CVE-2022-21125 | أخذ عينات البيانات من المخازن المؤقتة المشتركة (Shared Buffers Data Sampling) | SBDS, MMIO Stale Data |
| CVE-2022-21166 | الكتابة الجزئية لسجل الجهاز (Device Register Partial Write) | DRPW, MMIO Stale Data |
| CVE-2022-29900 | تنفيذ تخميني تعسفي للكود باستخدام تعليمات الإرجاع (Arbitrary Speculative Code Execution with Return Instructions) | Retbleed (AMD) |
| CVE-2022-29901 | تنفيذ تخميني تعسفي للكود باستخدام تعليمات الإرجاع (Arbitrary Speculative Code Execution with Return Instructions) | Retbleed (Intel), RSBA |
| CVE-2022-40982 | أخذ عينات بيانات التجميع (Gather Data Sampling) | Downfall, GDS |
| CVE-2023-20569 | أمان عنوان الإرجاع (Return Address Security) | Inception, SRSO |
| CVE-2023-20588 | تسريب بيانات تخميني بقسمة AMD على الصفر (AMD Division by Zero Speculative Data Leak) | DIV0 |
| CVE-2023-20593 | تسريب معلومات عبر العمليات (Cross-Process Information Leak) | Zenbleed |
| CVE-2023-23583 | مشكلة البادئة الزائدة (Redundant Prefix Issue) | Reptar |
| CVE-2023-28746 | أخذ عينات بيانات ملف السجل (Register File Data Sampling) | RFDS |
| CVE-2024-28956 | اختيار الهدف غير المباشر (Indirect Target Selection) | ITS |
| CVE-2024-36350 | هجوم المجدول العابر، قائمة المتجر (Transient Scheduler Attack, Store Queue) | TSA-SQ |
| CVE-2024-36357 | هجوم المجدول العابر، L1 (Transient Scheduler Attack, L1) | TSA-L1 |
| CVE-2025-40300 | توقع الفرع الراكد عند الخروج من VM (VM-Exit Stale Branch Prediction) | VMScape |
| CVE-2024-45332 | حقن الامتياز للفرع (Branch Privilege Injection) | BPI |
| CVE-2025-54505 | تسريب بيانات راكدة من مقسم الفاصلة العائمة AMD Zen1 (AMD Zen1 Floating-Point Divider Stale Data Leak) | FPDSS |
| CVE-0001-0002 |
| تحميل غير مميز تخميني (أخطاء 2966298، 3117295) |
| Cortex-A510/A520 |
| CVE-0001-0003 | SSBS لـ MSR غير متزامن ذاتيًا (خطأ 3194386 وأشقاؤه) | Cortex-A76/A77/A78/A78C/A710/A715/A720/A720AE/A725، X1/X1C/X2/X3/X4/X925، Neoverse-N1/N2/N3/V1/V2/V3/V3AE |
| الثغرة | Userland → Kernel | Userland → Userland | VM → Host | VM → VM | التخفيف |
|---|
| CVE-2017-5753 (Spectre V1) | 💥 | 💥 | 💥 | 💥 | إعادة ترجمة كل شيء مع LFENCE |
| CVE-2017-5715 (Spectre V2) | 💥 | 💥 | 💥 | 💥 | تحديث الميكروكود + النواة (أو retpoline) |
| CVE-2017-5754 (Meltdown) | 💥 | ✅ | ✅ | ✅ | تحديث النواة |
| CVE-2018-3640 (Variant 3a) | 💥 | ✅ | ✅ | ✅ | تحديث الميكروكود |
| CVE-2018-3639 (Variant 4, SSB) | ✅ | 💥 | ✅ | ✅ | تحديث الميكروكود + النواة |
| CVE-2018-3615 (Foreshadow, SGX) | ✅ (3) | ✅ (3) | ✅ (3) | ✅ (3) | تحديث الميكروكود |
| CVE-2018-3620 (Foreshadow-NG, OS/SMM) | 💥 | ✅ | ✅ | ✅ | تحديث النواة |
| CVE-2018-3646 (Foreshadow-NG, VMM) | ✅ | ✅ | 💥 | 💥 | تحديث النواة (أو تعطيل EPT/SMT) |
| CVE-2018-12126 (MSBDS, Fallout) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2018-12127 (MLPDS, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2018-12130 (MFBDS, ZombieLoad) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2018-12207 (iTLB Multihit, No eXcuses) | ✅ | ✅ | ☠️ | ✅ | تحديث الهايبرفايزر (أو تعطيل hugepages) |
| CVE-2019-11091 (MDSUM, RIDL) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2019-11135 (TAA, ZombieLoad V2) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2020-0543 (SRBDS, CROSSTalk) | 💥 (2) | 💥 (2) | 💥 (2) | 💥 (2) | تحديث الميكروكود + النواة |
| CVE-2022-21123 (SBDR, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2022-21125 (SBDS, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2022-21166 (DRPW, MMIO Stale Data) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2022-29900 (Retbleed AMD) | 💥 | ✅ | 💥 | ✅ | تحديث النواة (+ الميكروكود لـ IBPB) |
| CVE-2022-29901 (Retbleed Intel, RSBA) | 💥 | ✅ | 💥 | ✅ | تحديث الميكروكود + النواة (eIBRS أو IBRS) |
| CVE-2022-40982 (Downfall, GDS) | 💥 | 💥 | 💥 | 💥 | تحديث الميكروكود (أو تعطيل AVX) |
| CVE-2023-20569 (Inception, SRSO) | 💥 | ✅ | 💥 | ✅ | تحديث الميكروكود + النواة |
| CVE-2023-20588 (DIV0) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث النواة (+ تعطيل SMT) |
| CVE-2023-20593 (Zenbleed) | 💥 | 💥 | 💥 | 💥 | تحديث الميكروكود (أو حل بديل في النواة) |
| CVE-2023-23583 (Reptar) | ☠️ | ☠️ | ☠️ | ☠️ | تحديث الميكروكود |
| CVE-2023-28746 (RFDS) | 💥 | ✅ | 💥 | ✅ | تحديث الميكروكود + النواة |
| CVE-2024-28956 (ITS) | 💥 | ✅ | 💥 (4) | ✅ | تحديث الميكروكود + النواة |
| CVE-2024-36350 (TSA-SQ) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2024-36357 (TSA-L1) | 💥 | 💥 (1) | 💥 | 💥 (1) | تحديث الميكروكود + النواة |
| CVE-2025-40300 (VMScape) | ✅ | ✅ | 💥 | ✅ | تحديث النواة (IBPB عند الخروج من VM) |
| CVE-2024-45332 (BPI) | 💥 | ✅ | 💥 | ✅ | تحديث الميكروكود |
| CVE-2025-54505 (FPDSS) | 💥 | 💥 | 💥 | 💥 | تحديث النواة |
CVE-2018-3615 — خطأ طرفي L1 (Foreshadow, SGX)
يهاجم Foreshadow الأصلي enclaves لـ Intel SGX. عند مسح بت "الحاضر" (Present) في إدخال جدول الصفحات، قد تستخدم وحدة المعالجة المركزية (CPU) بشكل تخميني العنوان الفعلي في الإدخال لجلب البيانات من ذاكرة التخزين المؤقت L1، متجاوزة حماية SGX. يمكن للمهاجم استخراج الأسرار (مفاتيح التوثيق، البيانات المختومة) من enclaves لـ SGX. يتطلب التخفيف تحديث الميكروكود الذي يتضمن تعديلات على سلوك SGX. تأثير الأداء ضئيل.
CVE-2018-3620 — خطأ طرفي L1 (Foreshadow-NG, OS/SMM)
تعميم لـ Foreshadow خارج SGX: يمكن لكود مساحة المستخدم غير المميز استغلال نفس آلية L1TF لقراءة ذاكرة النواة أو ذاكرة وضع إدارة النظام (SMM). يتطلب التخفيف تحديث النواة الذي ينفذ عكس PTE — وضع علامات على إدخالات جداول الصفحات غير الحالية بعناوين فعلية غير صالحة بحيث لا يمكن لذاكرة التخزين المؤقت L1 احتواء بيانات مفيدة في تلك العناوين. تأثير الأداء ضئيل لأن عكس PTE هو تغيير لمرة واحدة في منطق إدارة جداول الصفحات بدون حمل زائد في وقت التشغيل.
CVE-2018-3646 — خطأ طرفي L1 (Foreshadow-NG, VMM)
يمكن لـ VM ضيف استغلال L1TF لقراءة ذاكرة تعود للمضيف أو ضيوف آخرين، لأن جداول صفحات الهايبرفايزر قد تحتوي على إدخالات غير حالية تشير إلى عناوين فعلية صالحة للمضيف لا تزال موجودة في L1. تشمل خيارات التخفيف: مسح ذاكرة التخزين المؤقت لبيانات L1 عند كل دخول إلى VM (عبر تحديث النواة الذي يوفر دعم مسح L1d)، تعطيل جداول الصفحات الموسعة (EPT)، أو تعطيل Hyper-Threading (SMT) لمنع خيط شقيق من إعادة ملء ذاكرة التخزين المؤقت L1 أثناء التخمين. يتراوح تأثير الأداء من منخفض إلى كبير اعتمادًا على التخفيف المختار، مع كون مسح L1d عند دخول VM هو الأكثر عملية ولكنه لا يزال ملحوظًا في أعباء العمل الثقيلة على VM.
CVE-2018-12126 — أخذ عينات بيانات المخزن المؤقت للمتجر المعماري الصغير (MSBDS, Fallout)
CVE-2018-12127 — أخذ عينات بيانات منفذ التحميل المعماري الصغير (MLPDS, RIDL)
CVE-2018-12130 — أخذ عينات بيانات المخزن المؤقت للملء المعماري الصغير (MFBDS, ZombieLoad)
CVE-2019-11091 — أخذ عينات البيانات المعمارية الصغيرة للذاكرة غير المخزنة (MDSUM, RIDL)
تُعرف هذه الـ CVEs الأربعة مجتمعة باسم ثغرات "MDS" (Microarchitectural Data Sampling). تستغل مخازن داخلية مختلفة لوحدة المعالجة المركزية (CPU) — مخزن المتجر، مخزن الملء، منافذ التحميل، ومسارات الذاكرة غير المخزنة — التي يمكن أن تسرب البيانات التي تم الوصول إليها مؤخرًا عبر حدود الامتياز أثناء التنفيذ التخميني. يمكن لمهاجم غير مميز ملاحظة البيانات التي تمت معالجتها مؤخرًا بواسطة النواة أو عمليات أخرى. يتطلب التخفيف تحديث الميكروكود (الذي يوفر آلية MD_CLEAR) بالإضافة إلى تحديث النواة الذي يستخدم VERW لمسح المخازن المتأثرة عند انتقالات الامتياز. يوفر تعطيل Hyper-Threading (SMT) حماية إضافية لأن الخيوط الشقيقة تشارك هذه المخازن. تأثير الأداء من منخفض إلى كبير، اعتمادًا على تواتر انتقالات النواة وما إذا كان SMT معطلاً.
CVE-2018-12207 — استثناء فحص الآلة عند تغييرات حجم الصفحة (iTLB Multihit, No eXcuses)
يمكن لـ VM ضيف خبيث إثارة استثناء فحص الآلة (MCE) — مما يؤدي إلى تعطل المضيف بالكامل — عن طريق إنشاء ظروف محددة في TLB التعليمات تتضمن تغييرات في حجم الصفحة. هذه ثغرة حرمان من الخدمة تؤثر على الهايبرفايزرات التي تشغل ضيوفًا غير موثوقين. يتطلب التخفيف إما تعطيل استخدام hugepages في الهايبرفايزر أو تحديث الهايبرفايزر لتجنب تكوينات iTLB الإشكالية. يتراوح تأثير الأداء من منخفض إلى كبير اعتمادًا على النهج: تعطيل hugepages يمكن أن يؤثر بشكل كبير على أعباء العمل المكثفة للذاكرة.
CVE-2019-11135 — إحباط TSX غير المتزامن (TAA, ZombieLoad V2)
على وحدات المعالجة المركزية (CPU) المزودة بـ Intel TSX، يمكن أن يترك الإحباط المعاملي (transactional abort) بيانات من مخازن ملء الخط (line fill buffers) في حالة يمكن ملاحظتها من خلال القنوات الجانبية، على غرار ثغرات MDS ولكن يتم تشغيلها عبر TSX. يتطلب التخفيف تحديث الميكروكود بالإضافة إلى دعم النواة إما لمسح المخازن المتأثرة أو تعطيل TSX بالكامل (عبر MSR_TSX_CTRL). تأثير الأداء من منخفض إلى كبير، مشابه لـ MDS، مع خيار القضاء على سطح الهجوم بالكامل عن طريق تعطيل TSX على حساب فقدان دعم الذاكرة المعاملية.
CVE-2020-0543 — أخذ عينات بيانات المخزن المؤقت للسجل الخاص (SRBDS, CROSSTalk)
تقرأ تعليمات CPU خاصة معينة (RDRAND، RDSEED، EGETKEY) البيانات من خلال مخزن مؤقت مرحلي مشترك يمكن الوصول إليه عبر جميع النوى عن طريق التنفيذ التخميني. يمكن لمهاجم يقوم بتشغيل كود على أي نوى ملاحظة مخرجات هذه التعليمات من ضحية على نوى مختلفة، بما في ذلك استخراج مفاتيح تشفير من enclaves لـ SGX (تم إثبات مفتاح ECDSA كامل). هذا ملحوظ كأحد أول هجمات التنفيذ التخميني عبر النوى. يتطلب التخفيف تحديث الميكروكود الذي يقوم بتسلسل الوصول إلى المخزن المؤقت المرحلي، بالإضافة إلى تحديث النواة لإدارة التخفيف. تأثير الأداء منخفض، ويؤثر بشكل أساسي على أعباء العمل التي تستخدم RDRAND/RDSEED بكثافة.
CVE-2022-21123، CVE-2022-21125، CVE-2022-21166 — بيانات MMIO قديمة للمعالج (SBDR, SBDS, DRPW)
فئة من ثغرات MMIO (Memory-Mapped I/O) حيث يمكن استنتاج البيانات القديمة من المخازن المؤقتة الداخلية لوحدة المعالجة المركزية (CPU) من خلال هجمات القناة الجانبية أثناء عمليات MMIO. يتم تغطية ثلاث ثغرات فرعية: قراءة البيانات من المخازن المؤقتة المشتركة (SBDR, CVE-2022-21123)، أخذ عينات البيانات من المخازن المؤقتة المشتركة (SBDS, CVE-2022-21125)، والكتابة الجزئية لسجل الجهاز (DRPW, CVE-2022-21166). تشمل وحدات المعالجة المركزية Intel المتأثرة Haswell حتى Rocket Lake لمعالجات الخادم والعميل، بالإضافة إلى نوى Tremont Atom. يتطلب التخفيف تحديث الميكروكود الذي يوفر إمكانية FB_CLEAR (تعليمات VERW تقوم بمسح مخازن الملء) بالإضافة إلى تحديث النواة (Linux 5.19+) الذي يستدعي VERW عند انتقالات النواة/المستخدم وعند دخول/خروج VM. عند تفعيل SMT، لا يزال بإمكان الخيوط الشقيقة استغلال الثغرة حتى مع تفعيل التخفيفات. تأثير الأداء منخفض، حيث أن آلية VERW مشتركة مع تخفيف MDS الموجود.
CVE-2022-29900 — تنفيذ تخميني تعسفي للكود باستخدام تعليمات الإرجاع (Retbleed AMD)
على معالجات AMD من العائلات 0x15 إلى 0x17 (Bulldozer حتى Zen 2) ومعالجات Hygon العائلة 0x18، يمكن للمهاجم استغلال تعليمات الإرجاع لإعادة توجيه التنفيذ التخميني وتسريب ذاكرة النواة، متجاوزًا تخفيفات retpoline التي كانت فعالة ضد Spectre V2. على عكس Spectre V2 الذي يستهدف القفزات والنداءات غير المباشرة، يستهدف Retbleed بشكل خاص تعليمات الإرجاع، التي كانت تعتبر آمنة سابقًا. يتطلب التخفيف تحديث النواة الذي يوفر إما thunk الإرجاع غير المدرب (safe RET) أو آلية IBPB عند الدخول، بالإضافة إلى تحديث الميكروكود الذي يوفر دعم IBPB على Zen 1/2. على Zen 1/2، يجب تعطيل SMT للحماية الكاملة عند استخدام تخفيف قائم على IBPB. تأثير الأداء متوسط.
CVE-2022-29901 — تنفيذ تخميني تعسفي للكود باستخدام تعليمات الإرجاع (Retbleed Intel, RSBA)
على معالجات Intel Skylake حتى Rocket Lake مع سلوك RSB البديل (RSBA)، يمكن إعادة توجيه تعليمات الإرجاع تخمينيًا عبر مخزن أهداف الفرع (BTB) عندما يفيض مخزن الإرجاع (Return Stack Buffer)، متجاوزًا تخفيفات retpoline. يتطلب التخفيف إما Enhanced IBRS (eIBRS، عبر تحديث الميكروكود) أو نواة مترجمة مع دعم IBRS عند الدخول (Linux 5.19+). تتبع عمق الاستدعاء (Call depth tracking) هو تخفيف بديل متاح من Linux 6.2+. لا يقوم retpoline العادي بتخفيف هذه الثغرة على وحدات CPU القادرة على RSBA. تأثير الأداء متوسط إلى عالٍ.
**CVE-2022-40982 — أخذ عينات بيانات التجميع (GDS, Downfall)**يمكن أن تسرّب تعليمات AVX GATHER البيانات من سجلات المتجهات المستخدمة سابقاً عبر حدود الامتياز من خلال مخزن بيانات التجميع المشترك. هذا يؤثر على أي برنامج يستخدم AVX2 أو AVX-512 على معالجات Intel المعرضة للخطر. يتم توفير التخفيف من خلال تحديث البرنامج المصغر (microcode) الذي يمسح مخزن التجميع، أو بدلاً من ذلك عن طريق تعطيل ميزة AVX بالكامل. تأثير الأداء ضئيل لمعظم أعباء العمل ولكنه قد يكون كبيرًا (يصل إلى 50%) لتطبيقات AVX الثقيلة مثل HPC واستدلال الذكاء الاصطناعي.
CVE-2023-20569 — أمان عنوان الإرجاع (Inception, SRSO)
على معالجات AMD Zen 1 حتى Zen 4، يمكن للمهاجم التلاعب بمتنبئ عنوان الإرجاع لإعادة توجيه التنفيذ التخميني عند تعليمات الإرجاع، مما يؤدي إلى تسريب ذاكرة النواة. يتطلب التخفيف تحديثًا للنواة (يوفر تسلسلات آمنة لعناوين الإرجاع SRSO أو IBPB عند الدخول) وتحديثًا للبرنامج المصغر (يوفر SBPB على Zen 3/4، أو دعم IBPB على Zen 1/2 - والذي يتطلب بالإضافة إلى ذلك تعطيل SMT). يتراوح تأثير الأداء من منخفض إلى كبير حسب التخفيف المختار وجيل المعالج.
CVE-2023-20588 — تسريب البيانات التخميني بقسمة الصفر في AMD (DIV0)
على معالجات AMD Zen 1، يمكن لاستثناء #DE (القسمة على صفر) أن يترك بيانات خارجية من قسمة سابقة في وحدة القسمة، يمكن ملاحظتها من خلال قناة جانبية تخمينية أثناء قسمة لاحقة. هذا يمكن أن يسرب البيانات عبر أي حدود امتياز، بما في ذلك بين خيوط SMT الشقيقة التي تشارك نفس النواة المادية. يتطلب التخفيف تحديثًا للنواة (Linux 6.5+) يضيف قسمة وهمية (amd_clear_divider()) عند كل خروج إلى مساحة المستخدم وقبل VMRUN، مما يمنع بقاء البيانات القديمة. لا حاجة لتحديث البرنامج المصغر. يوفر تعطيل SMT حماية إضافية لأن تخفيف النواة لا يغطي التسريبات عبر خيوط SMT. تأثير الأداء ضئيل.
CVE-2023-20593 — تسريب المعلومات عبر العمليات (Zenbleed)
يؤدي خطأ في معالجات AMD Zen 2 إلى قيام تعليمة VZEROUPPER بتصحيح ملفات السجلات بشكل غير صحيح أثناء التنفيذ التخميني، تاركًا بيانات قديمة من عمليات أخرى يمكن ملاحظتها في سجلات المتجهات. هذا يمكن أن يسرب البيانات عبر أي حدود امتياز، بما في ذلك من النواة والعمليات الأخرى، بمعدلات تصل إلى 30 كيلوبايت/ثانية لكل نواة. يتوفر التخفيف إما من خلال تحديث البرنامج المصغر الذي يصلح الخطأ، أو من خلال حل بديل في النواة يضبط بت FP_BACKUP_FIX (البت 9) في MSR DE_CFG، مما يعطل التحسين المعيب. أي من النهجين وحده كافٍ. تأثير الأداء ضئيل.
CVE-2023-23583 — مشكلة البادئة الزائدة (Reptar)
يؤدي خطأ في معالجات Intel إلى سلوك غير متوقع عند تنفيذ تعليمات ببادئات REX زائدة معينة. اعتمادًا على الظروف، قد يؤدي ذلك إلى تعطل النظام (MCE) أو سلوك غير متوقع أو تصعيد الامتيازات. يمكن لأي برنامج يعمل على وحدة المعالجة المركزية المتأثرة أن يثير الخطأ. يتطلب التخفيف تحديثًا للبرنامج المصغر. تأثير الأداء منخفض.
CVE-2023-28746 — أخذ عينات بيانات ملف السجل (RFDS)
على بعض معالجات Intel Atom والهجينة (Goldmont, Goldmont Plus, Tremont, Gracemont, ونوات Atom من Alder Lake و Raptor Lake)، يمكن أن يحتفظ ملف السجل ببيانات قديمة من عمليات سابقة يمكن الوصول إليها عبر التنفيذ التخميني، مما يسمح للمهاجم باستنتاج البيانات عبر حدود الامتياز. يتطلب التخفيف كلاً من تحديث البرنامج المصغر (الذي يوفر قدرة RFDS_CLEAR) وتحديثًا للنواة (CONFIG_MITIGATION_RFDS, Linux 6.9+) يستخدم تعليمة VERW لمسح ملف السجل في انتقالات الامتياز. وحدات المعالجة المركزية التي تحتوي على بت قدرة RFDS_NO ليست متأثرة. تأثير الأداء منخفض.
CVE-2024-28956 — اختيار الهدف غير المباشر (ITS)
على بعض معالجات Intel (Skylake-X stepping 6+, Kaby Lake, Comet Lake, Ice Lake, Tiger Lake, Rocket Lake)، يمكن للمهاجم تدريب متنبئ الفرع غير المباشر لتنفيذ أداة مستهدفة بشكل تخميني في النواة، متجاوزًا حماية eIBRS. يستخدم مخزن أهداف الفرع (BTB) عناوين جزئية فقط لفهرسة أهداف الفروع غير المباشرة، مما يسمح لرمز مساحة المستخدم بالتأثير على التنفيذ التخميني في مساحة النواة. بعض وحدات المعالجة المركزية المتأثرة (Ice Lake, Tiger Lake, Rocket Lake) معرضة فقط للهجمات الأصلية من المستخدم إلى النواة، وليس هجمات الضيف إلى المضيف (VMX). يتطلب التخفيف كلاً من تحديث البرنامج المصغر (IPU 2025.1 / microcode-20250512+، الذي يصلح IBPB لمسح تنبؤات الفروع غير المباشرة بالكامل) وتحديثًا للنواة (CONFIG_MITIGATION_ITS, Linux 6.15+) يقوم بمحاذاة كتل الفرع/الإرجاع أو استخدام حشو RSB. تأثير الأداء منخفض.
CVE-2024-36350 — هجوم المجدول العابر، قائمة انتظار التخزين (TSA-SQ)
على معالجات AMD Zen 3 و Zen 4، قد يسترد المجدول العابر للوحدة المعالجة المركزية بيانات قديمة من قائمة انتظار التخزين خلال نوافذ توقيت معينة، مما يسمح للمهاجم باستنتاج البيانات من عمليات تخزين سابقة عبر حدود الامتياز. يمكن للهجوم أيضًا تسريب البيانات بين خيوط SMT الشقيقة. يتطلب التخفيف كلاً من تحديث البرنامج المصغر (الذي يكشف عن قدرة VERW_CLEAR) وتحديثًا للنواة (CONFIG_MITIGATION_TSA, Linux 6.16+) يستخدم تعليمة VERW لمسح مخازن وحدة المعالجة المركزية عند انتقالات المستخدم/النواة وقبل VMRUN. تقوم النواة أيضًا بمسح المخازن عند الخمول عندما يكون SMT نشطًا. تأثير الأداء من منخفض إلى متوسط.
CVE-2024-36357 — هجوم المجدول العابر، L1 (TSA-L1)
على معالجات AMD Zen 3 و Zen 4، قد يسترد المجدول العابر للوحدة المعالجة المركزية بيانات قديمة من ذاكرة التخزين المؤقت L1 خلال نوافذ توقيت معينة، مما يسمح للمهاجم باستنتاج البيانات في ذاكرة التخزين المؤقت L1D عبر حدود الامتياز. يتطلب التخفيف نفس تحديثات البرنامج المصغر والنواة كما في TSA-SQ: تحديث البرنامج المصغر الذي يكشف عن VERW_CLEAR وتحديث النواة (CONFIG_MITIGATION_TSA, Linux 6.16+) الذي يمسح مخازن وحدة المعالجة المركزية عبر VERW عند انتقالات الامتياز. تأثير الأداء من منخفض إلى متوسط.
CVE-2025-40300 — تنبؤ الفرع القديم عند خروج VM (VMScape)
بعد خروج جهاز VM ضيف إلى المضيف، يمكن لتنبؤات الفرع القديمة من الضيف التأثير على التنفيذ التخميني في جانب المضيف قبل أن تعود النواة إلى مساحة المستخدم، مما يسمح لمهاجم محلي بتسريب ذاكرة نواة المضيف. هذا يؤثر على معالجات Intel من Sandy Bridge حتى Arrow Lake/Lunar Lake، وعائلات AMD Zen 1 حتى Zen 5، وعائلة Hygon 0x18. فقط الأنظمة التي تشغل مراقب افتراضي (hypervisor) مع ضيوف غير موثوقين معرضة للخطر. يتطلب التخفيف تحديثًا للنواة (CONFIG_MITIGATION_VMSCAPE, Linux 6.18+) يصدر IBPB قبل العودة إلى مساحة المستخدم بعد خروج VM. لا حاجة لتحديث برنامج مصغر محدد يتجاوز دعم IBPB الحالي. تأثير الأداء منخفض.
CVE-2024-45332 — حقن امتياز الفرع (BPI)
يسمح حالة سباق في آلية تحديث متنبئ الفرع لمعالجات Intel (Coffee Lake حتى Raptor Lake، بالإضافة إلى بعض أجزاء الخوادم و Atom) لتنبؤات الفرع من مساحة المستخدم بالتأثير لفترة وجيزة على التنفيذ التخميني في مساحة النواة، مما يقوض حماية eIBRS و IBPB. هذا يعني أن الأنظمة التي تعتمد فقط على eIBRS لتخفيف Spectre V2 قد لا تكون محمية بالكامل بدون إصلاح البرنامج المصغر. يتطلب التخفيف تحديثًا للبرنامج المصغر (intel-microcode 20250512+) يصلح توقيت تحديث متنبئ الفرع غير المتزامن بحيث يعمل eIBRS و IBPB كما هو مقصود أصلاً. لا حاجة لتغييرات في النواة. تأثير الأداء ضئيل.
CVE-2025-54505 — تسريب بيانات خارجية من مقسم الفاصلة العائمة في AMD Zen1 (FPDSS)
على معالجات AMD Zen1 و Zen+ (EPYC 7001, EPYC Embedded 3000, Athlon 3000 with Radeon, Ryzen 3000 with Radeon, Ryzen PRO 3000 with Radeon Vega)، يمكن لمقسم الفاصلة العائمة في الأجهزة الاحتفاظ ببيانات حاصل جزئي من عمليات سابقة. في ظل ظروف معينة، يمكن تسريب تلك النتائج إلى خيط آخر يشارك نفس المقسم، متجاوزًا أي حد امتياز. تم تعيين CVE-2025-54505 ونشرها من قبل AMD كـ AMD-SB-7053 في 2026-04-17. يتطلب التخفيف تحديثًا للنواة (الالتزام الرئيسي e55d98e77561, "x86/CPU: Fix FPDSS on Zen1", Linux 7.1) الذي يضبط البت 9 (ZEN1_DENORM_FIX_BIT) من MSR 0xc0011028 (MSR_AMD64_FP_CFG) بشكل غير مشروط على كل معالج Zen1 عند الإقلاع، مما يعطل التحسين المسؤول عن التسريب. لا حاجة لتحديث البرنامج المصغر: بت الدجاج (chicken bit) موجود في سيليكون Zen1 من المصنع وهو مستقل عن إصدار البرنامج المصغر. تأثير الأداء يقتصر على انخفاض صغير في إنتاجية قسمة الفاصلة العائمة، ولهذا السبب لا تقوم AMD بتمكين البت افتراضيًا في الأجهزة.
| الوضع | العلامة | أجهزة وحدة المعالجة المركزية | النواة قيد التشغيل | صورة النواة | حالة الاستخدام |
|---|
| مباشر (افتراضي) | (لا شيء) | نعم | نعم | اكتشاف تلقائي | التدقيق اليومي للنظام الحالي |
| بدون وقت تشغيل | --no-runtime | نعم | لا | مطلوب | فحص نواة مختلفة مقابل هذه الوحدة المعالجة المركزية (مثل قبل النشر) |
| بدون أجهزة | --no-hw | لا | لا | مطلوب | تحليل ثابت خالص لصورة نواة لنظام آخر أو بنية معمارية أخرى |
| أجهزة فقط | --hw-only | نعم | لا | لا | فحص سريع لتأثر وحدة المعالجة المركزية دون فحص أي نواة |