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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/uni-due-syssec/efcf-framework
تحليل الثغرات الأمنيةالاستغلالالاختبار العشوائيتحليل الملفات الثنائية
GitHubuni-due-syssec/efcf-framework

efcf-framework

EF/CF - اختبار عشوائي فائق السرعة للعقود الذكية

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

الأكثر شعبية

عرض الكل →

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

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

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

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

EF/CF - أداة الاختبار العشوائي للعقود الذكية فائقة السرعة (لإيثريوم)

EF/CF هو نهج جديد للاختبار العشوائي (fuzzing) للعقود الذكية: بدلاً من استخدام أداة اختبار عشوائي جديدة مبنية خصيصًا، يعيد توظيف البنية التحتية الحالية للاختبار العشوائي الخاصة بأكواد C/C++ لتخدم العقود الذكية. حاليًا، AFL++ هي أداة الاختبار العشوائي المدعومة بشكل أساسي، مع وجود دعم بدائي جدًا لكل من libfuzzer وhonggfuzz أيضًا.

لماذا نستخدم البنية التحتية الحالية للاختبار العشوائي؟

  • السرعة. يمكننا إجراء الاختبار العشوائي بشكل أسرع. نحصل بانتظام على حوالي 20k execs/sec/core.
  • أدوات الاختبار العشوائي للكود الأصلي (native code) مصممة جيدًا ومحسَّنة.
  • توجيه تغطية سليم، وإدارة طوابير، وإعادة تشغيل حتمية لحالات الاختبار، إلخ.

ما هي بعض المشكلات التي نواجهها أثناء ذلك؟

  • نحتاج إلى تعليم أداة الاختبار العشوائي بنية البيانات: أي ما هي المعاملة و ما هي واجهة ABI الخاصة بالعقد الذكي. نستخدم محولًا مخصصًا (mutator) لهذا الغرض: ./src/ethmutator/
  • لزيادة السرعة والحصول على تغذية راجعة مفيدة حول التغطية، نترجم البايت كود الخاص بـ EVM إلى C++ باستخدام مترجم مخصص (transpiler) ./src/evm2cpp/

يُعد هذا المستودع نقطة الدخول الأساسية لمشروع EF/CF. يحتوي على جميع الأكواد ذات الصلة كمشاريع فرعية في ./src/ وعلى عدة نصوص برمجية ملائمة للتثبيت، ونصوص لإطلاق حملات الاختبار العشوائي، ومجموعات بيانات متنوعة لاختبار أداة الاختبار العشوائي (والمقارنة مع الأدوات الأخرى).

  • ./src/ - يحتوي على كل المصادر اللازمة لبناء وتشغيل EF/CF؛ ومن أجل قابلية إعادة الإنتاج، تُضاف جميع التبعيات المباشرة كوحدات فرعية تابعة لـ git.
  • ./data/ - يحتوي على مجموعات البيانات المستخدمة أثناء التقييم
  • ./scripts - يحتوي على نصوص لتشغيل التجارب والتثبيت، إلخ.
  • ./docker - ملف Dockerfile لسير عمل قائم على الحاويات
    • النظام القياسي هو Ubuntu، لكن يمكنك أيضًا استخدام حاوية مبنية على Fedora أو Arch Linux إذا أردت.
    • ./docker/tools/ يحتوي على ملفات Dockerfiles للأدوات التي قارنّا EF/CF معها. حاولنا جاهدين تثبيت الإصدارات التي قيّمناها في ورقتنا البحثية داخل ملفات Dockerfiles.
  • ./EXPERIMENTS.md - يحتوي على دليل لإعادة إنتاج التجارب من ورقتنا البحثية.
  • ./examples - يحتوي على مخرجات أمثلة مولّدة بواسطة EF/CF

ورقة EF/CF البحثية

نصف في ورقتنا البحثية بنية EF/CF وتنفيذها ونلخص نتائج تقييمنا: النسخة الأولية على arxiv.org

الاقتباس في الأعمال الأكاديمية

عند الإشارة إلى EF/CF في الأعمال الأكاديمية، يرجى استخدام إدخال BibTeX التالي للاستشهاد:```bibtex @InProceedings{efcf2023, author = "Michael Rodler and David Paaßen and Wenting Li and Lukas Bernhard and Thorsten Holz and Ghassan Karame and Lucas Davi", title = "EF/CF: High Performance Smart Contract Fuzzing for Exploit Generation", booktitle = "{IEEE} European Symposium on Security and Privacy ({EuroS&P})", publisher = "{IEEE}", year = "2023", }

## البدء السريع

الطريقة الموصى بها هي تشغيل EF/CF كحاوية docker تفاعلية.

1. ادخل إلى الحاوية باستخدام shell   ```
   docker run --rm -it ghcr.io/uni-due-syssec/efcf-framework

