Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
retbleed-speculative-execution-poc — إعادة إنتاج هجوم Retbleed (CVE-2022-29900/29901) المعماري الدقيق في gem5. تسريب RSB underflow وFlush+Reload عبر القناة الجانبية، وتخفيف lfence موثّق. | Kitploit
أدوات/GitHubGitHub/abdul-kalam2000/retbleed-speculative-execution-poc
تحليل الثغرات الأمنيةالاستغلالأمن الأجهزةالأوراق والأبحاثالتعلم والتعليماستغلال الملفات الثنائية
GitHubabdul-kalam2000/retbleed-speculative-execution-poc

retbleed-speculative-execution-poc

إعادة إنتاج هجوم Retbleed (CVE-2022-29900/29901) المعماري الدقيق في gem5. تسريب RSB underflow وFlush+Reload عبر القناة الجانبية، وتخفيف lfence موثّق.

عرض المستودع
24منذ 21 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Retbleed: تنفيذ تعليمات برمجية تخمينية عشوائية عبر RSB Underflow

إعادة إنتاج عملية لـ Retbleed (CVE-2022-29900 / CVE-2022-29901) — الهجوم المعماري الدقيق لعام 2022 الذي كسر دفاع "Retpoline" من خلال إثبات أن تعليمات ret، التي كان يُفترض منذ فترة طويلة أنها آمنة، يمكن اختطافها عندما يحدث underflow في Return Stack Buffer (RSB) الخاص بالمعالج.

يحاكي هذا المشروع دورة حياة الهجوم الكاملة على نموذج معالج x86 Out-of-Order في gem5: إطلاق RSB underflow، وتسريب البيانات السرية بايتًا واحدًا في كل مرة عبر قناة جانبية للذاكرة المؤقتة Flush+Reload، ثم التحقق من تخفيف برمجي (lfence) يغلق التسريب.

مشروع مقرر دراسي — Advanced Computer Architecture، خريف 2025، CUNY City College المؤلفان: Abdul Kalam Mansoor و Rebiha Selmani

لماذا هذا مهم

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

كيف يعمل الهجوم

المرحلةما يحدث
1. Triggerتستدعي rsb_deep_call() نفسها بشكل عودي بعمق 32 مستوى، مما يفيض عن RSB ذي 16 مدخلًا. عند فك الاستدعاء العودي، يصبح RSB فارغًا.
2. Fallbackمع فراغ RSB، يتراجع المعالج إلى Branch Target Buffer (BTB) للتنبؤ بهدف ret — وهو ما يمكن للمهاجم تسميمه.
3. Gadgetينفذ المسار التخميني المختطف gadget()، الذي يقرأ بايتًا من كلمة المرور السرية ويستخدمه للفهرسة داخل probe_array، مما يسحب صفحة واحدة من تلك المصفوفة إلى الذاكرة المؤقتة.
4. Flush+Reload spyقبل الهجوم، يتم تفريغ كل صفحة من probe_array من الذاكرة المؤقتة (_mm_clflush). بعد إغلاق النافذة التخمينية، يقيس البرنامج زمن الوصول إلى كل قيمة بايت محتملة (__rdtscp) — والقيمة التي تعود بسرعة (cache hit) تكشف البايت السري.

تكرار ذلك لكل بايت من ROOT_PASSWORD يعيد بناء السر بالكامل دون استدعاء gadget() معماريًا أبدًا.

النتائج

الوضعزمن الوصولالنتيجة
Vulnerable (SECURE_MODE غير معرّف)~49 دورة (cache hit)تسريب السر بايتًا بايتًا، مؤكد بمؤشرات HIT! الحمراء
Patched (SECURE_MODE معرّف، مع حقن _mm_lfence())>150 دورة (cache miss / ضوضاء)فشل الهجوم — يُظهر الخرج SAFE / Found: ???

يجبر lfence المعالج على حل عنوان الإرجاع قبل أن تُنفَّذ أي تعليمة لاحقة، مما يطوي النافذة التخمينية قبل أن يلمس gadget أي ذاكرة تعتمد على السر.

محتويات المستودع

src/
  retbleed.c              # Full PoC: trigger, gadget, Flush+Reload spy, and lfence mitigation (toggle via SECURE_MODE)
docs/
  Retbleed_Report.pdf              # Full written report: methodology, related work, gem5 setup, results
  Retbleed_Attack_Demonstration.pptx  # Slide deck used to present the project

البناء والتشغيل

تم بناء PoC وقياسه تحت gem5 (DerivO3CPU، وهو نموذج out-of-order — مطلوب لأن النماذج in-order لا تنفذ التنفيذ التخميني):

gcc -O0 -static -o retbleed src/retbleed.c

./build/X86/gem5.opt configs/deprecated/example/se.py \
  --cpu-type=DerivO3CPU --caches --l2cache \
  --l1d_size=64kB --l1i_size=64kB --cmd=retbleed

للتبديل بين السلوك المعرّض للثغرة والمُرقَّع، علّق/أزل التعليق عن هذا السطر في أعلى retbleed.c:

#define SECURE_MODE

يستخدم الكود intrinsics حقيقية لـ x86 (_mm_clflush، __rdtscp، _mm_lfence) ويمكن أيضًا تجميعه وتشغيله أصليًا على عتاد x86 (gcc -O0 -o retbleed src/retbleed.c) للحصول على عرض أسرع — وستختلف النتائج حسب تخفيفات المعالج المضيف نفسه (eIBRS، تصحيحات microcode، إلخ)، وهو بحد ذاته توضيح مفيد لمدى شمولية ترقيع هذه الفئة من الأخطاء منذ 2022.

التأثير في العالم الحقيقي

  • فرض تحديثات طارئة لـ microcode/kernel عبر Linux وWindows والـ hypervisors في 2022.
  • التخفيفات البرمجية (return stack stuffing، وlfence إضافية) قيست بتكلفة أداء 14–39% على العتاد المتأثر.
  • إصلاحات العتاد الحديثة: eIBRS (Enhanced Indirect Branch Restricted Speculation) وتتبع عمق الاستدعاء برمجيًا.

المراجع

  1. J. Wikner and K. Razavi, "RETBLEED: Arbitrary Speculative Code Execution with Return Instructions," USENIX Security, 2022.
  2. P. Kocher et al., "Spectre Attacks: Exploiting Speculative Execution," IEEE S&P, 2019.
  3. M. Lipp et al., "Meltdown: Reading Kernel Memory from User Space," USENIX Security, 2018.
  4. Y. Yarom and K. Falkner, "FLUSH+RELOAD: A High-Resolution, Low-Noise, L3 Cache Side-Channel Attack," USENIX Security, 2014.
تنزيل الأداة