
برنامج eBPF لكشف الهجمات على CVE-2022-0847
برنامج eBPF لاكتشاف والدفاع ضد هجمات CVE-2022-0847.
في مساحة النواة، يكتشف البرنامج استدعاءات النظام splice()، إذا كان مثل هذا الاستدعاء يحتوي على أنبوب (pipe) كوصف ملف الإخراج، وتم تعيين علامات مخزن الأنبوب إلى PIPE_BUF_FLAG_CAN_MERGE، فسيتم إرسال حدث. في مساحة المستخدم، يقوم البرنامج بقتل العملية المقابلة التي تستدعي splice()، ويقوم بالكتابة فوق /proc/sys/vm/drop_caches لمسح ذاكرة التخزين المؤقت للصفحات.
تم اختباره على Ubuntu Server 20.10 مع النواة 5.8.0-25.
clang -g -O2 -target bpf -D__TARGET_ARCH_x86_64 -I/usr/src/linux-headers-5.8.0-25/include -I/usr/include -c ./splice.bpf.c -o splice.bpf.o
bpftool gen skeleton ./splice.bpf.o > splice.skel.h
clang -I/usr/include -c splice.c -o splice_epbf.o
clang splice_epbf.o -lbpf -lelf -lz -o splice_epbf