
سلسلة أدوات اختبار (fuzzer) لـ eBPF تُولّد برامج eBPF عشوائية وتتحقق من سلوك المُتحقِّق (verifier) ووقت التشغيل (runtime) في النواة. تدعم الاختبار الموجَّه بالتغطية (coverage-guided fuzzing) وتتتبّع ثغرات CVE المكتشفة.
Buzzer هي سلسلة أدوات فازر تسمح بكتابة استراتيجيات الفازينج الخاصة بـ eBPF.
استراتيجية الفازينج هي وسيلة لتوليد برامج eBPF عشوائية ثم التحقق من عدم وجود سلوك غير متوقع فيها.
لتشغيل الفازر اتبع الخطوات التالية
ثبّت bazel.
ثبّت clang
اضبط متغيرات البيئة CC و CXX الصحيحة
export CC=clang
export CXX=clang++
شغّل
bazel build :buzzer
شغّل الفازر إما بصلاحيات الجذر:
sudo ./bazel-bin/buzzer_/buzzer
أو مع CAP_BPF:
sudo setcap CAP_BPF=eip bazel-bin/buzzer_/buzzer
./bazel-bin/buzzer_/buzzer
هل وجدت خطأً رائعًا باستخدام Buzzer؟ أخبرنا عبر طلب سحب! نود جمع جميع المشكلات المكتشفة باستخدام هذا الإطار تحت هذا القسم.
CVE-2023-2163: خطأ في منطق تقليم الفروع في أداة التحقق eBPF يمكن أن يتسبب في عدم استكشاف المسارات غير الآمنة. المسارات المقلّمة غير الآمنة هي المسارات الفعلية التي تُتخذ في وقت التشغيل، مما يسبب تباينًا بين ما تعتقد أداة التحقق أن قيم سجلات معينة هي عليه وبين قيمها الفعلية. يمكن استغلال هذا التباين لقراءة/كتابة ذاكرة اعتباطية في النواة باستخدام السجلات المشوشة كسجلات أساسية لعمليات الذاكرة.
CVE-2024-41003: خطأ في تتبع حدود السجلات في أداة التحقق يسمح للمهاجم بخداع أداة التحقق لتعتقد أن سجلًا ما يحمل القيمة 0 بينما قد يحمل هذا السجل القيمة 1 في وقت التشغيل. يمكن بعد ذلك استغلال هذا لتحقيق قراءة/كتابة اعتباطية لذاكرة النواة والوصول إلى تصعيد محلي للصلاحيات أو الهروب من الحاوية.