
eBPF LSM program che blocca la creazione di socket AF_ALG per mitigare CVE-2026-31431, con daemon in userspace che registra i tentativi negati tramite ring buffer.
Programma BPF LSM che blocca la creazione di socket AF_ALG (API crittografica del kernel Linux) e registra tutti i tentativi tramite un ring buffer verso lo spazio utente.
lsm/socket_createsocket(AF_ALG, ...) con -EPERMProgrammi
deny_af_alg.bpf.c - logica principale di blocco, funziona in bpf (spazio kernel)deny_af_alg.user.c - programma in spazio utente
Systemd
deny-af-alg.service - servizio principale, contiene l'app in spazio utente e il programma bpfdeny-af-alg-bpf.service - servizio legacy, funziona tramite bpftool, non include la registrazioneQuesto programma eBPF affronta la CVE-2026-31431. Risolve la vulnerabilità limitando l'accesso al socket crittografico
Serve bpf in lsm
#cat /sys/kernel/security/lsm
lockdown,capability,yama,selinux,bpf
Nota su
vmlinux.h:vmlinux.hgenerato sulla macchina di build.
Se si punta a un kernel diverso, rigenerarlo sulla macchina di destinazione prima della build:
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
Build tramite makefile
make
Gli artefatti della build vengono collocati nella radice del progetto:
| File | Descrizione |
|---|---|
deny_af_alg | Demone in spazio utente |
deny_af_alg.bpf.o | Oggetto BPF compilato |
sudo ./deny_af_alg
output
Listening for AF_ALG socket create attempts... (Ctrl-C to stop)
BLOCKED pid=12345 comm=python3
Copiare il file deny-af-alg.service e il binario sulla macchina di destinazione.
Esecuzione tramite systemd
systemctl start deny-af-alg.service
bpftool prog loadall deny_af_alg.bpf.o /sys/fs/bpf/deny_af_alg autoattach
Preparazione
dnf install -y bpftool libbpf-devel clang llvm kernel-devel
Compilazione
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
Verifica
bpftool prog list | grep deny_af_alg
sudo cat /sys/kernel/debug/tracing/trace_pipe
deny_af_alg.skel.h |
| Header skeleton BPF generato |
vmlinux.h | Header Linux generati tramite btf |