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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
sgx-step — إطار عمل هجومي عملي للتحكم الدقيق في تنفيذ المنطقة المحمية | Kitploit
أدوات/GitHubGitHub/jovanbulck/sgx-step
الاستغلالاختبار الاختراقأمن الأجهزةتحليل الملفات الثنائية
GitHubjovanbulck/sgx-step

sgx-step

إطار عمل هجومي عملي للتحكم الدقيق في تنفيذ المنطقة المحمية

عرض المستودع
477932منذ يوم واحدتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

إطار هجوم عملي للتحكم الدقيق في تنفيذ المنطقة الآمنة CI

logo

SGX-Step هو إطار مفتوح المصدر لتسهيل أبحاث هجمات القناة الجانبية على معالجات Intel x86 بشكل عام ومنصات Intel SGX بشكل خاص. يتكون SGX-Step من برنامج تشغيل لنواة لينكس خصمي ومكتبة نظام تشغيل صغيرة في مساحة المستخدم تسمح بتكوين إدخالات جدول الصفحات غير الموثوقة و/أو مقاطعات مؤقت APIC x86 بالكامل من مساحة المستخدم. تم استخدام SGX-Step في أبحاثنا الخاصة، وكذلك من قبل باحثين مستقلين، لتمكين العديد من هجمات التنفيذ في المنطقة الآمنة الجديدة والمحسّنة التي تجمع ملاحظات القناة الجانبية بدقة زمنية قصوى (أي عن طريق مقاطعة المنطقة الآمنة الضحية بعد كل تعليمة واحدة).

الترخيص. SGX-Step هو برنامج حر، مرخص تحت GPLv3. شعار SGX-Step مشتق من سلسلة الصور الشهيرة الملكية العامة "Sallie Gardner at a Gallop" لـ Eadweard Muybridge، والتي، مثل هدفنا في التنفيذ خطوة بخطوة في المنطقة الآمنة، تفكك ديناميكيات الحصان الراكض إلى سلسلة من الإطارات الفردية للكشف عن خصائص مشية الحصان الكلية.

إصدار SGX-Stepميزات سجل التغييرات
v1.5.0تحسينات الاستقرار (KPTI, kernel ISR mapping); منفذ Gramine (تجريبي); دعم IPI.
v1.4.0بوابات المقاطعة/الاستدعاء المميزة (Plundervolt).
v1.3.0دعم التنفيذ العابر (Foreshadow).
v1.2.0معالجة المقاطعات من مساحة المستخدم وتصفية الخطوة الصفرية الحتمية (Nemesis).
v1.1.0دعم IA32.
v1.0.0معالجة جداول الصفحات من مساحة المستخدم والتنفيذ خطوة بخطوة عبر مؤقت APIC.

المنشورات. تم استخدام SGX-Step من قبل عدة مجموعات بحثية مستقلة وقد مكن من سلسلة جديدة من هجمات SGX عالية الدقة. قائمة كاملة ومحدثة بالمشاريع المعروفة التي تستخدم SGX-Step مدرجة في الأسفل من ملف README هذا. نسخة من الورقة الأصلية متاحة هنا.``` @inproceedings{vanbulck2017sgxstep, title = {{SGX-Step}: A Practical Attack Framework for Precise Enclave Execution Control}, author = {Van Bulck, Jo and Piessens, Frank and Strackx, Raoul}, booktitle = {2nd Workshop on System Software for Trusted Execution {(SysTEX)}}, publisher = {{ACM}}, pages = {4:1--4:6}, month = Oct, year = 2017, }

root@kitploit:~
**عرض توضيحي.** يحتوي دليل [app/memcmp](https://github.com/jovanbulck/sgx-step/blob/master/app/memcmp) على تطبيق توضيحي صغير يوضح قوة هجمات SGX-Step من خلال التنفيذ خطوة بخطوة لعينة من enclave تحتوي على منطق مقارنة كلمة مرور `memcmp` غير ثابت الزمن. على عكس هجمات التوقيت التقليدية المشهورة بالضوضاء، يمكن لـ SGX-Step اختراق كلمة المرور بشكل حتمي حرفًا بحرف في وقت _خطي_:

![sgxstep-memcmp-demo](https://assets.kitploit.com/production/public/readmes/2927/0b35615006c06e0d0b3f3e04f9628ab3deb2402317eb48bd0fce72509bfa91d3.gif)

## نظرة عامة

الأمر الحاسم في تصميم SGX-Step، على عكس المقترحات السابقة لاستباق enclave، هو إنشاء تعيينات ذاكرة افتراضية في مساحة المستخدم لمواقع الذاكرة الفعلية التي تحتوي على إدخالات جدول الصفحات، وكذلك لسجلات تكوين الإدخال/الإخراج المعينة بالذاكرة لـ APIC المحلي وجدول واصفات المقاطعة x86 (IDT). وهذا يسمح لعملية مضيف غير موثوقة يتحكم بها المهاجم بسهولة (i) تتبع أو تعديل إدخالات جدول صفحات enclave، (ii) تكوين مصدر مقاطعة مؤقت APIC (طلقة واحدة / دوري)، (iii) تشغيل مقاطعات بين المعالجات، و(iv) تسجيل معالجات مقاطعة مخصصة تمامًا _داخل_ مساحة المستخدم.

![sgx-step-framework](https://assets.kitploit.com/production/public/readmes/2927/b46f57fa9f7b93fb9142a28857693034e7cece8f9f675d2e9abb433093bdefe8.png)

يلخص الشكل أعلاه تسلسل خطوات الأجهزة والبرامج عند مقاطعة واستئناف enclave SGX من خلال إطار العمل الخاص بنا.

1. تصل مقاطعة مؤقت APIC المحلي داخل تعليمة enclave.
2. ينفذ المعالج إجراء AEX الذي يخزن سياق التنفيذ بشكل آمن في إطار SSA الخاص بـ enclave، ويبدأ تسجيل وحدة المعالجة المركزية، ويتوجه إلى معالج المقاطعة (في مساحة المستخدم) المسجل في IDT.
3. في هذه المرحلة، يمكن بسهولة إدراج أي كود تجسس خاص بالهجوم.
4. يعود المكتب إلى دعامة AEP لمساحة المستخدم. قمنا بتعديل وقت التشغيل غير الموثوق به لـ SDK الرسمي لـ SGX للسماح بالتسجيل السهل لقطع AEP مخصصة. علاوة على ذلك، لتمكين التقييم الدقيق لمنهجنا على enclaves التصحيح المعيارية التي يتحكم بها المهاجم، يمكن تزويد SGX-Step _اختياريًا_ بأدوات لاسترداد مؤشر التعليمات المخزن من إطار SSA الخاص بـ enclave المتقطعة (باستخدام واجهة `/proc/self/mem` في Linux والتعليمة `EDBGRD`).
5. بعد ذلك، نقوم بتكوين مؤقت APIC المحلي للمقاطعة التالية عن طريق الكتابة في سجل الإدخال/الإخراج المعين بالذاكرة للعدد الأولي، قبل تنفيذ (6) `ERESUME` مباشرة.

## نظرة عامة على الكود المصدري

تم تنظيم هذا المستودع على النحو التالي:```
.
├── app        -- Collection of sample client applications using SGX-Step to
│                 attack different victim enclave scenarios.
├── doc        -- Papers and reference material.
├── kernel     -- Minimal dynamically loadable Linux kernel driver to export
│                 physical memory to user space and bootstrap `libsgxstep`.
├── libsgxstep -- Small user-space operating system library that implements the
│                 actual SGX-Step functionality, including x86 page-table and
│                 APIC timer manipulations.
└── sdk        -- Bindings to use SGX-Step with different SGX SDKs and libOSs.

ميزات الإطار والتطبيقات

SGX-Step هو إطار تحكم عالمي في التنفيذ يتيح التداخل الدقيق لتعليمات الضحية داخل المنطقة المحمية (enclave) مع كود المهاجم العشوائي. يتم تلخيص بعض حالات الاستخدام الرئيسية لإطار SGX-Step في الشكل أدناه (انظر أيضًا الأسفل من هذا README للحصول على قائمة محدثة بالمنشورات التي تستخدم SGX-Step).

نظرة عامة على هجمات SGX-Step

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

0. متطلبات النظام

يتطلب SGX-Step معالج Intel متوافق مع SGX، ونواة Linux جاهزة. تم إجراء التقييم الأصلي على معالجات i7-6500U/6700، تعمل بنظام Ubuntu 18.04 مع نواة Linux 4.15.0 الأصلية. كما يتم دعم إصدارات النواة والتوزيعات الأحدث من Linux. نلخص أدناه معاملات نواة Linux.

معامل نواة لينكسالدافع
nox2apicاختياريًا، قم بتكوين جهاز APIC المحلي في وضع الإدخال/الإخراج المعين بالذاكرة (لاستخدام ميزات التنفيذ الفردي الدقيقة لـ SGX-Step). إذا تم الضبط، تأكد من تعيين X2APIC إلى 0 في libsgxstep/config.h. بدلاً من ذلك، يمكنك ترك المعالج في وضع x2APIC ويجب أن تكون توزيعات SGX-Step الحديثة متوافقة أيضًا.
iomem=relaxed no_timer_checkقم بقمع رسائل التحذير غير الضرورية في سجلات النواة.
nmi_watchdog=0قم بقمع مراقب NMI للنواة.
isolcpus=1قم بتوجيه عملية الضحية إلى نواة معالج معزولة.
clearcpuid=308,295,514قم بتعطيل ميزات منع الوصول في وضع المشرف (SMAP، البتات 295)، ومنع التنفيذ في وضع المشرف (SMEP، البتات 308) ومنع تعليمات وضع المستخدم (UMIP، البتات 514).
pti=offقم بتعطيل عزل جدول صفحات النواة (Kernel Page-Table Isolation) (لتجنب ذعر النواة مع معالجات مقاطعة المستخدم).
rcupdate.rcu_cpu_stall_suppress=1قم بتعطيل كاشف توقف وحدة المعالجة المركزية لتحديث القراءة-النسخ (RCU) في النواة (لتجنب التحذيرات عند التنفيذ الفردي لفترة طويلة دون استدعاء معالج مقاطعة المؤقت في النواة.)
msr.allow_writes=onقم بقمع رسائل تحذير النواة لكتابات سجل النموذج الخاص (MSR) بواسطة SGX-Step.
vdso=0فقط في إصدارات Linux الحديثة: قم بتعطيل مكتبة vdso_sgx_enter_enclave (غير متوافقة مع تصحيحات اعتراض AEP).
dis_ucode_ldrاختياريًا، قم بتعطيل تحديثات الميكروكود لوحدة المعالجة المركزية (قد يتطلب تخفيف هجمات التنفيذ المؤقتة الحديثة إعادة معايرة فترة التنفيذ الفردي).

قم بتمرير معاملات الإقلاع المطلوبة إلى النواة كما يلي:```bash

if you don't have vim, use nano instead

$ sudo vim /etc/default/grub

Add the following line: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash iomem=relaxed no_timer_check clearcpuid=308,295,514 pti=off isolcpus=1 nmi_watchdog=0 rcupdate.rcu_cpu_stall_suppress=1 msr.allow_writes=on vdso=0"

$ sudo update-grub && reboot

root@kitploit:~
للتحقق من أن النواة قيد التشغيل الحالية مهيأة بشكل صحيح، نفذ:```bash
$ sudo ./check_sys.sh
.. Checking recommended SGX-Step parameters          [OK]
.. Checking unknown kernel parameters                [OK]
.. Checking CPU features                             [OK]
.. Checking kernel page-table isolation              [OK]

أخيرًا، لتحسين استقرار وقت التنفيذ الإجمالي، يمكنك اختيار تعطيل تقنيات C-States وSpeedStep في إعدادات BIOS بالإضافة إلى ذلك.

1. بناء وتحميل /dev/sgx-step

يأتي SGX-Step مع وحدة kernel قابلة للتحميل تقوم بتصدير واجهة IOCTL إلى مكتبة libsgx-step في مساحة المستخدم. برنامج التشغيل مسؤول بشكل أساسي عن (i) ربط معالج مقاطعة مؤقت APIC، (ii) جمع تعيينات جدول الصفحات غير الموثوقة، واختياريًا (iii) جلب مؤشر التعليمات المنقطع لمناطق الاختبار المعيارية.

لبناء وتحميل برنامج التشغيل /dev/sgx-step، نفذ:```bash $ cd kernel/ $ ./install_SGX_driver.sh # tested on Ubuntu 20.04/22.04 $ make clean load

root@kitploit:~
**ملاحظة (/dev/sgx_enclave).** يدعم SGX-Step كلاً من برنامج التشغيل القديم `/dev/isgx` خارج الشجرة من Intel والذي يجب أن يعمل على جميع المنصات، بالإضافة إلى برنامج التشغيل الرئيسي `/dev/sgx_enclave` للمنصات التي تعمل بنواة لينكس الحديثة >5.11 ودعم أجهزة للتحكم المرن في الإطلاق. يجب أن يكتشف سكربت `install_SGX_driver.sh` تلقائياً ما إذا كان برنامج التشغيل `/dev/sgx_enclave` داخل الشجرة متوفراً، وإذا لم يكن كذلك، فسيقوم ببناء وتحميل برنامج التشغيل `/dev/isgx` خارج الشجرة عبر الوحدة الفرعية git التي تشير إلى إصدار v2.14 غير معدل من [linux-sgx-driver](https://github.com/intel/linux-sgx-driver).

**ملاحظة (/dev/mem).** نحن نعتمد على جهاز لينكس الافتراضي `/dev/mem` لبناء تعيينات ذاكرة افتراضية على مستوى المستخدم لسجلات الإدخال/الإخراج المعينة في الذاكرة الفعلية لـ APIC وإدخالات جدول الصفحات ذات الاهتمام. ومع ذلك، فإن توزيعات لينكس الحديثة عادةً ما تمكن خيار `CONFIG_STRICT_DEVMEM` الذي يمنع مثل هذا الاستخدام. لذلك، يتضمن برنامج التشغيل الخاص بنا `/dev/sgx-step` [نهجاً](https://www.libcrack.so/index.php/2012/09/02/bypassing-devmem_is_allowed-with-kprobes/) لتجاوز فحوصات `devmem_is_allowed` دون الحاجة إلى إعادة ترجمة النواة.

### 2. تصحيح وتثبيت SGX SDK

لتسهيل تسجيل كعب مؤشر الخروج غير المتزامن (AEP) المخصص، قمنا بتعديل بيئة التشغيل غير الموثوقة لـ Intel SGX SDK الرسمي. اتبع الخطوات التالية لسحب [linux-sgx](https://github.com/01org/linux-sgx) الإصدار v2.29 وتطبيق التصحيحات الخاصة بنا.```bash
$ cd sdk/intel-sdk/
$ ./install_SGX_SDK.sh                 # tested on Ubuntu 20.04/22.04
$ source /opt/intel/sgxsdk/environment # add to ~/.bashrc to preserve across terminal sessions
$ sudo service aesmd status            # stop/start aesmd service if needed

النصوص أعلاه لبرامج التثبيت تم اختبارها على Ubuntu 22.04 LTS. لتوزيعات GNU/Linux الأخرى، يرجى اتباع التعليمات في مشروع linux-sgx لبناء وتثبيت حزم Intel SGX SDK و PSW. ستحتاج أيضًا إلى بناء وتحميل وحدة نواة SGX الخاصة بـ linux-sgx-driver (غير معدلة) من أجل استخدام SGX-Step.

ملاحظة (تثبيت محلي). يمكن تثبيت حزم SGX SDK و PSW المعدلة محليًا دون التأثير على تثبيت 'linux-sgx' متوافق على مستوى النظام. لهذا، تدعم ملفات Makefiles النموذجية متغير بيئة SGX_SDK الذي يشير إلى دليل تثبيت SDK المحلي. عند اكتشاف مسار SDK غير افتراضي (أي ليس /opt/intel/sgxsdk)، تقوم أهداف Makefile "run" بالإضافة إلى ذلك بربط ديناميكي بمكتبة libsgx_urts.so الغير موثوقة والمعدلة المبنية في الدليل المحلي linux-sgx (باستخدام متغير البيئة LD_LIBRARY_PATH).

ملاحظة (دعم 32 بت). يمكن العثور على الإرشادات (قديمة وغير محدثة!) لبناء إصدارات 32 بت من SGX SDK و SGX-Step في README-m32.md.

3. بناء وتشغيل التطبيقات الاختبارية

يمكن لتطبيقات مساحة المستخدم الربط بمكتبة libsgxstep للاستفادة من ميزات التنفيذ خطوة بخطوة والتلاعب بجداول الصفحات في SGX-Step. ألق نظرة على التطبيقات النموذجية في دليل "app".

مربع المقاطعة المجرد

أولاً، تحقق من إعداد APIC وجدول واصف المقاطعة:```bash $ cd app/selftest/idt $ make run # fires interrupts in an infinite loop to stress-test stability; exit with CTRL-C

root@kitploit:~
على سبيل المثال، لبناء وتشغيل تطبيق مثال أساسي لاختبار ميزات معالجة جدول الصفحات وتصحيحات SDK:```bash
$ cd app/aep-redirect
$ make run

لاختبار وظيفة التنقل التدريجي بالمؤقت، جرب مثلاً بناء وتشغيل enclave قياسية للتنقل التدريجي خلال شريحة من 100 تعليمة nop متتالية:```bash $ cd app/bench $ NUM=100 make parse # alternatively vary NUM and use STRLEN=1 or ZIGZAG=1

root@kitploit:~
الأمر أعلاه يقوم ببناء `libsgxstep`، والضحية المرشدة للمعيار (victim enclave)، وعملية المضيف المهاجم غير الموثوقة، حيث يتم تكوين سيناريو الهجوم وحجم المثيل عبر متغيرات البيئة المقابلة. يقوم الأمر نفسه أيضًا بتشغيل الملف الثنائي الناتج بشكل غير تفاعلي (لضمان فترات زمنية محددة)، وأخيرًا يستدعي سكربت Python خاص بمرحلة ما بعد المعالجة لتحليل نتائج مؤشر التعليمات البرمجية للضحية المرشدة.

**ملاحظة (الأداء).** التنفيذ بخطوة واحدة للرمز المحمي (enclaved execution) يسبب تباطؤًا كبيرًا. قمنا بقياس أوقات تنفيذ تصل إلى 15 دقيقة للتجارب الموصوفة في الورقة البحثية. تسمح ميزات معالجة جداول الصفحات في SGX-Step ببدء التنفيذ بخطوة واحدة لوظائف محددة فقط، على سبيل المثال عن طريق إلغاء حقوق الوصول لصفحات تعليمات أو بيانات محددة ذات الاهتمام.

**ملاحظة (الفاصل الزمني للمؤقت).** تعتمد قيمة الفاصل الزمني الدقيق للمؤقت على تردد وحدة المعالجة المركزية، وبالتالي تظل خاصة بالمنصة بشكل جوهري (انظر أيضًا [app/selftest/apic](https://github.com/jovanbulck/sgx-step/blob/master/app/selftest/apic) لمعرفة القياسات الدقيقة التي تقيم دقة أوضاع مؤقت APIC المختلفة). قم بتكوين قيمة مناسبة في `/app/bench/main.c`. قمنا بتحديد فترات زمنية دقيقة لمنصات التقييم الخاصة بنا (انظر الجدول أدناه) عن طريق تعديل ومراقبة نتائج تتبع مؤشر التعليمات البرمجية لضحية المعيار NOP (NOP microbenchmark enclave)، كما هو موضح أدناه.

**ملاحظة (الاستقرار).** لتجنب تعلق أو ذعر نواة لينكس، يجب على SGX-Step استعادة جدول واصفات المقاطعة ومؤقت APIC المحلي تلقائيًا بعد الخروج من عملية `libsgxstep`. يمكنك التحقق مما إذا كان مؤقت APIC لا يزال يُطلق على جميع النوى كما يلي:```bash
$ watch -n0.1 "cat /proc/interrupts | grep 'Local timer interrupts'"

معايرة فاصل التنفيذ الأحادي الخطوة

يسرد الجدول أدناه وحدات المعالجة المركزية Intel المدعومة حاليًا، مع فاصل مؤقت APIC للتنفيذ الأحادي الخطوة الخاص بها (libsgxstep/config.h). لاحظ أن فاصل التنفيذ الأحادي الخطوة الدقيق قد يعتمد على إصدار microcode للمعالج عند وجود تخفيفات هجوم التنفيذ العابر لمسح المخازن المؤقتة المعمارية الدقيقة عند دخول/خروج العلبة. يتم توفير بعض إصدارات microcode المختلفة كمرجع في الجدول أدناه.

اسم الطرازوحدة المعالجة المركزيةالتردد الأساسيmicrocode (التاريخ)فاصل مؤقت APIC
Skylakei7-67003.4 GHz?19
Skylakei7-6500U2.5 GHz?25
Skylakei5-6200U2.3 GHz?28
Kaby Lake Ri7-8650U1.9 GHz?34
Kaby Lake Ri7-8650U1.9 GHz0xca (2019-10-03)54
Coffee Lake Ri7-97003 GHz0xf4 (2022-07-31)26
Coffee Lake Ri9-9900K3.6 GHz?21
Coffee Lake HRi7-9750H2.6 GHz0xf4 (2023-02-23)37
Ice Lakei5-1035G11.00 GHz0x32 (2019-07-05)135
Ice Lakei5-1035G11.00 GHz0xb0 (2022-03-09)255
Comet Lakei9-10900K3.70 GHz0xfc (2024-02-01)24
Emerald RapidsXeon Gold 5515+

