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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
fuzzilli — مختبر عشوائي لمحرك جافا سكريبت | Kitploit
أدوات/GitHubGitHub/googleprojectzero/fuzzilli
تحليل الثغرات الأمنيةالاختبار العشوائيتحليل الملفات الثنائيةالأوراق والأبحاثالتعلم والتعليم
GitHubgoogleprojectzero/fuzzilli

fuzzilli

مختبر عشوائي لمحرك جافا سكريبت

عرض المستودع
2.3k36682منذ 5 أيامتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

فيوزيلي

مُختبر اختراق (Fuzzer) موجه بالتغطية (coverage-guided) لمفسري اللغات الديناميكية، يعتمد على لغة وسيطة مخصصة (FuzzIL) يمكن تحويرها وترجمتها إلى جافاسكريبت.

الاستخدام

الخطوات الأساسية لاستخدام هذا المُختبر هي:

  1. قم بتنزيل الكود المصدري لإحدى محركات جافاسكريبت المدعومة. راجع دليل Targets/ للحصول على قائمة محركات جافاسكريبت المدعومة.
  2. قم بتطبيق التصحيحات (patches) المقابلة من دليل الهدف. راجع أيضًا ملف README.md في ذلك الدليل.
  3. قم بترجمة المحرك مع أجهزة التغطية (يتطلب clang >= 4.0) كما هو موصوف في README.
  4. قم بترجمة المُختبر: swift build [-c release].
  5. قم بتشغيل المُختبر: swift run [-c release] FuzzilliCli --profile=<profile> [other cli options] /path/to/jsshell. راجع أيضًا swift run FuzzilliCli --help.

إنشاء وتشغيل فيوزيلي ومحركات جافاسكريبت المدعومة داخل Docker وعلى Google Compute Engine مدعوم أيضًا.

الاختراق (Hacking)

اطلع على main.swift لترى مثالاً على استخدام مكتبة فيوزيلي وتجربة خيارات التكوين المختلفة. بعد ذلك، ألق نظرة على Fuzzer.swift للاطلاع على منطق الاختبار عالي المستوى. من هناك، تعمق في أي جزء يبدو مثيرًا للاهتمام.

التصحيحات والإضافات والمساهمات الأخرى لهذا المشروع مرحب بها جدًا! ومع ذلك، يُرجى مراجعة ملاحظات المساهمين بسرعة. يتبع فيوزيلي تقريبًا دليل أسلوب كود جوجل لـ Swift.

سيكون موضع تقدير كبير إذا أمكنك إرسال ملاحظة قصيرة (قد تتضمن رقم CVE) إلى [email protected] أو فتح طلب سحب (pull request) لأي ثغرة تم العثور عليها بمساعدة هذا المشروع ليتم تضمينها في قسم عرض الثغرات. بخلاف ذلك، يمكنك بالطبع المطالبة بأي مكافأة للثغرات، أرصدة CVE، إلخ للثغرات :)

المفهوم

عند اختبار الأخطاء الأساسية للمفسر، مثل مترجمات JIT، تصبح الصحة الدلالية للبرامج المُنشأة مصدر قلق. وهذا على عكس معظم السيناريوهات الأخرى، مثل اختبار واجهات برمجة التطبيقات في وقت التشغيل، حيث يمكن بسهولة تجاوز مشكلة الصحة الدلالية عن طريق تغليف الكود المُنشأ في بنيات try-catch. هناك احتمالات مختلفة لتحقيق معدل مقبول من العينات الصحيحة دلالياً، أحدها هو النهج التحويري (mutational approach) حيث تكون جميع العينات في المجموعة (corpus) صالحة دلاليًا أيضًا. في هذه الحالة، كل تحوير له فرصة صغيرة فقط لتحويل عينة صالحة إلى عينة غير صالحة.

لتنفيذ مُختبر اختراق جافاسكريبت قائم على التحوير، يجب تعريف التحويرات على كود جافاسكريبت. بدلاً من تحوير شجرة البنية المجردة (AST) أو العناصر النحوية الأخرى للبرنامج، يتم تعريف لغة وسيطة مخصصة (IL) يمكن من خلالها إجراء تحويرات على تدفق التحكم والبيانات بشكل أكثر مباشرة. يتم بعد ذلك ترجمة هذه اللغة الوسيطة إلى جافاسكريبت للتنفيذ. تبدو اللغة الوسيطة تقريبًا كما يلي:

v0 <− LoadInteger '0'
v1 <− LoadInteger '10'
v2 <− LoadInteger '1'
v3 <− LoadInteger '0'
BeginFor v0, '<', v1, '+', v2 −> v4
   v6 <− BinaryOperation v3, '+', v4
   Reassign v3, v6
EndFor
v7 <− LoadString 'Result: '
v8 <− BinaryOperation v7, '+', v3
v9 <− LoadGlobal 'console'
v10 <− CallMethod v9, 'log', [v8]

والتي يمكن، على سبيل المثال، ترجمتها بسهولة إلى كود جافاسكريبت التالي:

const v0 = 0;
const v1 = 10;
const v2 = 1;
let v3 = 0;
for (let v4 = v0; v4 < v1; v4 = v4 + v2) {
    const v6 = v3 + v4;
    v3 = v6;
}
const v7 = "Result: ";
const v8 = v7 + v3;
const v9 = console;
const v10 = v9.log(v8);

أو إلى كود جافاسكريبت التالي عن طريق تضمين التعبيرات الوسيطة (inlining):

let v3 = 0;
for (let v4 = 0; v4 < 10; v4++) {
    v3 = v3 + v4;
}
console.log("Result: " + v3);

تمتلك FuzzIL عددًا من الخصائص:

  • برنامج FuzzIL هو ببساطة قائمة من التعليمات.
  • تعليمة FuzzIL هي عملية مع متغيرات الإدخال والإخراج وربما معلمة واحدة أو أكثر (محاطة بفواصل مفردة في الترميز أعلاه).
  • مدخلات التعليمات هي دائمًا متغيرات، لا توجد قيم فورية.
  • كل مخرج من تعليمة هو متغير جديد، ولا يمكن إعادة تعيين المتغيرات الموجودة إلا من خلال عمليات مخصصة مثل تعليمة Reassign.
  • كل متغير يُعرّف قبل استخدامه.

يمكن بعد ذلك إجراء عدد من التحويرات على هذه البرامج:

  • InputMutator: يستبدل متغيرات الإدخال للتعليمات بأخرى مختلفة لتحوير تدفق البيانات للبرنامج.
  • CodeGenMutator: يُنشئ كودًا ويُدرجه في مكان ما في البرنامج المحور. يتم إنشاء الكود إما عن طريق تشغيل مُولد الكود أو عن طريق نسخ بعض التعليمات من برنامج آخر في المجموعة (splicing).
  • CombineMutator: يُدرج برنامجًا من المجموعة في موضع عشوائي في البرنامج المحور.
  • OperationMutator: يحور معاملات العمليات، على سبيل المثال استبدال ثابت صحيح بآخر مختلف.
  • والمزيد...

يمكن العثور على مناقشة أكثر شمولاً لكيفية عمل فيوزيلي هنا.

التنفيذ

المُختبر مُنفذ بلغة Swift، مع بعض الأجزاء (مثل قياسات التغطية، تفاعلات المقابس، إلخ) منفذة بلغة C.

البنية

يتكون مثيل المُختبر (منفذ في Fuzzer.swift) من المكونات المركزية التالية:

  • MutationFuzzer: ينتج برامج جديدة من البرامج الموجودة عن طريق تطبيق التحويرات. ثم ينفذ العينات المنتجة ويقيمها.
  • ScriptRunner: ينفذ برامج اللغة الهدف.
  • Corpus: يخزن العينات المثيرة للاهتمام ويوفرها للمختبر الأساسي.
  • Environment: لديه معرفة ببيئة التشغيل، مثل الدوال المدمجة المتاحة، أسماء الخصائص، والطرق.
  • Minimizer: يقلص البرامج المتسببة في الأعطال والمثيرة للاهتمام.
  • Evaluator: يقيم ما إذا كانت العينة مثيرة للاهتمام وفقًا لبعض المقاييس، مثل تغطية الكود.
  • Lifter: يترجم برنامج FuzzIL إلى اللغة الهدف (جافاسكريبت).

علاوة على ذلك، تتوفر عدد من الوحدات اختياريًا:

  • Statistics: يجمع قطعًا متنوعة من المعلومات الإحصائية.
  • NetworkSync: مزامنة مثيلات متعددة عبر الشبكة.
  • ThreadSync: مزامنة مثيلات متعددة داخل نفس العملية.
  • Storage: يخزن البرامج المتسببة في الأعطال على القرص.
تنزيل الأداة