
Auditiert und härtet Linux-Systeme gegen lokale Privilege-Eskalation über AF_ALG (CVE-2026-31431), indem die Exposition der Kernel-Krypto-API geprüft, Module eingeschränkt und Wiederherstellungsskripte bereitgestellt werden.
Dieses Tool implementiert Structural Blocking zur Abschwächung von CVE-2026-31431, indem Kernel-Module physisch umbenannt und aus dem Speicher entfernt werden. Vor der Verwendung beachten Sie bitte die folgenden architektonischen Risiken:
/lib/modules/-Verzeichnis bereit, wodurch die vorherige Blockade wirkungslos wird.AF_ALG (Kernel-Krypto-API) kann bestimmte Anwendungen oder Dienste beeinträchtigen, die auf hardwarebeschleunigte Krypto-Funktionen auf Kernel-Ebene angewiesen sind (z. B. spezialisierte VPNs, Festplattenverschlüsselungs-Dienstprogramme oder benutzerdefinierte Sicherheitstools).[cite: 3]Nutzung auf eigene Gefahr. Überprüfen Sie nach der Ausführung von solution.sh immer die kritischen Funktionen Ihres Systems.[cite: 3]
Ein Werkzeugkasten zum Erkennen, Diagnostizieren und Eindämmen von LPE-Vektoren (Local Privilege Escalation) über die Linux-Kernel-Krypto-API (AF_ALG).
Das Tool verwendet Structural Blocking, um CVE-2026-31431 zu adressieren, indem Kernel-Module umbenannt und aus dem Speicher entfernt werden. Zu den wichtigsten architektonischen Risiken gehören:
/lib/modules/-Verzeichnis bereit, wodurch die vorherige Blockade wirkungslos wird.Nutzung auf eigene Gefahr.
Dieses Repository stellt zwei Skripte bereit, die einen Diagnose → Eindämmung → Verifizierung-Workflow gegen Privilege-Escalation-Angriffe über AF_ALG (socket(38, 5, 0)) bilden:
check.sh — Mehrschichtige Sicherheits-Posture-Prüfung (läuft ohne Privilegien)solution.sh — Erzwingt das Entfernen von AF_ALG-Modulen aus dem Speicher + prüft auf physische Moduldateien (Root erforderlich)restore.sh — Lädt AF_ALG-Module neu und stellt den Zustand vor solution.sh wieder her (Root erforderlich)./check.sh
sudo ./solution.sh
sudo ./restore.sh
restore.sh macht die Wirkung von solution.sh rückgängig, indem die AF_ALG-Kernel-Module (af_alg, algif_rng, algif_aead, algif_skcipher, algif_hash) neu geladen werden. Wenn die physische Moduldatei (af_alg.ko.xz) umbenannt oder entfernt wurde, warnt das Skript und fordert zur manuellen Wiederherstellung auf, bevor versucht wird, die Module zu laden.
Die Ausführung von solution.sh auf einem Live-System, das AF_ALG aktiv nutzt (z. B. ein System mit IPsec, dm-crypt/LUKS oder jeglichem Hardware-Krypto-Offload), wird sofort alle Kernel-Krypto-Operationen unterbrechen. Dies umfasst:
algif_*-Socket-Schnittstellen angewiesen istDas Skript erzwingt das Entladen der AF_ALG-Kernel-Module. Kernel-Krypto-Operationen schlagen bis zum Neustart fehl. Dieses Skript ist nur für luftabgeschirmte, nicht-produktive oder Wegwerfsysteme zu Test- und Analysezwecken gedacht. Führen Sie es nicht auf Produktions- oder kritischer Infrastruktur aus.
check.sh benötigt keine Abhängigkeiten außer einer POSIX-Shell und /proc//syssolution.sh erfordert Root-Rechterestore.sh erfordert Root-Rechteaf_alg_block.so erfordert Root-Rechte zur Installation über /etc/ld.so.preloadDieser POC wurde unter WSL2 getestet. Beachten Sie Folgendes:
wsl --shutdown). Dies umfasst Änderungen am Kernel-Modulzustand durch solution.sh, Dateiumbenennungen, check.sh-Ergebnisse und alle lokalen Dateiänderungen in diesem Repository..wslconfig, /etc/wsl.conf oder eines Autostart-Skripts (z. B. /etc/rc.local) separat in Betracht ziehen.Um den AF_ALG-Angriffsvektor endgültig zu schließen:
Kernel-Modul auf die Blacklist setzen (am zuverlässigsten):
echo "blacklist af_alg" | sudo tee /etc/modprobe.d/af_alg-blacklist.conf
Oder die physische Datei umbenennen:
sudo mv /lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz \
/lib/modules/$(uname -r)/kernel/crypto/af_alg.ko.xz.bak
AF_ALG über sysctl deaktivieren:
sudo sysctl -w net.core.af_alg_disabled=1
Erstellung von AF_ALG-Sockets über SELinux-/AppArmor-Richtlinien blockieren
Nicht privilegierte User-Namespaces deaktivieren (Container-Umgebungen):
sudo sysctl -w kernel.unprivileged_userns_clone=0
AF_ALG beim socket()-Syscall über LD_PRELOAD blockieren (WSL2-Workaround):
# Systemweit installieren (Root erforderlich)
echo /absoluter/pfad/zu/af_alg_block.so | sudo tee -a /etc/ld.so.preload
Eine vorgefertigte Shared Library (af_alg_block.so) ist im Repository enthalten. Sie fängt ab und gibt zurück, wenn die Domain (38) ist. Alle anderen Socket-Aufrufe werden unverändert an die echte Implementierung durchgereicht.
MIT
| Prüfung | Was untersucht wird | Schweregrad |
|---|
| Prozesskontext | Aktuelle UID/GID und effektive Capabilities | Niedrig |
| AF_ALG-Krypto-Socket | Zugänglichkeit der Kernel-Krypto-API über socket(AF_ALG, ...) | Hoch |
| kptr_restrict | Sichtbarkeit von Kernel-Zeigern für den Userspace | Mittel |
| dmesg_restrict | Zugriffsbeschränkung auf den Kernel-Ringpuffer | Mittel |
| SELinux | Zustand Enforcing / Permissive / Disabled | Mittel |
| /proc hidepid | Ob /proc Informationen anderer Prozesse verbirgt | Niedrig |
socket(2)EAFNOSUPPORTAF_ALGDieser Ansatz ist in erster Linie für WSL2 gedacht, wo Einzelbenutzer-Semantik und das Zurücksetzen bei Neustart ein systemweites LD_PRELOAD praktikabel machen. Auf traditionellen Mehrbenutzer-Linux-Systemen bevorzugen Sie Methode 1 (Modul-Blacklist) — das Injizieren über /etc/ld.so.preload betrifft jeden Prozess auf dem System und kann AF_ALG-abhängige Dienste stillschweigend unterbrechen.
Hinweis: Erfordert glibc (nicht musl). /etc/ld.so.preload erfordert Root-Rechte zum Ändern. Die Entfernung erfolgt durch Löschen der entsprechenden Zeile aus der Datei.