
LAVA: إضافة الثغرات الآلية على نطاق واسع
تقييم وتحسين أدوات اكتشاف الأخطاء أمر صعب حالياً بسبب نقص في مجموعات البيانات المرجعية (أي البرمجيات التي تحتوي على أخطاء معروفة مع مدخلات مُحفِّزة). يحاول LAVA حل هذه المشكلة عن طريق حقن الأخطاء تلقائياً في البرمجيات. كل خطأ في LAVA مصحوب بمدخل يُحفِّزه، بينما المدخلات العادية من غير المرجح للغاية أن تفعل ذلك. هذه الثغرات الأمنية اصطناعية ولكننا نرى أنها لا تزال واقعية، بمعنى أنها مدمجة بعمق داخل البرامج ويتم تحفيزها بواسطة مدخلات حقيقية. يشكل عملنا أساس نهج لتوليد مجموعات بيانات مرجعية كبيرة للثغرات الأمنية عند الطلب، مما يتيح تقييماً صارماً للأدوات ويوفر هدفاً عالي الجودة لمطوري الأدوات.
LAVA هو نتاج تعاون بين مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا، وجامعة نيويورك، وجامعة نورث إيسترن.
يتم بناء أحدث إصدار من فرع master الخاص بـ LAVA تلقائياً كصورة docker بناءً على Ubuntu 22.04 ونشرها إلى Docker Hub. سيرغب معظم المستخدمين في استخدام حاوية lava التي تحتوي على PANDA و LAVA مثبتين مع تبعيات وقت التشغيل الخاصة بهما، ولكن بدون مخرجات البناء أو الكود المصدري لتقليل حجم الحاوية.
لاستخدام حاوية lava يمكنك سحبها من Docker Hub:
$ docker pull pandare/lava
أو البناء من هذا المستودع:
$ DOCKER_BUILDKIT=1 docker build lava .
على نظام يعمل بنظام Ubuntu 22.04، يجب أن تكون قادراً على تشغيل bash install.sh فقط.
لاحظ أن سكريبت التثبيت هذا سيقوم بتثبيت الحزم وإجراء تغييرات على نظامك.
يمكنك إزالة الملفات التنفيذية باستخدام sudo apt-get remove lava.
بمجرد الانتهاء من تثبيت الملف التنفيذي، يمكنك التثبيت محلياً بتشغيل pip install ..
ملاحظة أن حزمة Python تتطلب ملف SQL مُولَّد من تجميع الملفات التنفيذية يتم وضعه في python/src/pyroclastic/data/lava.sql.
بدون هذا الملف، لن تعمل حزمة Python بشكل صحيح.
بدلاً من ذلك، يمكنك تثبيت تبعيات LAVA يدوياً ثم البناء من المصدر.
قم بتنزيل حزم Debian الموجودة في الإصدارات. ثم قم بتثبيت حزمة python pip install pyroclastic.
بعد ذلك، قم بتشغيل init_host لإنشاء host.json في دليل ~/.lava الخاص بك.
يُستخدم هذا الملف بواسطة LAVA لتخزين الإعدادات الخاصة
بجهازك. يمكنك تعديل هذه الإعدادات حسب الحاجة، ولكن القيم الافتراضية
يجب أن تعمل، انظر vars.py.
بعض القيم التي يجب وضعها في الاعتبار هي التالية:
postgresdatabase، على الرغم من أنه إذا قمت بتثبيت LAVA محلياً، فمن المحتمل أن تحتاج إلى تغيير هذا إلى localhostملاحظة: تحتاج أيضاً إلى متغيري بيئة لقاعدة بيانات Postgres SQL:
POSTGRES_PASS هذا هو كلمة المرور لمستخدم Postgres SQL`POSTGRES_USER هذا هو اسم المضيف لقاعدة بيانات Postgres SQLتوجد إعدادات المشروع في دليل target_configs، حيث
يوجد كل إعداد في target_configs/projectname/projectname.json.
المسارات المحددة داخل ملفات الإعداد هذه نسبية إلى القيم المحددة
في ملف host.json الخاص بك.
كما أُشير إليه، يجب عليك إنشاء مستخدم Postgres SQL. يمكنك استخدام سكريبت باستخدام متغيرات البيئة للقيام بما يلي:
أخيراً، يمكنك تشغيل lava لحقن الأخطاء فعلياً في برنامج.
فقط قم بتوفير اسم مشروع موجود في دليل target_configs، على سبيل المثال:
lava -ak toy
يجب أن يكون لديك الآن نسخة معيبة من toy!
إذا كنت تريد حقن الأخطاء في هدف جديد، فمن المحتمل أنك ستحتاج إلى إجراء بعض التعديلات. راجع How-to-Lava للحصول على الإرشادات.
راجع مجلد docs للبدء.
LAVA هو نتيجة عدة سنوات من التطوير من قبل العديد من الأشخاص؛ القائمة الجزئية (أبجدياً) للمساهمين أدناه: