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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
rex — Rex هو إطار عمل امتدادات النواة آمن وقابل للاستخدام يسمح بتحميل وتنفيذ برامج امتداد النواة بلغة رست بدلاً من eBPF. | Kitploit
أدوات/GitHubGitHub/rex-rs/rex
أمان الأنظمة المدمجةالتحليل الديناميكي (عزل)المحاكاة الافتراضية للأمان
GitHubrex-rs/rex

rex

Rex هو إطار عمل امتدادات النواة آمن وقابل للاستخدام يسمح بتحميل وتنفيذ برامج امتداد النواة بلغة رست بدلاً من eBPF.

عرض المستودع
55428منذ 10 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
مشاركة
root@kitploit:~
 ____  _______  __  _____      _                 _
|  _ \| ____\ \/ / | ____|_  _| |_ ___ _ __  ___(_) ___  _ __  ___
| |_) |  _|  \  /  |  _| \ \/ / __/ _ \ '_ \/ __| |/ _ \| '_ \/ __|
|  _ <| |___ /  \  | |___ >  <| ||  __/ | | \__ \ | (_) | | | \__ \
|_| \_\_____/_/\_\ |_____/_/\_\\__\___|_| |_|___/_|\___/|_| |_|___|

إضافات نواة ريكس (Rex Kernel Extensions)

CI Gentoo

جدول المحتويات

  • ما هو ريكس
  • برنامج مثال
  • البناء والتشغيل
  • المستندات
  • لماذا ريكس
  • الترخيص

ما هو ريكس

ريكس (Rex) هو إطار عمل آمن وقابل للاستخدام لإضافات النواة يسمح بتحميل وتنفيذ برامج إضافات النواة المكتوبة بلغة رست (Rust) بدلاً من eBPF. على عكس الأطر القائمة على eBPF مثل Aya، لا تمر برامج ريكس عبر المدقق داخل النواة (in-kernel verifier)، بل يتم تنفيذ البرامج في المجموعة الفرعية الآمنة من لغة رست، حيث يقوم مترجم رست بإجراء فحوصات الأمان اللازمة ويولد كودًا أصليًا مباشرة. يتجنب هذا الأسلوب متطلبات التحقق المقيدة بشكل مفرط (مثل قيود تعقيد البرنامج) والأخطاء الغامضة الناتجة عن التحقق، مع توفير فرصة أفضل للتحسين في الواجهة الخلفية للمترجم الأصلي (أي LLVM) مقارنة بأسلوب الواجهة الخلفية لـ eBPF + JIT داخل النواة.

يدعم ريكس حاليًا الميزات التالية:

  • 5 أنواع من برامج eBPF: kprobe و perf_event و tracepoint و xdp و tc.
  • استدعاء دوال المساعدة (helper functions) الخاصة بـ eBPF المستخدمة بشكل شائع بواسطة هذه البرامج.
  • التفاعل مع خرائط eBPF.
  • إدارة على غرار RAII للموارد الأساسية التي يمكن للبرامج الحصول عليها.
  • التنظيف ومعالجة الاستثناءات داخل النواة لحالات الذعر (panics) في وقت تشغيل رست مع تتبعات مكدس الاستدعاءات.
  • سلامة مكدس النواة (فقط عندما لا يمكن حساب CFG بشكل ثابت) وسلامة الإنهاء من وقت تشغيل رقيق داخل النواة.
  • روابط وتجريدات لأنواع البيانات الأساسية المطلوبة بشكل شائع بواسطة برامج eBPF.

برنامج مثال

ينفذ المثال التالي برنامج kprobe يتعلق باستدعاء نظام محدد ويحقن خطأ (محدد بواسطة errno) في استدعاء النظام على عملية (محددة بواسطة pid). يمكن العثور على المثال الكامل، بما في ذلك برنامج التحميل، في samples/error_injector.

root@kitploit:~
#![no_std]
#![no_main]

use rex::kprobe::kprobe;
use rex::map::RexHashMap;
use rex::pt_regs::PtRegs;
use rex::rex_kprobe;
use rex::rex_map;
use rex::Result;

#[allow(non_upper_case_globals)]
#[rex_map]
static pid_to_errno: RexHashMap<i32, u64> = RexHashMap::new(1, 0);

#[rex_kprobe]
pub fn err_injector(obj: &kprobe, ctx: &mut PtRegs) -> Result {
    obj.bpf_get_current_task()
        .map(|t| t.get_pid())
        .and_then(|p| obj.bpf_map_lookup_elem(&pid_to_errno, &p).cloned())
        .map(|e| obj.bpf_override_return(ctx, e))
        .ok_or(0)
}

يمكن العثور على المزيد من البرامج النموذجية في samples.

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

يمكنك العثور على الدليل المفصل هنا.

المستندات

يمكن العثور على مستندات تصميم إضافية تحت docs.

لماذا ريكس

تعتمد إضافات eBPF الحالية على مدقق eBPF داخل النواة لتوفير ضمانات الأمان. وهذا يؤدي للأسف إلى مشكلات في سهولة الاستخدام حيث يتم رفض البرامج الآمنة من قبل المدقق، بما في ذلك على سبيل المثال لا الحصر:

  • قد تتجاوز البرامج قيود التعقيد المتأصلة في التحقق الثابت.
  • قد لا تولد المترجمات كودًا مناسبًا للمدقق.
  • قد تحتاج نفس المنطق إلى التنفيذ بطريقة معينة لإرضاء المدقق.

يهدف ريكس إلى معالجة هذه المشكلات من خلال الاستفادة مباشرة من ضمان الأمان من Rust الآمن. يمكن للمطورين تنفيذ برامجهم بأي طريقة يمكن كتابتها بلغة Rust الآمنة مع قيود قليلة، ولم يعودوا بحاجة للقلق بشأن تعقيد البرنامج، أو مولد الكود، أو إيجاد طريقة (غالبًا ما تكون غير بديهية) للتعبير عن نفس المنطق لإرضاء المدقق.

نوضح ذلك مع تنفيذ BPF Memcached Cache (BMC)، وهو برنامج إضافة متطور لتسريع Memcached. كبرنامج eBPF معقد، تم إجبار BMC على التقسيم إلى عدة مكونات متصلة بواسطة tail-calls من BPF واستخدام تطبيقات حلقات/فروع غير ملائمة لإرضاء المدقق، وهي غير ضرورية تمامًا في تنفيذه في ريكس.

على سبيل المثال، نعرض الكود في منطق إبطال التخزين المؤقت لـ BPF-BMC الذي يبحث عن أمر SET في حمولة الحزمة:

root@kitploit:~
// Searches for SET command in payload
for (unsigned int off = 0;
     off < BMC_MAX_PACKET_LENGTH &&  payload + off + 1 <= data_end;
     off++) {
    if (set_found == 0 && payload[off] == 's' &&
        payload + off + 3 <= data_end && payload[off + 1] == 'e' &&
        payload[off + 2] == 't') {
            off += 3;
            set_found = 1;
    }
    ...
}

لا يقدم الكود قيدًا إضافيًا في الحلقة (off < BMC_MAX_PACKET_LENGTH) فقط من أجل اجتياز المدقق، بل يستخدم أيضًا كودًا نموذجيًا متكررًا للتحقق من نهايات الحزمة (data_end) ومنطقًا معقدًا لمطابقة السلسلة "set" في الحزمة.

لا شيء من هذه الأعباء مطلوب بقوة Rust الآمنة في ريكس، الذي ليس لديه حدود تعقيد ويوفر حرية أكبر في التنفيذ:

root@kitploit:~
let set_iter = payload.windows(4).enumerate().filter_map(|(i, v)| {
    if v == b"set " {
      Some(i)
    } else {
      None
    }
});

يمكن العثور على التنفيذ الكامل لـ BMC في ريكس في samples/bmc.

الترخيص

ريكس مرخص بموجب ترخيص GPLv2. الوحدات الفرعية (Linux و Rust و LLVM) في هذا المستودع مرخصة بموجب شروطها الخاصة. يرجى الاطلاع على ملفات الترخيص المقابلة لمزيد من التفاصيل. بالإضافة إلى ذلك، فإن معيار memcached مرخص بموجب ترخيص MIT.

محادثات

  • قمة المصادر المفتوحة أمريكا الشمالية 2025: https://youtu.be/4r7ECxEaGqM
  • USENIX ATC 2025: https://youtu.be/phJ-fb5lEA8
  • مؤتمر Linux Plumbers 2025: https://youtu.be/ivcLS4LFfKE
تنزيل الأداة