العودة إلى التحديثات
New releaseAug 20, 2026

lava v3.3.0

LAVA: إضافة الثغرات الآلية على نطاق واسع

مشاركة

لافا: إضافة الثغرات الأمنية الآلية على نطاق واسع

Publish Lava Package and Container

Lava Tests

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

لافا هي نتاج تعاون بين مختبر لينكولن لمعهد ماساتشوستس للتكنولوجيا وجامعة نيويورك وجامعة نورث إيسترن.

البدء السريع

دوكر

يتم بناء أحدث إصدار من فرع 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.

الخطوات النهائية

استخدام host.json

بعد ذلك، قم بتشغيل init_host لإنشاء ملف host.json في دليل ~/.lava الخاص بك. يستخدم لافا هذا الملف لتخزين الإعدادات الخاصة بجهازك. يمكنك تعديل هذه الإعدادات حسب الحاجة، لكن القيم الافتراضية يجب أن تعمل، انظر vars.py.

بعض القيم التي يجب وضعها في الاعتبار هي التالية:

  • pguser هذا هو اسم مستخدم قاعدة البيانات، الإعداد الافتراضي حاليًا هو postgres
  • host هو اسم قاعدة بيانات Postgres SQL التي تحتوي على جميع أخطاء لافا. الإعداد الافتراضي حاليًا هو database، على الرغم من أنه إذا قمت بتثبيت لافا محليًا، فمن المحتمل أن تحتاج إلى تغيير هذا إلى 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 لإدخال الأخطاء فعليًا في برنامج. فقط قم بتوفير اسم مشروع موجود في دليل target_configs، على سبيل المثال:

lava -ak toy

يجب أن يكون لديك الآن نسخة بها أخطاء من toy!

إذا كنت ترغب في إدخال أخطاء في هدف جديد، فمن المحتمل أن تحتاج إلى إجراء بعض التعديلات. راجع How-to-Lava للحصول على إرشادات.

التوثيق

تحقق من مجلد docs للبدء.

المؤلفون

لافا هي نتيجة عدة سنوات من التطوير بواسطة العديد من الأشخاص؛ قائمة جزئية (أبجدية) من المساهمين أدناه:

  • 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

الفئات