أو قم ببناء الحاوية من المستودع المُستنسَخ ``` make gitmodules # to fetch the git submodules make container-enter

1. قم بتجميع ثم بعمل fuzz على عقد Solidity حتى يتم
اكتشاف أول انهيار/خطأ:   ```
efcfuzz --until-crash --out ./baby_bank_results/ --source ./data/examples/baby_bank.sol
  1. افحص التعطل المحدد ``` cd /tmp/baby_bank_results/ ./r.sh crashes_min/default_id:000000*

التثبيت / الإعداد

الوحدات الفرعية Git

ليس لديك Git؟ إذا كنت تستخدم إصدار tarball/docker، فتجاهل هذا.

شغّل git submodule update --init لجلب آخر التزامات الوحدات الفرعية على المستودعات المستنسخة بالفعل. تأكد من تشغيل هذا أيضًا في ./src/eEVM.``` git submodule update --init; cd src/eEVM/; git submodule update --init; cd ../../

*تحذير:* تنفيذ `git clone --recursive $repo` أو تمرير وسيط `--recursive` إلى `git sumbodule (update|init)` سيجعل git يدخل بشكل تكراري إلى الوحدات الفرعية لمستودع AFL++، وهي غير مطلوبة لهذا المشروع. لذا، لتوفير بعض المساحة، من الأفضل تجنب عمليات السحب التكراري للوحدات الفرعية.


### الحاوية

نوفّر أهداف make الملائمة التالية لسير العمل القائم على الحاويات:```sh
make container-build  # build default efcf container
make container-enter  # enter default efcf container in current working dir

إذا كنت تريد ضمان بناء نظيف، يمكنك استخدام الأمر التالي```sh make container-build CLEAN_CHECKOUT=1

بدلاً من ذلك، يمكن بناء الحاوية باستخدام أمر docker التالي:```sh
docker build \
    -f docker/ubuntu.Dockerfile \
    -t efcf:latest \
    .

لاحظ أنه يوجد أيضًا Dockerfile مبني على Archlinux و Fedora. يجب أن تعمل أيضًا، لكنها ليست مختبرة جيدًا.

لتوزيع صورة docker يدويًا (على سبيل المثال، إذا كنت تتضمن بعض التغييرات المحلية)، استخدم:``` make container-release docker load -i ./efcf*.tar

نوصي بخيارات docker التالية للتشغيل:

* `--security-opt seccomp=unconfined` - أداء أفضل لـ fuzzing
* `--net=host` - للوصول السهل إلى عقدة ethereum محلية
* `--tmpfs "/tmp/efcf/":exec,size=6g` - ضع الملفات المؤقتة لـ EF/CF على ramdisk إن أمكن (تآكل أقل للقرص)
* `--privileged` - لتشغيل `afl-system-config` أو `efcfuzz --configure-system`
* `-v` - لحفظ بيانات مخرجات EF/CF بشكل دائم


### VM / العتاد المادي

لسير العمل القائم على VM أو العتاد المادي:```sh
make system-install   # install efcf to current system (requires root or sudo rights)

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

  • Ubuntu Jammy (أو أحدث)
  • Fedora ($ > 35 $)
  • Archlinux

(لا يهم التوزيعة كثيرًا، لقد اختبرنا LLVM 13 و14 مع كون 14 هو الخيار المفضل. قد لا يزال LLVM 11 أو 12 يعمل أيضًا، ولكن كما هو الحال دائمًا - كلما كان أحدث كان أفضل. الجزء المهم هو وجود LLVM متوافق مع fork الخاص بنا من AFL++.)

على Mac OS / M1

لم نختبر EF/CF على Mac OS بشكل أصلي. من المحتمل أن الأمور لن تعمل (على سبيل المثال، يبدو أن afl-clang-lto على Mac OS لا يعمل). الخيار الأفضل هو استخدام docker.```sh

make sure that the submodules are initialized

make gitmodules

pull the linux/amd64 base image

docker pull ubuntu:jammy --platform linux/amd64

build the ef/cf image

docker build -t efcf:latest -f docker/ubuntu.Dockerfile --platform linux/amd64 .

launch the EF/CF container

docker run --tmpfs "/tmp/efcf/":exec,size=8g --platform linux/amd64 --rm -it -v $(pwd):$(pwd) -w $(pwd) efcf:latest

اختبرنا باستخدام Docker Desktop v4.21.1 ويعمل الاستخدام الأساسي لـ EF/CF بشكل صحيح. ومع ذلك، ضع في اعتبارك ما يلي:
* إذا رأيت أخطاء segfault أثناء البناء: حاول زيادة حد الذاكرة للجهاز الافتراضي الذي يستخدمه docker على Mac OS.
* حاول تمكين التسريع باستخدام rosetta داخل docker - نأمل أن يكون هذا أسرع قليلاً.

### الإعداد للتطوير

الأدوات بشكل عام لا تحتاج إلى تثبيت. قم بتثبيت التبعيات المطلوبة
كما هو موضح في سكربت `system-install.sh` أو كما في ملفات Dockerfiles.

للتيسير، لدينا بعض السكربتات لتحديث `PATH` الخاص بك:```sh
# POSIX-like shells (i.e., bash, ...)
source ./scripts/env.sh

# for the fish shell
source ./scripts/env.fish

مفتاح API الخاص بـ Etherscan

تنزيل الأداة