
Shell-Scanner für CVE-2026-31431 "Copy Fail" — eine lokale Privilegienausweitung durch Linux-Kernel-Page-Cache-Korruption (algif_aead/AF_ALG). Prüft Kernel-Version, Patch-Status, Modulstatus, Setuid-Exposition und Gegenmaßnahmen. Unterstützt Debian 11–13 und Ubuntu 20.04–25.10. CI/CD-bereit (Exit-Codes + JSON-Ausgabe).
Shell-basierter Scanner für CVE-2026-31431 „Copy Fail“, eine lokale Privilegieneskalations-Schwachstelle im kryptografischen Subsystem des Linux-Kernels (algif_aead / AF_ALG-Schnittstelle). Ein unprivilegierter lokaler Benutzer kann 4 Bytes in den In-Memory-Page-Cache einer setuid-Binärdatei (z.B. /usr/bin/su) schreiben und eine Root-Shell erlangen – ohne die Datei auf der Festplatte zu berühren.
a664bf3d603d| Distribution | Veröffentlichung | Gepatchte Version |
|---|---|---|
| Debian | 11 Bullseye | 5.10.251-3 |
| Debian | 12 Bookworm | 6.1.170-1 |
| Debian | 13 Trixie | 6.12.85-1 |
| Debian | Sid / Forky | 6.19.14-1 |
| Ubuntu | 20.04 LTS Focal (GA) | 5.4.0-220.240 |
| Ubuntu | 20.04 LTS Focal (HWE) | 5.15.0-135.145~20.04.1 |
| Ubuntu | 22.04 LTS Jammy (GA) | 5.15.0-135.145 |
| Ubuntu | 22.04 LTS Jammy (HWE) | 6.8.0-61.63~22.04.1 |
| Ubuntu | 24.04 LTS Noble | 6.8.0-61.63 |
| Ubuntu | 24.10 Oracular | 6.11.0-27.27 |
| Ubuntu | 25.04 Plucky | 6.14.0-15.15 |
| Ubuntu | 25.10 Questing | Mainline-Fix (≥ 6.15) |
| Allgemein | beliebig | Mainline-Bereichsprüfung (4.14 – 6.14 anfällig) |
Ubuntu-Derivate, die auf den obigen Veröffentlichungen basieren (Pop!_OS, Linux Mint, Elementary OS, etc.) werden ebenfalls über ID_LIKE in /etc/os-release erkannt.
# Basic scan
bash cve-2026-31431-detect.sh
# No colour output (log files, CI)
bash cve-2026-31431-detect.sh --no-colour
# JSON output (machine-readable, for pipelines)
bash cve-2026-31431-detect.sh --json
# Quiet mode — only print the summary
bash cve-2026-31431-detect.sh --quiet
# Combine flags
bash cve-2026-31431-detect.sh --json --quiet
Keine Root-Rechte erforderlich. Es müssen keine Pakete installiert werden, außer einer Standard-Shell (bash ≥ 4.3) und optional python3 für den Live-AF_ALG-Socket-Test.
| Code | Bedeutung |
|---|---|
0 | Keine anfälligen Bedingungen gefunden |
1 | Eine oder mehrere anfällige Bedingungen gefunden |
2 | Skriptfehler / Prüfungen konnten nicht abgeschlossen werden |
Konzipiert für den Einsatz in DevSecOps-Pipelines – leiten Sie die JSON-Ausgabe an Ihr SIEM, Ticketsystem oder Compliance-Dashboard weiter.
Das Skript gibt Ergebnisse in zwei Sprachen aus:
Beide Abschnitte werden nach den Einzelprüfungsergebnissen auf stdout ausgegeben.
=== Kernel Version ===
[INFO] Distro flavour : ubuntu (id=ubuntu, codename=jammy, version=22.04)
[INFO] Kernel release : 5.15.0-135-generic
[OK] Kernel version
Reason : Ubuntu jammy: kernel 5.15.0-135.145 >= patched version 5.15.0-135.145
...
✅ PROTECTED — SYSTEM IS NOT VULNERABLE
❌ VULNERABLE — IMMEDIATE ACTION REQUIRED
✗ Kernel version
✗ Patch presence
✗ algif_aead module
✗ AF_ALG socket
✗ Setuid binaries
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: uname -v → must show >= 6.1.170-1 (Bookworm)
sudo apt update && sudo apt full-upgrade && sudo reboot
# After reboot: cat /proc/version_signature
Nur wirksam, wenn CONFIG_CRYPTO_USER_API_AEAD=m (als Modul gebaut). Hat keine Wirkung, wenn die Option einkompiliert ist (=y).
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo rmmod algif_aead 2>/dev/null || true
Dies betrifft nicht SSH, dm-crypt/LUKS, OpenSSL, GnuTLS, NSS, Webserver oder Festplattenverschlüsselung.
MIT
| # | Prüfung | Methode |
|---|
| 1 | Kernel-Version | uname -r / uname -v / dpkg / /proc/version_signature |
| 2 | Patch-Vorhandensein | Debian-Build-Version, Ubuntu-Pkg-Version, Commit-Präfix in /proc/version |
| 3 | algif_aead-Modul | /proc/modules, modprobe.d-Blacklist, .ko auf Disk |
| 4 | AF_ALG-Socket | Live socket(AF_ALG, …)-Versuch via Python 3 |
| 5 | Setuid-Binärdateien | Häufige setuid-root-Binärdateien als Schreibziele |
| 6 | Minderungsmaßnahmen | AppArmor, SELinux, seccomp-Status |
| 7 | Kernel-Konfiguration | CONFIG_CRYPTO_AUTHENC, CONFIG_CRYPTO_USER_API_AEAD |
| 8 | Benutzernamensräume | unprivileged_userns_clone, max_user_namespaces |
| 9 | Transparente Huge Pages | THP-Einstellung und Auswirkung auf Ausnutzung |
| 10 | Umgebung | Docker / Kubernetes / WSL-Erkennung, Root-Warnung |