
eBPF-LSM-Programm, das die Erstellung von AF_ALG-Sockets blockiert, um CVE-2026-31431 zu entschärfen, mit einem Userspace-Daemon, der abgelehnte Versuche über einen Ringpuffer protokolliert.
BPF-LSM-Programm, das die Erstellung von AF_ALG-Sockets (Linux-Kernel-Krypto-API) blockiert und alle Versuche über einen Ringpuffer an den Userspace protokolliert.
lsm/socket_create ansocket(AF_ALG, ...)-Aufruf mit -EPERMProgramme
deny_af_alg.bpf.c - Hauptblocklogik, Arbeit im BPF (Kernelspace)deny_af_alg.user.c - Userspace-Programm
Systemd
deny-af-alg.service - Hauptdienst, enthält Userspace-App und BPF-Programmdeny-af-alg-bpf.service - Legacy-Dienst, funktioniert über bpftool, enthält keine ProtokollierungDieses eBPF-Programm adressiert CVE-2026-31431. Es behebt die Schwachstelle durch eingeschränkten Zugriff auf den Krypto-Socket
Benötigt BPF in LSM
#cat /sys/kernel/security/lsm
lockdown,capability,yama,selinux,bpf
Hinweis zu
vmlinux.h:vmlinux.hwird auf der Build-Maschine generiert.
Wenn Sie ein anderes Kernel-Ziel verwenden, generieren Sie es auf der Zielmaschine neu, bevor Sie bauen:
bpftool btf dump file /sys/kernel/btf/vmlinux format c > vmlinux.h
Build über Makefile
make
Build-Artefakte werden im Projektstammverzeichnis abgelegt:
| Datei | Beschreibung |
|---|---|
deny_af_alg | Userspace-Daemon |
deny_af_alg.bpf.o | Kompiliertes BPF-Objekt |
sudo ./deny_af_alg
Ausgabe
Listening for AF_ALG socket create attempts... (Ctrl-C to stop)
BLOCKED pid=12345 comm=python3
Kopieren Sie die Datei deny-af-alg.service und die Binärdatei auf die Zielmaschine.
Ausführung über systemd
systemctl start deny-af-alg.service
bpftool prog loadall deny_af_alg.bpf.o /sys/fs/bpf/deny_af_alg autoattach
Vorbereitung
dnf install -y bpftool libbpf-devel clang llvm kernel-devel
Kompilieren
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
Prüfen
bpftool prog list | grep deny_af_alg
sudo cat /sys/kernel/debug/tracing/trace_pipe
deny_af_alg.skel.h |
| Generierter BPF-Skelett-Header |
vmlinux.h | Generierte Linux-Header über BTF |