ملاحظة (المعايرة). حاليًا، أسهل طريقة لتكوين فاصل مؤقت موثوق هي استخدام أداة app/bench مع شريحة NOP طويلة وزيادة/تقليل SGX_STEP_TIMER_INTERVAL تدريجيًا. يمكنك البدء من حول 20 ثم تشغيل NUM=100 make parse للحصول على ملخص للخطوات الفردية والخطوات الصفرية والخطوات المتعددة لشريحة NOP من 100 تعليمة (بمجرد الحصول على فاصل مستقر إلى حد ما، يمكنك التبديل إلى شرائح أطول). يشير عدد كبير جدًا من الخطوات الصفرية إلى ضرورة زيادة فاصل المؤقت، بينما تتطلب الخطوات المتعددة تقليل فاصل المؤقت.

ملاحظة (تصفية الخطوات الصفرية). هام: لا تقلق في حالة وجود بعض الخطوات الصفرية، فطالما أحرزت تقدمًا، يمكنك دائمًا تصفية الخطوات الصفرية بشكل حتمي من خلال النظر إلى بت الوصول PTE لرمز العلبة (الذي يتم تعيينه فقط عند تنفيذ التعليمة فعليًا وحدوث خطوة فردية). وبالتالي، بعد تكوين فاصل مؤقت متحفظ يمنع دائمًا الخطوات المتعددة، يمكن لـ SGX-Step تحقيق تنفيذ أحادي الخطوة بدون ضوضاء بدقة مثالية على مستوى التعليمة.

ملاحظة (تمديد "نافذة الهبوط" للمقاطعة). كما هو موضح في تحليل السبب الجذري أدناه، كلما كان تجول جدول الصفحة لحل عنوان (الرمز) لأول تعليمة علبة بعد ERESUME أبطأ، كلما كانت "نافذة الهبوط" للمقاطعة أطول، وبالتالي سيكون معدل التنفيذ الأحادي الخطوة لـ SGX-Step أكثر موثوقية. على سبيل المثال، وجدنا أنه بالإضافة إلى مسح بت الوصول PMD للعلبة، يمكن تمديد نافذة الهبوط بشكل أكبر عن طريق مسح إدخال أو أكثر من إدخالات جدول الصفحة غير المحمية من ذاكرة التخزين المؤقت لوحدة المعالجة المركزية قبل ERESUME، مما يجبر وحدة المعالجة المركزية على انتظار الذاكرة البطيئة أثناء تجول جدول الصفحة. وبالتالي، عندما لا تتمكن من العثور على تكوين فاصل مؤقت موثوق، تأكد من (i) مسح بت "الوصول" PTE/PMD لرمز العلبة و (ii) مسح (CLFLUSH) إدخال أو أكثر من إدخالات جدول صفحة العلبة في معالج AEP.

ملاحظة (microcode). كلمة تحذير أخرى تتعلق بتخفيفات Foreshadow/ZombieLoad/RIDL وما إلى ذلك من microcode الحديثة التي تقوم بمسح المخازن المؤقتة المعمارية الدقيقة المسربة عند دخول/خروج العلبة. كن على علم أنه عند تمكين هذه التخفيفات، سيزيد فاصل المؤقت لأن دخول العلبة يستغرق وقتًا أطول (على سبيل المثال، على وحدة المعالجة المركزية i7-8650U الخاصة بي، وجدت أن فاصل المؤقت للخطوة الواحدة يرتفع إلى 54 مع ucode حديث، من 34 فقط مع ucode ما قبل Foreshadow). قد تزيد عمليات المسح الإضافية أيضًا من تباين وقت دخول العلبة إلى حد ما، مما يعني أنك قد تضطر إلى تكوين المؤقت بشكل أكثر تحفظًا مع المزيد من الخطوات الصفرية (والتي يمكن تصفيتها بشكل حتمي كما هو موضح أعلاه).

تحليل السبب الجذري لـ SGX-Step

يتم وصف تحليل السبب الجذري التفصيلي لكيفية نجاح SGX-Step في مقاطعة أول تعليمة علبة (ربما قصيرة جدًا!) بعد تعليمة ERESUME المعقدة بشكل سيئ في ورقة AEX-Notify. وجدنا أن مفتاح نجاح SGX-Step يكمن في استخدامه لبت "الوصول" (A). على وجه التحديد، يقوم SGX-Step دائمًا بمسح بت A في دليل الصفحة المتوسط (PMD) للعلبة الضحية قبل تسليح APIC لإطلاق مقاطعة أحادية الطلقة. يتم تعيين بت A فقط من قبل المعالج عند تنفيذ تعليمة واحدة على الأقل بواسطة العلبة، وبالتالي يمكن استخدامه للتمييز بشكل حتمي بين الخطوات الصفرية والخطوات الفردية.

تحليل السبب الجذري لنافذة المساعدة

