
eBPF LSM program that blocks AF_ALG socket creation to mitigate CVE-2026-31431, with userspace daemon logging denied attempts via ring buffer.
BPF LSM program that blocks AF_ALG (Linux kernel crypto API) socket creation and logs all attempts via a ring buffer to userspace.
lsm/socket_create hooksocket(AF_ALG, ...) call with -EPERMPrograms
deny_af_alg.bpf.c - main block logic, work in bpf (kernel space)deny_af_alg.user.c - userspace program
Systemd
deny-af-alg.service - main service, contains userspace app and bpf programdeny-af-alg-bpf.service - legacy service, works via bpftool, dont contains loggingThis eBPF program addresses CVE-2026-31431. It resolves the vulnerability by restricted access to crypto socket
Need bfp in lsm
#cat /sys/kernel/security/lsm
lockdown,capability,yama,selinux,bpf
Note on
vmlinux.h:vmlinux.hgenerated on build machine.
If you are targeting a different kernel, regenerate it on the target machine before building:
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
Build via makefile
make
Build artifacts are placed in the project root:
| File | Description |
|---|---|
deny_af_alg | Userspace daemon |
deny_af_alg.bpf.o | Compiled BPF object |
sudo ./deny_af_alg
output
Listening for AF_ALG socket create attempts... (Ctrl-C to stop)
BLOCKED pid=12345 comm=python3
Copy deny-af-alg.service file and binary to target machine.
Run via systemd
systemctl start deny-af-alg.service
bpftool prog loadall deny_af_alg.bpf.o /sys/fs/bpf/deny_af_alg autoattach
Preparation
dnf install -y bpftool libbpf-devel clang llvm kernel-devel
Compile
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
Check
bpftool prog list | grep deny_af_alg
sudo cat /sys/kernel/debug/tracing/trace_pipe
deny_af_alg.skel.h| Generated BPF skeleton header |
vmlinux.h | Generated linux headers via btf |