
برنامج eBPF LSM يمنع إنشاء مآخذ AF_ALG للتخفيف من CVE-2026-31431، مع برنامج خفي في مساحة المستخدم يسجل المحاولات المرفوضة عبر المخزن الحلقي.
برنامج BPF LSM يمنع إنشاء مآخذ AF_ALG (واجهة برمجة التشفير في نواة لينكس) ويسجّل جميع المحاولات عبر حلقة تخزين مؤقت (ring buffer) إلى مساحة المستخدم.
lsm/socket_createsocket(AF_ALG, ...) مع -EPERMالبرامج
deny_af_alg.bpf.c - منطق الحظر الرئيسي، يعمل في bpf (مساحة النواة)deny_af_alg.user.c - برنامج مساحة المستخدم
Systemd
deny-af-alg.service - الخدمة الرئيسية، تحتوي على تطبيق مساحة المستخدم وبرنامج bpfdeny-af-alg-bpf.service - خدمة قديمة، تعمل عبر bpftool، لا تحتوي على تسجيليعالج برنامج eBPF هذا CVE-2026-31431. يحل الثغرة الأمنية عن طريق تقييد الوصول إلى مآخذ التشفير
تحتاج إلى bpf في lsm
#cat /sys/kernel/security/lsm
lockdown,capability,yama,selinux,bpf
ملاحظة حول
vmlinux.h: يتم إنشاءvmlinux.hعلى جهاز البناء.
إذا كنت تستهدف نواة مختلفة، أعد إنشاءه على الجهاز الهدف قبل البناء:
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
البناء عبر makefile
make
تُوضع نواتج البناء في جذر المشروع:
| الملف | الوصف |
|---|---|
deny_af_alg | برنامج مساحة المستخدم (daemon) |
deny_af_alg.bpf.o | كائن BPF المُجمَّع |
sudo ./deny_af_alg
المخرجات
Listening for AF_ALG socket create attempts... (Ctrl-C to stop)
BLOCKED pid=12345 comm=python3
انسخ ملف deny-af-alg.service والملف الثنائي إلى الجهاز الهدف.
شغّل عبر systemd
systemctl start deny-af-alg.service
bpftool prog loadall deny_af_alg.bpf.o /sys/fs/bpf/deny_af_alg autoattach
التحضير
dnf install -y bpftool libbpf-devel clang llvm kernel-devel
الترجمة
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
clang -O2 -g -target bpf -D__TARGET_ARCH_x86 -I/usr/include/bpf -c deny_af_alg.bpf.c -o deny_af_alg.bpf.o
التحقق
bpftool prog list | grep deny_af_alg
sudo cat /sys/kernel/debug/tracing/trace_pipe
deny_af_alg.skel.h | ملف رأس الهيكل العظمي المُولَّد لـ BPF |
vmlinux.h | ملفات رأس لينكس المُولَّدة عبر btf |