
Mole
Mole هو إضافة لـ Binary Ninja مصممة لتحديد مسارات التنفيذ المثيرة للاهتمام في الملفات الثنائية. تقوم بـ القطع العكسي (backward slicing) على المتغيرات باستخدام لغة وسيطة متوسطة المستوى (MLIL) الخاصة بـ Binary Ninja بشكل تعيين واحد ثابت (SSA)، مما يشكل الأساس لـ تحليل التلوث الثابت (static taint analysis).
في Mole، يشير المسار (path) إلى تدفق البيانات بين مصدر ومصرف (sink) معرَّفين. ما يشكل مسارًا "مثيرًا للاهتمام" يعتمد على أهداف التحليل. على سبيل المثال، عند البحث عن ثغرات، قد يبحث المرء عن مسارات حيث تؤثر المدخلات غير الموثوقة (المصادر) على العمليات الحساسة (المصارف) بطرق قد تكون خطيرة.
تسلط القائمة التالية الضوء على بعض الميزات الحالية لـ Mole:
- وضع التشغيل: يمكن تشغيل Mole إما ضمن واجهة المستخدم لـ Binary Ninja أو في الوضع الرأسي (headless mode). الوضع الرأسي مفيد بشكل خاص للتحليل النصي عبر عدد كبير من الملفات الثنائية. على العكس، استخدام Mole ضمن واجهة المستخدم مثالي للتحقيق الدقيق في المسارات المكتشفة.
- تحديد المسار:
- التكوين: يسمح Mole للمستخدمين بتعريف دوال المصدر والمصرف من خلال واجهة مستخدم Binary Ninja أو ملفات التكوين (انظر الاستخدام). يوفر هذا مرونة في اختيار المصادر والمصارف بناءً على سيناريو الاستخدام المحدد.
- الاستكشاف: لفهم مسار بشكل أفضل وفحص خصائصه، يمكن طباعة جميع التعليمات على طول المسار أو تمييزها بصريًا داخل Binary Ninja. بالإضافة إلى ذلك، يمكن عرض مقارنة جنبًا إلى جنب بين مسارين لتحديد الاختلافات بسرعة. على غرار التعليمات، يمكن طباعة تسلسل استدعاءات الدوال في المسار أو تصوره كرسم بياني.
- التجميع: لتسهيل تحديد المسارات المتشابهة، يدعم Mole استراتيجيات تجميع متعددة. حاليًا، يمكن تجميع المسارات بناءً على مطابقة دوال المصدر والمصرف، أو عن طريق تسلسلات استدعاء متطابقة. يمكن بسهولة إضافة استراتيجيات تجميع مخصصة جديدة لتوسيع وتخصيص هذه الوظيفة (انظر التخصيص).
- الاستمرارية: يمكن إضافة تعليقات توضيحية على المسارات المكتشفة للتوضيح أو إزالتها إذا اعتبرت غير ذات صلة. للحفاظ على تقدم التحليل، يمكن حفظ المسارات مباشرة في قاعدة بيانات الملف الثنائي الهدف (تنسيق
.bndb الخاص بـ Binary Ninja). يمكن أيضًا تصدير المسارات، على سبيل المثال، عند إجراء تحليل رأسي عبر العديد من الملفات الثنائية على نظام ملفات، مما يسمح باستيراد المسارات المحددة لاحقًا لسهولة الاستكشاف داخل Binary Ninja.
- تحليل المسار باستخدام الذكاء الاصطناعي: يمكن لـ Mole التفاعل مع نماذج اللغة الكبيرة المحلية أو البعيدة (LLMs) عبر واجهة برمجة تطبيقات OpenAI (انظر الاستخدام). تُستخدم النماذج لتحليل المسارات المحددة والاستدلال على ما إذا كان مسار معين يتوافق مع ثغرة قابلة للاستغلال أم لا. يحاول LLM تصنيف الثغرة وتعيين مستوى خطورة، مما يساعد في تحديد أولويات المسارات التي تستحق مزيدًا من التحقيق من قبل المحلل. يوفر Mole مجموعة أساسية من الأدوات التي يمكن لـ LLM استخدامها لطلب معلومات إضافية حول الملف الثنائي قيد التحليل.
- القطع المتغير عبر الإجراءات: يدعم Mole قطع متغيرات MLIL عبر حدود الدوال - وهي مهمة تطرح عدة تحديات. على سبيل المثال، تحديد المستدعيات الفعلية لدالة بشكل ثابت غالبًا ما يكون صعبًا أو حتى مستحيلًا. نتيجة لذلك، فإن النهج المنفذ هو تقريب. على الرغم من أنه ليس مثاليًا، إلا أنه يؤدي بشكل معقول عبر مجموعة واسعة من السيناريوهات العملية.
- تحليل المؤشرات الأساسي: يطبق Mole حاليًا استراتيجية مبسطة لتتبع استخدام المؤشرات. مثل القطع عبر الإجراءات، هذا النهج هو تبسيط مع قيود متأصلة (على سبيل المثال، لا يمكنه تتبع المتغيرات العامة). ومع ذلك، فإنه يؤدي بشكل جيد في العديد من الحالات العملية ومن المقرر تحسينه في الإصدارات المستقبلية.
مثال استخدام
شاهد Mole أثناء عمله وهو يكشف CVE-2021-4045، وهي ثغرة حقن أوامر غير مصادق عليها في كاميرا IP TP-Link Tapo C200 (انقر على الصورة أدناه للمشاهدة على YouTube):

التوثيق
- التثبيت
- الاستخدام
- التخصيص
المساهمة أو مشاركة تجربتك
Mole هو حاليًا عمل قيد التقدم. إذا واجهت خطأ، أو كان لديك اختبار وحدة جديد مفيد يسلط الضوء على إيجابية أو سلبية كاذبة، أو لديك اقتراح لميزة جديدة، فيرجى التفكير في فتح مشكلة أو المساهمة عبر طلب سحب. لاحظ أيضًا أن اختبارات الوحدة الحالية تم التحقق منها فقط على الملفات الثنائية linux-x86_64 و linux-armv7 حتى الآن.
إذا كانت لديك قصة نجاح مثيرة للاهتمام - مثل العثور على ثغرة بمساعدة Mole - فسنكون سعداء بسماعها! لا تتردد في مشاركة تجربتك معنا.
المساهمون