
Bash-Skript zur Bewertung der Exposition eines Linux-Hosts gegenüber CVE-2026-31431, zur Überprüfung des Kernel-Modulstatus, zur Anwendung der Abschwächung durch Blockieren von algif_aead und zur Aktualisierung von Kernel-Paketen.
Dieses Repository dokumentiert ein Bash-Skript zur Bewertung der Exposition gegenüber CVE-2026-31431 auf Linux-Hosts, mit Schwerpunkt auf Ubuntu, sowie zur Anwendung einer einfachen Minderung durch Blockieren des Moduls algif_aead.
Sprachversionen:
README.mdREADME.pt-BR.mdDas Skript unterstützt drei Modi:
--check: Hostinformationen sammeln und den aktuellen Status klassifizieren.--mitigate: eine modprobe-Regel erstellen, um das anfällige Modul zu blockieren, und versuchen, es zu entladen.--update: Kernel-Paket-Upgrades über apt ausführen.CVE-2026-31431, öffentlich als Copy Fail bezeichnet, ist eine lokale Privilegieneskalations-Schwachstelle im Linux-Kernel, die mit dem Modul algif_aead verbunden ist, das die AEAD-Schnittstelle der Kernel-Userspace-Crypto-API über AF_ALG implementiert.
In der Praxis ermöglicht das Problem einem lokalen Benutzer mit niedrigen Privilegien, einen Logikfehler im Speicherverwaltungspfad dieses Subsystems auszunutzen und die Auswirkung auf eine vollständige Kompromittierung der Systemintegrität zu eskalieren. Der von kernel.org veröffentlichte und im NVD widergespiegelte Score ist CVSS 7.8 mit dem Vektor AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H, was bedeutet, dass der Angriff lokale Ausführung erfordert, aber hohe Auswirkungen auf Vertraulichkeit, Integrität und Verfügbarkeit hat.
2017 in den Kernel eingeführt, als eine In-Place-Optimierung zu algif_aead hinzugefügt wurde.22. April 2026 im NVD veröffentlicht.Copy Fail und mit einem öffentlichen Proof of Concept erfolgte am 29. April 2026.1. April 2026 committet, vor der breiten Offenlegung für Endbenutzer.Laut den veröffentlichten technischen Advisories beruht der Fehler auf der Kombination von:
AF_ALG-Schnittstellealgif_aeadsplice()Das praktische Ergebnis ist die Fähigkeit eines lokalen Prozesses, einen kleinen kontrollierten Schreibvorgang in Seiten mit Page-Cache-Backing von lesbaren Dateien durchzuführen. Unter günstigen Bedingungen reicht das aus, um einen begrenzten lokalen Ausgangspunkt in eine root-Privilegieneskalation zu verwandeln.
Das eigentliche Risiko besteht nicht einfach darin, „einen anfälligen Linux-Kernel auszuführen“, sondern darin, lokalem Code mit geringem Vertrauen den Zugriff auf diesen Kernel-Pfad zu ermöglichen. In Unternehmensumgebungen bedeutet das in der Regel eine höhere Exposition auf:
Wenn ein Angreifer bereits über eine Form der lokalen Ausführung verfügt, selbst ohne root, kann diese CVE der nächste Schritt zur Host-Kompromittierung werden. In der Praxis erweitert das das Risiko von:
algif_aead verwendet wirdalgif_aead ist Teil der Kernel-Userspace-Crypto-Schnittstelle (AF_ALG). Es ermöglicht Anwendungen, kryptografische Kernel-Primitive über Sockets zu verwenden, insbesondere AEAD-Operationen (Authenticated Encryption with Associated Data).
Dieses Modul ist für die meisten Standard-Server-Workloads in der Regel nicht essenziell. Gemäß den von CERT-EU veröffentlichten Minderungsrichtlinien sollte die Deaktivierung von algif_aead als temporäre Minderung:
dm-crypt oder LUKS nicht beeinträchtigenkTLS nicht beeinträchtigenIPsec/XFRM nicht beeinträchtigenOpenSSL, GnuTLS, NSS oder SSH im Standardgebrauch nicht beeinträchtigenAndererseits kann die Deaktivierung Folgendes beeinträchtigen:
afalg-Engine konfiguriert sindAF_ALG-Sockets direkt öffnetaead, skcipher oder hash über die Kernel-Crypto-API verwendenMit anderen Worten: Für die meisten Unternehmens-Hosts hat das Blockieren des Moduls tendenziell geringe Auswirkungen. Bei Appliances, kundenspezifischen Krypto-Stacks oder stark optimierten Softwarepfaden sollten die Auswirkungen vor dem Rollout validiert werden.
Das Blockieren des Moduls reduziert die Exposition sofort, bringt aber Kompromisse mit sich:
AF_ALG abhängen, starten möglicherweise nicht oder verlieren die kernelgestützte Krypto-BeschleunigungFür Produktionsumgebungen ist der sicherere Ansatz, die Minderung in einem kontrollierten Wartungsfenster anzuwenden und kritische Anwendungen danach zu validieren.
Das Blacklisten des Moduls ist nur eine temporäre Minderung. Der dauerhafte Fix ist:
Zusätzliche empfohlene Maßnahmen:
AF_ALG-Socket-Erstellung mit seccomp in Containern und Pipelines einschränken, wo anwendbarafalg oder die Kernel-Crypto-API explizit verwendet wirdDas Skript untersucht:
/etc/os-releasealgif_aeadmodprobe-Regel blockiert ist/var/run/reboot-required)pro fix CVE-2026-31431 --dry-run gemeldet wird, sofern verfügbarBasierend darauf gibt es eine der folgenden Klassifizierungen zurück:
PATCHED_OR_NOT_AFFECTEDLIKELY_NOT_VULNERABLEMITIGATEDVULNERABLE_MODULE_LOADEDPOTENTIALLY_VULNERABLEUNKNOWNZusammenfassend:
PATCHED_OR_NOT_AFFECTED.algif_aead im aktuellen Kernel nicht existiert, tendiert der Status zu LIKELY_NOT_VULNERABLE.MITIGATED.VULNERABLE_MODULE_LOADED.POTENTIALLY_VULNERABLE.modinfomodprobelsmodawkgrephostnameunameapt-get für --updatesudo bei Ausführung als Nicht-Root-Benutzerpro optional, um die Analyse auf Ubuntu anzureichernWenn die Skriptdatei check_cve_2026_31431.sh heißt:
chmod +x check_cve_2026_31431.sh
./check_cve_2026_31431.sh --check
./check_cve_2026_31431.sh --check
Beispielausgabe:
Host: srv-app-01
OS: Ubuntu 24.04 LTS
Kernel: 6.8.0-58-generic
CVE: CVE-2026-31431
Module exists: 1
Module loaded: 0
Module blocked: 1
Ubuntu affected: yes
Fix available: yes
Reboot required: 0
Status: MITIGATED
Reason: algif_aead exists but is blocked and not loaded
./check_cve_2026_31431.sh --check --json
Beispiel:
{"host":"srv-app-01","os":"Ubuntu 24.04 LTS","kernel":"6.8.0-58-generic","cve":"CVE-2026-31431","module":"algif_aead","module_exists":1,"module_loaded":0,"module_blocked":1,"ubuntu_affected":"yes","fix_available":"yes","reboot_required":0,"status":"MITIGATED","reason":"algif_aead exists but is blocked and not loaded"}
Diese Ausgabe ist nützlich für Automatisierung, Asset-Inventar und Compliance-Pipelines.
Der Modus --mitigate erstellt die Datei:
/etc/modprobe.d/disable-algif_aead-CVE-2026-31431.conf
Mit folgendem Inhalt:
install algif_aead /bin/false
blacklist algif_aead
Danach versucht das Skript, das Modul aus dem Speicher zu entfernen mit:
modprobe -r algif_aead
Verwendung:
./check_cve_2026_31431.sh --mitigate
Wenn der Benutzer nicht root ist, versucht das Skript, sudo zu verwenden.
Der Modus --update führt Folgendes aus:
apt-get update
apt-get install --only-upgrade -y 'linux-image-*' 'linux-modules-*' 'linux-aws*'
Verwendung:
./check_cve_2026_31431.sh --update
Dieser Modus versucht, kernelbezogene Pakete auf Debian- und Ubuntu-basierten Systemen zu aktualisieren. In anderen Umgebungen ist dieser Schritt möglicherweise nicht anwendbar.
./check_cve_2026_31431.sh --help
Ausgabe:
Usage: ./check_cve_2026_31431.sh [--check|--mitigate|--update] [--json]
ubuntu_affected und fix_available hängen vom Vorhandensein des Befehls pro ab.--update verwendet Ubuntu- und Debian-orientierte Paketmuster und deckt möglicherweise nicht alle kundenspezifischen Kernel ab.--check ausführen, um den Host zu bewerten.--mitigate ausführen.--update ausführen oder das offizielle Vendor-Update anwenden.--check --json ausführen, um den endgültigen Zustand zu validieren und Nachweise zu behalten.Zur besseren Veröffentlichungsklarheit sollte das Skript idealerweise einen beschreibenden Namen wie:
check_cve_2026_31431.sh
verwenden.
Material organisiert und veröffentlicht mit Anerkennung an SEC17.
Offizielle Website:
https://sec17.com