Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
spectre-attack — مثال على استخدام ثغرة "Spectre" المكتشفة (CVE-2017-5753 و CVE-2017-5715) | Kitploit
أدوات/GitHubGitHub/eugnis/spectre-attack
تحليل الذاكرة الجنائيتحليل الثغرات الأمنيةالاستغلالأمن الأجهزةالتعلم والتعليماستغلال الملفات الثنائية
GitHubeugnis/spectre-attack

spectre-attack

مثال على استخدام ثغرة "Spectre" المكتشفة (CVE-2017-5753 و CVE-2017-5715)

عرض المستودع
771167منذ 8 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

مثال هجوم Spectre

مثال على استخدام ثغرة "Spectre" المُكتشفة من 2 يناير 2018 (CVE-2017-5753 و CVE-2017-5715)

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

  • ورقة Spectre - ورقة Spectre ومصدر الكود

اللغة

C، تستخدم المكتبات:

  • stdio.h
  • stdint.h
  • intrin.h - لـ rdtscp و clflush

ماذا يفعل هذا المثال؟

نضع النص "The Magic Words are Squeamish Ossifrage." في الذاكرة ثم نحاول قراءته باستخدام الثغرة. إذا كان النظام عرضة، سترى نفس النص في المخرجات، مقروءًا من الذاكرة.


في هذا الكود، إذا تم تنفيذ التعليمات المترجمة في victim_function() بترتيب برمجي صارم، فإن الدالة ستقرأ فقط من array1[0..15] لأن حجم array1 = 16. ومع ذلك، عند تنفيذها تخمينيًا، تصبح القراءات خارج النطاق ممكنة. تقوم الدالة readMemoryByte() بعدة استدعاءات تدريبية لـ victim_function() لجعل مُنبئ التفرع يتوقع قيمًا صالحة لـ x، ثم تستدعي بـ x خارج النطاق. يُخطئ التفرع الشرطي في التوقع، ويقرأ التنفيذ التخميني الناتج بايتًا سريًا باستخدام x خارج النطاق. ثم يقرأ الكود التخميني من array2[array1[x] * 512]، مما يُسرب قيمة array1[x] إلى حالة ذاكرة التخزين المؤقت. لإكمال الهجوم، يتم استخدام تقنية flush+probe بسيطة لتحديد أي خط ذاكرة تخزين مؤقت في array2 تم تحميله، مما يكشف محتويات الذاكرة. يتكرر الهجوم عدة مرات، لذا حتى إذا كان البايت الهدف غير مخبأ في البداية، فإن التكرار الأول سيجلبه إلى ذاكرة التخزين المؤقت.

الكود غير المحسّن يقرأ حوالي 10 كيلوبايت/ثانية على جهاز i7 Surface Pro 3.

البناء

باستخدام GCC

gcc -std=c99 Source.c -o spectre.out أو make

باستخدام Visual Studio

أنشئ مشروعًا فارغًا جديدًا وأضف Source.c ثم انقر على Build.

التنفيذ

اختبار

.\spectre.out بدون معاملات.

القراءة من عنوان

.\spectre.out {address} {length} مع المعاملات:

  • address - عنوان المؤشر للحرف الضحية *
  • length - طول الحرف *

المصادر

  • معلومات ثغرات Spectre
  • CVE-2017-5753 - النمط 1: تجاوز فحص الحدود
  • CVE-2017-5715 - النمط 2: حقن هدف التفرع
  • قائمة وحدات المعالجة المتأثرة من Intel
تنزيل الأداة