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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
lfi — المستودع الرئيسي لـ LFI: عزل برمجي عملي وفعال وآمن | Kitploit
أدوات/GitHubGitHub/lfi-project/lfi
أمان الأنظمة المدمجةالتحليل الثابتالتحليل الديناميكي (عزل)تحليل الكودالمحاكاة الافتراضية للأمانأمن الأجهزةتحليل الملفات الثنائية
GitHublfi-project/lfi

lfi

المستودع الرئيسي لـ LFI: عزل برمجي عملي وفعال وآمن

عرض المستودع
11613منذ 6 أشهرتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

عزل الأخطاء الخفيف (LFI)

مرحبًا بكم في المستودع الرئيسي لمشروع عزل الأخطاء الخفيف (LFI).

ما هو LFI؟

LFI هو نظام لعزل الكود الأصلي (sandboxing). مثل WebAssembly و Native Client، يقوم LFI بعزل الكود المُعزل (sandboxed) داخل العملية (أي في نفس مساحة العنوان لتطبيق المضيف). حاليًا، ندعم أهداف Arm64 و x86-64، ولدينا دعم تجريبي لـ RISC-V.

تم تصميم LFI من الأساس لعزل الكود الموجود، مثل مكتبات C/C++ (بما في ذلك كود التجميع) وبرامج تشغيل الأجهزة.

يهدف LFI لتحقيق الأهداف التالية:

  • التوافق: يمكن استخدام LFI لعزل تقريبًا جميع كود C/C++/التجميع الموجود دون تعديل، ويعمل مع واجهات استدعاء النظام الحالية، إلخ.
  • الأداء: يهدف LFI إلى تقليل العبء الإضافي مقارنة بالكود غير المُعزل.
  • الأمان: يهدف وقت تشغيل LFI وعناصر المترجم إلى أن تكون بسيطة وقابلة للتحقق عند الإمكان.
  • سهولة الاستخدام: يجب أن تجعل الأدوات من السهل قدر الإمكان إضافة العزل إلى الكود الموجود.

الأهداف غير المضمنة تشمل تنسيق ثنائي مستقر واستقلالية المنصة. سنستخدم أي ميزات أجهزة خاصة بالمعمارية وتقنيات مترجم متاحة لتحسين الأداء.

يفرض LFI حاليًا عبئًا إضافيًا يبلغ حوالي 7% (Arm64) أو 8% (x86-64) مقارنة بالكود الأصلي عند عزل القراءات والكتابات، و 1.5% (Arm64) أو 6% (x86-64) عند عزل الكتابات فقط (المتوسط الهندسي على SPEC 2017). تستغرق تبديلات السياق في LFI (أي بين الصندوق الرملي وتطبيق المضيف) بضع عشرات من الدورات فقط، ويمكن لـ LFI دعم آلاف الصناديق الرملية في مساحة عنوان واحدة: ~64K (Arm64) أو ~3K (x86-64)، مع إعطاء كل صندوق رملي ما يصل إلى 4 جيبي بايت من الذاكرة.

المستودعات

  • lfi-runtime: وقت التشغيل المسؤول عن تحميل برامج LFI، ومعالجة استدعاءات المضيف، وتشغيل التحقق.
  • lfi-verifier: مدقق LFI.
  • lfi-rewriter: أداة إعادة كتابة LFI لتجميع GNU، وأداة ما بعد الربط لإجراء تحويلات ثنائية بعد الربط (ضرورية فقط على x86-64).
  • lfi-bind: أداة لتوليد الدوال القافزة (trampolines) وإجراءات التهيئة لتشغيل المكتبات داخل صناديق LFI الرملية.
  • lfi-llvm-toolchain: نصوص برمجية لبناء سلسلة أدوات مترجم LFI المعتمدة على LLVM، بالإضافة إلى جذر النظام (sysroot) الذي يتضمن compiler-rt، musl، libc++، و mimalloc.
  • llvm-project: شوكة التطوير الخاصة بنا لمشروع LLVM.
  • lfi-specification: مصادر LaTeX لوثيقة مواصفات LFI.
  • lfi-bench: مجموعة من المكتبات والمعايير لتقييم أداء LFI.

البدء

للبدء مع LFI، ستحتاج إلى مترجم LFI. يمكنك الحصول عليه من https://github.com/lfi-project/lfi-llvm-toolchain. تُستضاف المترجمات المُجمَّعة مسبقًا لـ aarch64 و x86-64 في الإصدارات: https://github.com/lfi-project/lfi/releases/latest. قم بتنزيل الحزمة aarch64-lfi-clang.tar.gz أو x86_64-lfi-clang.tar.gz حسب معماريتك (أو aarch64-lfi-clang-host-x86_64.tar.gz إذا كنت تريد التجميع المتقاطع إلى aarch64 من x86-64).

بعد فتح الأرشيف، يجب أن ترى هيكل دليل مثل هذا:

root@kitploit:~
├── bin
│   ├── LLVM tools (clang, lld, ...)
├── include
├── lfi-bin
│   ├── lfi-postlink
│   ├── lfi-rewrite
│   ├── lfi-run
│   ├── lfi-verify
│   ├── ARCH-lfi-linux-musl-clang -> ../bin/clang
│   └── ARCH-lfi-linux-musl-clang++ -> ../bin/clang++
├── lfi-clang
│   ├── ARCH-lfi-linux-musl-clang -> ../bin/clang
│   └── ARCH-lfi-linux-musl-clang++ -> ../bin/clang++
├── lib
├── libexec
├── share
└── sysroot

ستحتاج إلى إضافة دليل lfi-bin إلى PATH الخاص بك. إذا كان لديك بالفعل أدوات LFI مثبتة عبر تثبيت منفصل، ففكر في إضافة lfi-clang فقط إلى PATH بدلاً من ذلك.

بمجرد حصولك على مترجم، يجب أن تكون قادرًا على بناء برنامج C أو C++ بسيط:

root@kitploit:~
#include <stdio.h>
int main() {
    printf("Hello from LFI\n");
    return 0;
}

قم بالتجميع والتشغيل باستخدام lfi-run:

root@kitploit:~
$ aarch64-lfi-linux-musl-clang hello.c -O2 -o hello -static-pie
$ lfi-run -v ./hello
Hello from LFI

يمكنك استخدام أداة lfi-run المُجمَّعة مسبقًا من الأرشيف المُجمَّع مسبقًا. يمكنك أيضًا بناء وقت تشغيل LFI بسهولة من المصدر:

root@kitploit:~
git clone https://github.com/lfi-project/lfi-runtime
cd lfi-runtime
meson setup build
cd build
ninja
./tools/lfi-run/lfi-run ...

أداة lfi-run مخصصة بشكل أساسي للقياس والاختبار. لا تقوم بتشغيل التحقق افتراضيًا (مرر -v لتفعيله)، وتسمح بالوصول الكامل لنظام الملفات افتراضيًا. راجع الاستخدام (lfi-run --help) لمزيد من المعلومات.

الخطوات التالية

بعد بناء وتشغيل أول برنامج LFI لك، قد ترغب في متابعة عدة اتجاهات أخرى. راجع الأدلة التالية لبعض الاقتراحات:

  • إعداد القياس باستخدام SPEC 2017 و lfi-bench: دليل.
  • استخدام LFI لعزل المكتبات: دليل.
  • معرفة المزيد حول كيفية عمل LFI: دليل.
  • استخدام liblfi لإنشاء وقت تشغيل مخصص: دليل.

مستودع الأبحاث

كان هذا المستودع موجودًا سابقًا على zyedidia/lfi واحتوى على التنفيذ الأولي لـ LFI. يمكن العثور على تلك المصادر على الفرع lfi-research.

تنزيل الأداة