
LAVA: إضافة الثغرات الآلية على نطاق واسع
يُعد تقييم وتحسين أدوات اكتشاف الأخطاء أمرًا صعبًا حاليًا بسبب نقص مجموعات بيانات الحقيقة الأساسية (أي برامج تحتوي على أخطاء معروفة مع مدخلات تثيرها). تحاول لافا حل هذه المشكلة عن طريق إدخال الأخطاء تلقائيًا في البرامج. كل خطأ من أخطاء لافا يكون مصحوبًا بمدخل يثيره، بينما المدخلات العادية من غير المرجح أن تفعل ذلك. هذه الثغرات الأمنية اصطناعية، لكننا نجادل بأنها لا تزال واقعية، بمعنى أنها مضمنة بعمق داخل البرامج ويتم إثارتها بمدخلات حقيقية. يشكل عملنا أساسًا لمنهجية لتوليد مجموعات كبيرة من ثغرات الحقيقة الأساسية عند الطلب، مما يتيح تقييمًا صارمًا للأدوات وتوفير هدف عالي الجودة لمطوري الأدوات.
لافا هي نتاج تعاون بين مختبر لينكولن لمعهد ماساتشوستس للتكنولوجيا وجامعة نيويورك وجامعة نورث إيسترن.
يتم بناء أحدث إصدار من فرع master الخاص بـلافا تلقائيًا كصور دوكر مبنية على أوبونتو 22.04 ويتم نشرها على دوكر هب. معظم المستخدمين سيرغبون في استخدام حاوية lava التي تحتوي على باندا ولافا مثبتين مع تبعيات وقت التشغيل، ولكن لا تحتوي على أي مخرجات بناء أو كود مصدر لتقليل حجم الحاوية.
لاستخدام حاوية lava يمكنك سحبها من دوكر هب:
$ docker pull pandare/lava
أو بناؤها من هذا المستودع:
$ DOCKER_BUILDKIT=1 docker build lava .
على نظام يعمل بأوبونتو 22.04، يجب أن تكون قادرًا على تشغيل bash install.sh.
لاحظ أن نص التثبيت هذا سيقوم بتثبيت الحزم وإجراء تغييرات على نظامك.
يمكنك إزالة الملفات الثنائية باستخدام sudo apt-get remove lava.
بمجرد الانتهاء من تثبيت الملف الثنائي، يمكنك التثبيت محليًا عن طريق تشغيل pip install python/.
ملاحظة أن حزمة بايثون تتطلب ملف SQL تم إنشاؤه من تجميع الملفات الثنائية ويتم وضعه في python/src/pyroclastic/data/lava.sql.
بدون هذا الملف، لن تعمل حزمة بايثون بشكل صحيح.
بدلاً من ذلك، يمكنك تثبيت تبعيات لافا يدويًا ثم البناء من المصدر.
قم بتنزيل حزم دبيان الموجودة في الإصدارات. ثم قم بتثبيت حزمة بايثون pip install pyroclastic.
بعد ذلك، قم بتشغيل init_host لإنشاء ملف host.json في دليل ~/.lava الخاص بك.
يستخدم لافا هذا الملف لتخزين الإعدادات الخاصة بجهازك. يمكنك تعديل هذه الإعدادات حسب الحاجة، لكن القيم الافتراضية يجب أن تعمل، انظر vars.py.
بعض القيم التي يجب وضعها في الاعتبار هي التالية:
postgresdatabase، على الرغم من أنه إذا قمت بتثبيت لافا محليًا، فمن المحتمل أن تحتاج إلى تغيير هذا إلى localhostملاحظة: تحتاج أيضًا إلى متغيرين للبيئة لقاعدة بيانات Postgres SQL:
POSTGRES_PASS هذه هي كلمة مرور مستخدم Postgres SQLPOSTGRES_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 للبدء.
لافا هي نتيجة عدة سنوات من التطوير بواسطة العديد من الأشخاص؛ قائمة جزئية (أبجدية) من المساهمين أدناه: