
eBPF LSM program that blocks AF_ALG socket creation to mitigate CVE-2026-31431, with userspace daemon logging denied attempts via ring buffer.
Programme BPF LSM qui bloque la création de sockets AF_ALG (API crypto du noyau Linux) et journalise toutes les tentatives via un ring buffer vers l'espace utilisateur.
lsm/socket_createsocket(AF_ALG, ...) avec -EPERMProgrammes
deny_af_alg.bpf.c - logique principale de blocage, travaille en bpf (espace noyau)deny_af_alg.user.c - programme en espace utilisateur
Systemd
deny-af-alg.service - service principal, contient l'application en espace utilisateur et le programme bpfdeny-af-alg-bpf.service - service hérité, fonctionne via bpftool, ne contient pas de journalisationCe programme eBPF traite la CVE-2026-31431. Il résout la vulnérabilité en restreignant l'accès au socket crypto
Nécessite bpf dans lsm
#cat /sys/kernel/security/lsm
lockdown,capability,yama,selinux,bpf
Note sur
vmlinux.h:vmlinux.hest généré sur la machine de compilation.
Si vous ciblez un noyau différent, régénérez-le sur la machine cible avant de compiler :
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
Compilation via makefile
make
Les artefacts de compilation sont placés à la racine du projet :
| Fichier | Description |
|---|---|
deny_af_alg | Démon en espace utilisateur |
deny_af_alg.bpf.o | Objet BPF compilé |
deny_af_alg.skel.h | En-tête de squelette BPF généré |
vmlinux.h | En-têtes Linux générés via btf |
sudo ./deny_af_alg
sortie
Listening for AF_ALG socket create attempts... (Ctrl-C to stop)
BLOCKED pid=12345 comm=python3
Copiez le fichier deny-af-alg.service et le binaire sur la machine cible.
Exécution via systemd
systemctl start deny-af-alg.service
bpftool prog loadall deny_af_alg.bpf.o /sys/fs/bpf/deny_af_alg autoattach
Préparation
dnf install -y bpftool libbpf-devel clang llvm kernel-devel
Compilation
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
Vérification
bpftool prog list | grep deny_af_alg
sudo cat /sys/kernel/debug/tracing/trace_pipe