الأمر الحاسم هو أنه نظرًا لأن معالج فقدان الصفحة في المعالج محسّن للمسار السريع الشائع ويستخدم "مساعدة microcode" أبطأ بكثير للتعامل مع الحالة الأقل شيوعًا والأكثر تعقيدًا حيث يجب تعديل PMD أو PTE، فإن هذه المساعدة تؤدي إلى إطالة تنفيذ أول تعليمة علبة بعد ERESUME بعدة مئات من الدورات. وبالتالي، تفتح "نافذة المساعدة" هذه مساحة هبوط واسعة لمقاطعة مؤقت APIC ذات الحبيبات الخشعة والموزعة بشكل طبيعي لتصل بدقة عالية.

استخدام SGX-Step في مشاريعك الخاصة

أسهل طريقة للبدء في استخدام إطار عمل SGX-Step في مشاريعك الخاصة هي من خلال الوحدات الفرعية git:```bash $ cd my/git/project $ git submodule add https://github.com/jovanbulck/sgx-step.git $ cd sgx-step # Now build /dev/sgx-step and libsgxstep as described above

root@kitploit:~
ألقِ نظرة على ملفات Makefile في دليل `app` لترى كيف يمكن لتطبيق عميل الارتباط بـ `libsgxstep` بالإضافة إلى أي حزم محلية من SGX SDK/PSW.

<a name="bottom"></a>
فيما يلي قائمة بالمشاريع المعروفة التي تستخدم SGX-Step. لا تتردد في فتح طلب سحب إذا كان مشروعك يستخدم SGX-Step ولكنه غير مدرج أدناه.

| العنوان                                                                                          | تفاصيل النشر                                                                          | كود المصدر                                                               | ميزات SGX-Step المستخدمة                                  |
| ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------- |
| AEX-NStep: Probabilistic Interrupt Counting Attacks on Intel SGX | [S&P'26](https://arxiv.org/pdf/2510.14675) | [Zenodo](https://zenodo.org/records/17338383) | أخطاء الصفحة، مقاطعات IPIs، بوابة مقاطعة WRMSR |
| MDPeek: Breaking Balanced Branches in SGX with Memory Disambiguation Unit Side Channels | [ASPLOS'25](https://www.comp.nus.edu.sg/~tcarlson/pdfs/liu2025mbbbiswmdusc.pdf) | [GitHub (تم تقييم القطعة الأثرية وهي عاملة)](https://github.com/CPU-THU/MDPeek) | أخطاء الصفحة |
| Activation Functions Considered Harmful: Recovering Neural Network Weights through Controlled Channels | [RAID'25](https://ieeexplore.ieee.org/document/11352487) | [Github Artifact](https://github.com/heavyimage/afch_paper) | التنفيذ أحادي الخطوة، PTE A/D |
| TLBlur: Compiler-Assisted Automated Hardening against Controlled Channels on Off-the-Shelf Intel SGX Platforms | [USEC'25](https://vanbulck.net/files/usenix25-tlblur.pdf) | [GitHub (كامل)](https://github.com/TLBlur-SGX) | التنفيذ أحادي الخطوة، PTE A/D، أخطاء الصفحة |
| POSTER: On the Feasibility of Inferring SGX Execution through PMU | [AsiaCCS'24](https://dl.acm.org/doi/pdf/10.1145/3634737.3659434) | - | التنفيذ أحادي الخطوة، التنفيذ بدون خطوات|
| SIGY: Breaking Intel SGX Enclaves with Malicious Exceptions & Signals | [ArXiv'24](https://arxiv.org/abs/2404.13998) | - |  مقاطعات المؤقت، أخطاء الصفحة |
| On (the Lack of) Code Confidentiality in Trusted Execution Environments                        | [S&P24](https://ivanpuddu.com/files/papers/TEE_WASM_code_Leakage.pdf)                                              | [GitHub (فارغ)](https://github.com/dn0sar/TEE-WASM-Code-Extraction)                                                                         | التنفيذ أحادي الخطوة                                         |
| TeeJam: Sub-Cache-Line Leakages Strike Back | [CHES24](https://doi.org/10.46586/tches.v2024.i1.457-500) | [Github (كامل)](https://github.com/UzL-ITS/teejam) | زمن انتقال مقاطعة التنفيذ أحادي الخطوة، PTE A/D |
| AEX-Notify: Thwarting Precise Single-Stepping Attacks through Interrupt Awareness for Intel SGX Enclaves | [USEC23](https://jovanbulck.github.io/files/usenix23-aexnotify.pdf) | [GitHub (تخفيف SGX SDK)](https://github.com/intel/linux-sgx/blob/master/sdk/trts/linux/trts_mitigation.S) | التنفيذ أحادي الخطوة، PTE A/D
| Controlled Data Races in Enclaves: Attacks and Detection | [USEC23](https://www.usenix.org/system/files/usenixsecurity23-chen-sanchuan.pdf) | [GitHub (غير هجومي)](https://github.com/OSUSecLab/SGXRacer) | التنفيذ أحادي الخطوة، APIC |
| BunnyHop: Exploiting the Instruction Prefetcher | [USEC23](https://www.usenix.org/system/files/usenixsecurity23-zhang-zhiyuan-bunnyhop.pdf) | [GitHub (PoC غير SGX)](https://github.com/0xADE1A1DE/BunnyHop) | التنفيذ أحادي الخطوة، PTE A/D |
| Downfall: Exploiting Speculative Data Gathering | [USEC23](https://www.usenix.org/system/files/usenixsecurity23-moghimi.pdf) | [GitHub (PoC غير SGX)](https://github.com/flowyroll/downfall/tree/main/POC) | التنفيذ أحادي الخطوة، التنفيذ بدون خطوات |
| All Your PC Are Belong to Us: Exploiting Non-control-Transfer Instruction BTB Updates for Dynamic PC Extraction | [ISCA23](https://dl.acm.org/doi/pdf/10.1145/3579371.3589100?casa_token=Q5jf5nOgiLIAAAAA:cT0ltJh7vk943buODuR4oMFKmuhg2Tp-djFm2kUu6DzlxtBhNhEw2WteRggn0k99D7ft-P6pluVrFA) | - | التنفيذ أحادي الخطوة |
| Cache-timing attack against HQC                                                                | [CHES23](https://eprint.iacr.org/2023/102.pdf)                                               | -                                                                         | التنفيذ أحادي الخطوة، PTE A/D                                |
| FaultMorse: An automated controlled-channel attack via longest recurring sequence              | [ComSec23](https://www.sciencedirect.com/science/article/pii/S0167404822003959)              | [GitHub (معالجة لاحقة)](https://github.com/Ezekiel-1998/FaultMorse)                        | خطأ صفحة                                              |
| AEPIC Leak: Architecturally Leaking Uninitialized Data from the Microarchitecture              | [USEC22](https://www.usenix.org/system/files/sec22-borrello.pdf)                             | [GitHub (كامل)](https://github.com/IAIK/AEPIC)                                     | التنفيذ أحادي الخطوة، PTE A/D                                |
| MoLE: Mitigation of Side-channel Attacks against SGX via Dynamic Data Location Escape          | [ACSAC22](https://dl.acm.org/doi/fullHtml/10.1145/3564625.3568002)                           | -                                                                         | التنفيذ أحادي الخطوة، خطأ صفحة، تنفيذ عابر        |
| WIP: Interrupt Attack on TEE-Protected Robotic Vehicles                                        | [AutoSec22](https://www.ndss-symposium.org/wp-content/uploads/autosec2022_23001_paper.pdf)      | -                                                                         | التنفيذ أحادي الخطوة، التنفيذ متعدد الخطوات                         |
| Towards Self-monitoring Enclaves: Side-Channel Detection Using Performance Counters            | [NordSec22](https://link.springer.com/chapter/10.1007/978-3-031-22295-5_7)                   | -                                                                         | خطأ صفحة، LVI.                                        |
| ENCLYZER: Automated Analysis of Transient Data Leaks on Intel SGX                              | [SEED22](https://ieeexplore.ieee.org/document/9935016)                                       | [GitHub (كامل)](https://github.com/bloaryth/enclyser)                              | معالجة جدول الصفحات                                 |
| Side-Channeling the Kalyna Key Expansion                                                       | [CT-RSA22](https://cs.adelaide.edu.au/~yval/pdfs/ChuengsatiansupGYZ22.pdf)                   | -                                                                         | التنفيذ أحادي الخطوة، PTE A/D                                |
| Rapid Prototyping for Microarchitectural Attacks                                               | [USENIX22](https://www.usenix.org/system/files/sec22summer_easdon.pdf)                       | [GitHub (كامل)](https://github.com/libtea/frameworks)                              | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D، إلخ.              |
| Util::Lookup: Exploiting Key Decoding in Cryptographic Libraries                               | [CCS21](https://dl.acm.org/doi/abs/10.1145/3460120.3484783)                                  | [GitHub (كامل)](https://github.com/UzL-ITS/util-lookup)                            | التنفيذ أحادي الخطوة، PTE A/D                                |
| SmashEx: Smashing SGX Enclaves Using Exceptions                                                | [CCS21](https://dl.acm.org/doi/pdf/10.1145/3460120.3484821)                                  | -                                                                         | التنفيذ أحادي الخطوة                                         |
| Online Template Attacks: Revisited                                                             | [CHES21](https://tches.iacr.org/index.php/TCHES/article/view/8967/8545)                      | [Zenodo (محاكاة)](https://zenodo.org/record/4680071)                                 | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D                    |
| Aion Attacks: Manipulating Software Timers in Trusted Execution Environment                    | [DIMVA21](http://individual.utoronto.ca/shengjiexu/publication/whuang-dimva2021-aion_v2.pdf) | -                                                                         | التنفيذ أحادي الخطوة، مقاطعات(?)                          |
| Platypus: Software-based Power Side-Channel Attacks on x86                                     | [S&P21](https://platypusattack.com/platypus.pdf)                                             | [GitHub (PoC محاكى)](https://github.com/0xhilbert/Platypus)                             | التنفيذ أحادي الخطوة، التنفيذ بدون خطوات                          |
| CrossTalk: Speculative Data Leaks Across Cores Are Real                                        | [S&P21](https://download.vusec.net/papers/crosstalk_sp21.pdf)                                | -                                                                         | التنفيذ أحادي الخطوة، خطأ صفحة                             |
| Frontal Attack: Leaking Control-Flow in SGX via the CPU Frontend                               | [USEC21](https://www.usenix.org/system/files/sec21-puddu.pdf)                                | [GitHub (كامل، تم تقييم القطعة الأثرية)](https://github.com/dn0sar/frontal_poc)                             | زمن انتقال مقاطعة التنفيذ أحادي الخطوة، PTE A/D              |
| PThammer: Cross-User-Kernel-Boundary Rowhammer through Implicit Accesses | - | [MICRO20](https://arxiv.org/pdf/2007.08707v2.pdf) | تصفح جدول الصفحات |
| SpeechMiner: A Framework for Investigating and Measuring Speculative Execution Vulnerabilities  | [NDSS20](https://www.ndss-symposium.org/wp-content/uploads/2020/02/23105-paper.pdf)          | [GitHub (كامل)](https://github.com/teecert/SpeechMiner)                            | معالجة جدول الصفحات                                 |
| Déjà Vu: Side-Channel Analysis of Mozilla's NSS | [CCS20](https://dl.acm.org/doi/pdf/10.1145/3372297.3421761) | - | خطأ صفحة  |
| From A to Z: Projective coordinates leakage in the wild                                        | [CHES20](https://eprint.iacr.org/2020/432.pdf)                                               | -                                                                         | خطأ صفحة                                              |
| LVI: Hijacking Transient Execution through Microarchitectural Load Value Injection             | [S&P20](https://lviattack.eu/lvi.pdf)                                                        | [GitHub (PoC)](https://github.com/jovanbulck/sgx-step-lvi/tree/master/app/lvi)    | التنفيذ أحادي الخطوة، معالجة جدول الصفحات                |
| CopyCat: Controlled Instruction-Level Attacks on Enclaves                                      | [USEC20](https://arxiv.org/pdf/2002.08437.pdf)                                               | -                                                                         | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D                    |
| When one vulnerable primitive turns viral: Novel single-trace attacks on ECDSA and RSA         | [CHES20](https://eprint.iacr.org/2020/055.pdf)                                               | -                                                                         | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D                    |
| Big Numbers - Big Troubles: Systematically Analyzing Nonce Leakage in (EC)DSA Implementations  | [USEC20](https://www.usenix.org/system/files/sec20summer_weiser_prepub_0.pdf)                | -                                                                         | خطأ صفحة                                              |
| Plundervolt: Software-based Fault Injection Attacks against Intel SGX                          | [S&P20](https://plundervolt.com/doc/plundervolt.pdf)                                         | [GitHub (كامل)](https://github.com/KitMurdock/plundervolt)                         | بوابات مقاطعة/استدعاء مميزة، MSR                    |
| Bluethunder: A 2-level Directional Predictor Based Side-Channel Attack against SGX             | [CHES20](https://heartever.github.io/files/bluethunder_sgx_ches.pdf)                         | -                                                                         | التنفيذ أحادي الخطوة                                         |
| Fallout: Leaking Data on Meltdown-resistant CPUs                                               | [CCS19](https://mdsattacks.com/files/fallout.pdf)                                            | -                                                                         | PTE A/D                                                 |
| A Tale of Two Worlds: Assessing the Vulnerability of Enclave Shielding Runtimes                | [CCS19](https://people.cs.kuleuven.be/~jo.vanbulck/ccs19-tale.pdf)                           | [GitHub (كامل)](https://github.com/jovanbulck/0xbadc0de)                           | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D                    |
| ZombieLoad: Cross-Privilege-Boundary Data Sampling                                             | [CCS19](https://zombieloadattack.com/zombieload.pdf)                                         | [GitHub (PoC)](https://github.com/IAIK/ZombieLoad/)                               | التنفيذ أحادي الخطوة، التنفيذ بدون خطوات، معالجة جدول الصفحات |
| SPOILER: Speculative Load Hazards Boost Rowhammer and Cache Attacks                            | [USEC19](https://arxiv.org/pdf/1903.00446.pdf)                                               | -                                                                         | زمن انتقال مقاطعة التنفيذ أحادي الخطوة                       |
| Nemesis: Studying Microarchitectural Timing Leaks in Rudimentary CPU Interrupt Logic           | [CCS18](https://people.cs.kuleuven.be/~jo.vanbulck/ccs18.pdf)                                | [GitHub (كامل)](https://github.com/jovanbulck/nemesis)                             | زمن انتقال مقاطعة التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D  |
| Foreshadow: Extracting the Keys to the Intel SGX Kingdom with Transient Out-of-Order Execution | [USEC18](https://foreshadowattack.eu/foreshadow.pdf)                                         | [GitHub (PoC)](https://github.com/jovanbulck/sgx-step/tree/master/app/foreshadow) | التنفيذ أحادي الخطوة، التنفيذ بدون خطوات، معالجة جدول الصفحات |
| Single Trace Attack Against RSA Key Generation in Intel SGX SSL                                | [AsiaCCS18](https://rspreitzer.github.io/publications/proc/asiaccs-2018-paper-1.pdf)         | -                                                                         | خطأ صفحة                                              |
| Off-Limits: Abusing Legacy x86 Memory Segmentation to Spy on Enclaved Execution                | [ESSoS18](https://people.cs.kuleuven.be/~jo.vanbulck/essos18.pdf)                            | [رابط (كامل، تم تقييم القطعة الأثرية)](https://distrinet.cs.kuleuven.be/software/off-limits/)             | التنفيذ أحادي الخطوة، تجزئة IA32، خطأ صفحة          |
| SGX-Step: A Practical Attack Framework for Precise Enclave Execution Control                   | [SysTEX17](https://people.cs.kuleuven.be/~jo.vanbulck/systex17.pdf)                          | [GitHub (كامل)](https://github.com/jovanbulck/sgx-step/tree/master/app/bench)      | التنفيذ أحادي الخطوة، خطأ صفحة، PTE A/D                    |
تنزيل الأداة
3.2 GHz
0x21000230 (2024-02-05)
32