
Archiviert, verschoben nach codesource/cve-check. Shell-Skript zur Erkennung der Exposition gegenüber CVE-2026-31431 (Copy Fail) und entsprechender Gegenmaßnahmen auf Linux-Systemen: Kernel-Prüfung, Modulstatus, Boot-Parameter, AF_ALG-Erreichbarkeit und Patch-Status der Distribution.
[!IMPORTANT] Dieses Repository ist archiviert. Die Copy-Fail-Prüfung befindet sich jetzt in cve-check, zusammen mit anderen Schwachstellenprüfungen und einem optionalen
--fix-Modus, der die Behebung anwendet. Siehe checks/CVE-2026-31431 für diese Prüfung.curl -fsSL https://raw.githubusercontent.com/codesource/cve-check/main/cve-check.sh | sudo bash -s -- CVE-2026-31431Das untenstehende
check_copyfail.shfunktioniert weiterhin, wird aber nicht mehr aktualisiert.
Shell-Skripte zur Erkennung von Linux-Kernel-Schwachstellen, zur Prüfung des Mitigationsstatus und zur Anleitung bei der Behebung — konzipiert für die lokale Ausführung oder den Einsatz über ganze Flotten hinweg via SSH, Ansible oder pssh.
Copy Fail ist eine lokale Privilegieneskalations-Schwachstelle (LPE) mit hohem Schweregrad im kryptografischen Modul algif_aead des Linux-Kernels. Ein 2017 eingeführter Logikfehler ermöglicht es jedem unprivilegierten lokalen Benutzer, 4 kontrollierte Bytes in den Page-Cache jeder lesbaren Datei zu schreiben — genug, um eine setuid-Binärdatei zu überschreiben und Root-Rechte zu erlangen. Ein funktionierender 732-Byte-Python-Proof-of-Concept existiert und ist öffentlich verfügbar.
| CVE | CVE-2026-31431 |
| CVSS | 7.8 (Hoch) |
| Offengelegt | 29. April 2026 |
| Betroffen | Linux-Kernel 4.13 – 6.x (2017–2026) |
| Distributionen | Ubuntu, RHEL, SUSE, Debian, Amazon Linux und die meisten anderen |
| Remote ausnutzbar | Nein — lokaler Zugriff erforderlich |
| Patch verfügbar | Teilweise — prüfen Sie die Sicherheitshinweise Ihrer Distribution |
| Prüfung | Root erforderlich? |
|---|---|
| Kernel-Version — ob Sie im betroffenen Bereich liegen (≥ 4.13) | Nein |
algif_aead-Modul — geladen, auf der Festplatte vorhanden oder blockiert | Nein |
Boot-Parameter — Vorhandensein von initcall_blacklist=algif_aead_init | Nein |
| Erreichbarkeit des AF_ALG-Sockets — ob der Exploit-Pfad offen ist | Nein |
| SELinux-Status | Nein |
| AppArmor-Status | Ja — ohne Root nur Teilausgabe |
| Distro-Patch-Status — CVE im Kernel-Changelog aufgeführt | Nein |
Root ist nicht erforderlich, um das Skript auszuführen — alle Prüfungen außer dem AppArmor-Status funktionieren als regulärer Benutzer. Die Ausführung mit
sudowird für vollständige Ergebnisse empfohlen und ist die sicherere Wahl beim Piping voncurl.
Das Skript ist für die Verwendung über alle gängigen Linux-Distributionen hinweg konzipiert:
| Distributionsfamilie | Paketmanager-Prüfung | Modulpfad |
|---|---|---|
| Debian, Ubuntu | dpkg + Kernel-Changelog | /lib/modules/ |
| RHEL, CentOS, Amazon Linux | rpm (kernel, kernel-rt) | /lib/modules/ |
| SUSE, openSUSE | rpm (kernel-default) | /lib/modules/ |
| Arch Linux | pacman + Advisory-Link | /usr/lib/modules/ |
| Fedora | rpm + /usr/lib/modules/-Fallback | /usr/lib/modules/ |
Erfordert
bash— das Skript verwendet bash-spezifische Syntax und läuft nicht untersh,ashoderdash. Unter Alpine Linux (das standardmäßig busybox ash verwendet) installieren Sie zuerst bash:apk add bash
Ohne Root — die meisten Prüfungen funktionieren:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | bash
Mit root — vollständige Ergebnisse einschließlich AppArmor-Status:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash
Tipp: Legen Sie in der Produktion einen bestimmten Commit-SHA fest, damit sich das Skript nicht unter Ihnen ändern kann:
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/COMMIT_SHA/check_copyfail.sh | sudo bash
curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh -o check_copyfail.sh
less check_copyfail.sh
bash check_copyfail.sh # without root
sudo bash check_copyfail.sh # full results
SSH-Schleife
for HOST in server1 server2 server3; do
echo "=== $HOST ==="
ssh "$HOST" "curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
done
Ansible
- name: Check Copy Fail vulnerability
hosts: all
tasks:
- name: Run check script
script: check_copyfail.sh
become: yes
Paralleles SSH
pssh -h hosts.txt -i \
"curl -fsSL https://raw.githubusercontent.com/codesource/copyfail-check/main/check_copyfail.sh | sudo bash"
============================================================
Copy Fail CVE-2026-31431 – Vulnerability Check
============================================================
>>> Kernel Version
[INFO] Running kernel: 5.15.0-107-generic
[WARN] Kernel 5.15.0-107-generic is in the affected range (4.13 – 6.x).
>>> algif_aead Module Status
[WARN] algif_aead module is currently LOADED — system is exploitable.
[WARN] Module file found at: /lib/modules/5.15.0-107-generic/kernel/crypto/algif_aead.ko
[WARN] algif_aead is NOT blacklisted — it can be loaded on demand.
>>> Kernel Boot Parameter Mitigation
[WARN] initcall_blacklist=algif_aead_init is NOT set in boot parameters.
>>> AF_ALG Socket Reachability
[WARN] AF_ALG sockets are reachable by this user — exploit path is open.
>>> Mandatory Access Control (SELinux / AppArmor)
[WARN] Neither SELinux nor AppArmor tools detected — no MAC layer present.
>>> Distribution Patch Status
[WARN] Could not confirm CVE-2026-31431 is listed as fixed in running kernel's changelog.
============================================================
SUMMARY
============================================================
!! LIKELY VULNERABLE — No confirmed mitigation detected.
Recommended actions (in order of preference):
1. Apply your distro's kernel update as soon as available.
2. Add to /etc/modprobe.d/copyfail.conf:
blacklist algif_aead
install algif_aead /bin/true
Then run: sudo depmod -a && sudo update-initramfs -u
3. Add to kernel boot parameters (grub):
initcall_blacklist=algif_aead_init
4. Immediately unload the module if loaded:
sudo rmmod algif_aead
============================================================
Wenden Sie diese in der Reihenfolge ihrer Bevorzugung an:
1. Patchen Sie Ihren Kernel (beste Lösung)
# Debian / Ubuntu
sudo apt update && sudo apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Amazon Linux
sudo yum update kernel
# SUSE
sudo zypper update kernel-default
2. Das Modul auf die Blacklist setzen (sofort, dauerhaft)
sudo tee /etc/modprobe.d/copyfail.conf << 'EOF'
blacklist algif_aead
install algif_aead /bin/true
EOF
sudo depmod -a
# Debian/Ubuntu
sudo update-initramfs -u
# RHEL/Fedora
sudo dracut -f
3. Modul jetzt entladen (sofort, nicht dauerhaft über Neustarts hinweg)
sudo rmmod algif_aead
4. Kernel-Boot-Parameter (Alternative zur Blacklist)
Fügen Sie initcall_blacklist=algif_aead_init zu Ihrer GRUB-Konfiguration hinzu und starten Sie neu.