
lava v3.3.0
LAVA: إضافة الثغرات الآلية على نطاق واسع
LAVA: إضافة الثغرات الأمنية الآلية على نطاق واسع
تقييم وتحسين أدوات اكتشاف الأخطاء أمر صعب حالياً بسبب نقص في مجموعات البيانات المرجعية (أي البرمجيات التي تحتوي على أخطاء معروفة مع مدخلات مُحفِّزة). يحاول LAVA حل هذه المشكلة عن طريق حقن الأخطاء تلقائياً في البرمجيات. كل خطأ في LAVA مصحوب بمدخل يُحفِّزه، بينما المدخلات العادية من غير المرجح للغاية أن تفعل ذلك. هذه الثغرات الأمنية اصطناعية ولكننا نرى أنها لا تزال واقعية، بمعنى أنها مدمجة بعمق داخل البرامج ويتم تحفيزها بواسطة مدخلات حقيقية. يشكل عملنا أساس نهج لتوليد مجموعات بيانات مرجعية كبيرة للثغرات الأمنية عند الطلب، مما يتيح تقييماً صارماً للأدوات ويوفر هدفاً عالي الجودة لمطوري الأدوات.
LAVA هو نتاج تعاون بين مختبر لينكولن التابع لمعهد ماساتشوستس للتكنولوجيا، وجامعة نيويورك، وجامعة نورث إيسترن.
البدء السريع
Docker
يتم بناء أحدث إصدار من فرع 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، Debian
التثبيت المحلي
على نظام يعمل بنظام 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.
الخطوات النهائية
استخدام host.json
بعد ذلك، قم بتشغيل init_host لإنشاء host.json في دليل ~/.lava الخاص بك.
يُستخدم هذا الملف بواسطة LAVA لتخزين الإعدادات الخاصة
بجهازك. يمكنك تعديل هذه الإعدادات حسب الحاجة، ولكن القيم الافتراضية
يجب أن تعمل، انظر vars.py.
بعض القيم التي يجب وضعها في الاعتبار هي التالية:
- pguser هذا هو اسم مستخدم قاعدة البيانات، حالياً القيمة الافتراضية هي
postgres - host هو اسم قاعدة بيانات Postgres SQL التي تحتوي على جميع أخطاء LAVA. حالياً، القيمة الافتراضية هي
database، على الرغم من أنه إذا قمت بتثبيت LAVA محلياً، فمن المحتمل أن تحتاج إلى تغيير هذا إلىlocalhost
ملاحظة: تحتاج أيضاً إلى متغيري بيئة لقاعدة بيانات Postgres SQL:
POSTGRES_PASSهذا هو كلمة المرور لمستخدم Postgres SQL`POSTGRES_USERهذا هو اسم المضيف لقاعدة بيانات Postgres SQL
إعدادات المشروع
توجد إعدادات المشروع في دليل target_configs، حيث
يوجد كل إعداد في target_configs/projectname/projectname.json.
المسارات المحددة داخل ملفات الإعداد هذه نسبية إلى القيم المحددة
في ملف host.json الخاص بك.
إعداد قاعدة بيانات postgres SQL
كما أُشير إليه، يجب عليك إنشاء مستخدم Postgres SQL. يمكنك استخدام سكريبت باستخدام متغيرات البيئة للقيام بما يلي:
- إنشاء المستخدم باسم المستخدم وكلمة المرور المقدمين من متغيرات البيئة.
- تحديث قاعدة بيانات Postgres SQL على المضيف لقبول حركة المرور من مصادر خارجية (مثل حاوية LAVA Docker)
الاستخدام
أخيراً، يمكنك تشغيل lava لحقن الأخطاء فعلياً في برنامج.
فقط قم بتوفير اسم مشروع موجود في دليل target_configs، على سبيل المثال:
lava -ak toy
يجب أن يكون لديك الآن نسخة معيبة من toy!
إذا كنت تريد حقن الأخطاء في هدف جديد، فمن المحتمل أنك ستحتاج إلى إجراء بعض التعديلات. راجع How-to-Lava للحصول على الإرشادات.
التوثيق
راجع مجلد docs للبدء.
المؤلفون
LAVA هو نتيجة عدة سنوات من التطوير من قبل العديد من الأشخاص؛ القائمة الجزئية (أبجدياً) للمساهمين أدناه:
- Andy Davis
- Brendan Dolan-Gavitt
- Andrew Fasano
- Zhenghao Hu
- Patrick Hulin
- Amy Jiang
- Engin Kirda
- Tim Leek
- Andrea Mambretti
- Andrew Quijano
- Wil Robertson
- Aaron Sedlacek
- Rahul Sridhar
- Frederick Ulrich
- Ryan Whelan