
Erkennen und entschärfen Sie CVE-2026-31431 (Copy Fail) auf Linux-Systemen.
Ein CLI-Tool ohne Abhängigkeiten, das prüft, ob ein Linux-Host gegenüber CVE-2026-31431 („Copy Fail") exponiert erscheint, ohne einen Exploit auszuführen. Es kann außerdem eine konservative temporäre Abschwächung anwenden, wenn die betroffene Komponente als Kernelmodul ladbar ist. Unterstützt Debian/Ubuntu, RHEL/Rocky/AlmaLinux, Fedora und SUSE.
pip install copyfail-guard
copyfail-guard
CVE-2026-31431 ist ein Logikfehler in der Kernel-Schnittstelle algif_aead (AF_ALG-AEAD-Socket),
der es einem unprivilegierten lokalen Benutzer ermöglicht, einen kontrollierten 4-Byte-Schreibzugriff
in den Page-Cache einer beliebigen lesbaren Datei durchzuführen, was zu einer Root-Rechteausweitung führt.
CVSS 7.8, vorhanden seit Kernel 4.14, gepatcht in stabilen Releases ab April 2026.
Ein öffentlicher Exploit existiert und die Schwachstelle ist im CISA-KEV gelistet.
Einige Schwachstellenprüfungen laufen darauf hinaus, „den Exploit auszuführen und zu sehen, ob er funktioniert". Das ist auf Produktionshosts keine gute Idee. copyfail-guard verfolgt einen Nicht-Exploit-Ansatz. Es versucht nicht, den Fehler auszulösen, setuid-Binärdateien zu verändern oder die Ausnutzbarkeit zu beweisen. Stattdessen untersucht es den Host-Zustand (Kernelversion, Modulladestatus, modprobe-Konfiguration) und meldet, ob die Maschine exponiert erscheint.
fix ist bewusst minimal — es ruft nicht Ihren Paketmanager auf.
Eine dauerhafte Behebung erfordert ein Kernel-Upgrade über den normalen
Update-Mechanismus Ihrer Distribution.
pip install copyfail-guard
Oder direkt aus einem Checkout ausführen, ohne zu installieren:
PYTHONPATH=src python3 -m copyfail_guard detect
copyfail-guard [--json] [--dry-run] [--quiet] [detect | fix | reset]
$ copyfail-guard
[copyfail-guard] CVE-2026-31431 (Copy Fail) — VERWUNDBAR
Distribution: Ubuntu 24.04.1 LTS (debian family)
Kernel: 6.8.0-50-generic (branch 6.12, fixed at 6.12.85)
Modul: algif_aead — geladen als .ko
Abschwächung: keine
Empfohlene Maßnahmen:
1. Abschwächung jetzt anwenden:
sudo copyfail-guard fix
2. Kernel für eine dauerhafte Lösung aktualisieren:
Aktualisieren Sie den Kernel auf diesem System auf 6.12.85 oder neuer (was auch immer
Ihre Distribution ausliefert, sobald sie den CVE-2026-31431-Fix integriert hat), und starten Sie dann neu.
Vor der Anwendung immer mit --dry-run in der Vorschau anzeigen:
$ sudo copyfail-guard --dry-run fix
[copyfail-guard] fix (dry-run) — OK
[ ok ] Pre-Flight-Prüfungen (Linux, Host, root)
[skip] Würde modprobe-Blacklist schreiben [/etc/modprobe.d/cve-2026-31431-copyfail-guard.conf]
[skip] Würde versuchen, algif_aead zu entladen (derzeit nicht geladen) [algif_aead]
[skip] Würde Audit-Eintrag anhängen [/var/log/copyfail-guard.log]
$ sudo copyfail-guard fix
[copyfail-guard] fix — OK
[ ok ] Pre-Flight-Prüfungen (Linux, Host, root)
[ ok ] modprobe-Blacklist geschrieben [/etc/modprobe.d/cve-2026-31431-copyfail-guard.conf]
[ ok ] algif_aead entladen [algif_aead]
[ ok ] Audit-Eintrag angehängt [/var/log/copyfail-guard.log]
Nächster Schritt für eine dauerhafte Lösung:
Aktualisieren Sie den Kernel auf eine CVE-2026-31431-gepatchte Version über den
normalen Update-Mechanismus Ihrer Distribution und starten Sie dann neu.
Wenn das Modul derzeit in Verwendung ist, kann der Entladeschritt fehlschlagen. In diesem Fall kann die persistente modprobe-Regel trotzdem erfolgreich installiert werden, und copyfail-guard meldet den Entladefehler als Warnungs-Aktionsdatensatz, anstatt so zu tun, als wäre das Modul entfernt worden.
--json gibt ein strukturiertes Dokument auf stdout aus, geeignet für jq, Ansible oder SOAR-Pipelines:
$ copyfail-guard --json | jq .verdict
"vulnerable"
$ copyfail-guard --json | jq '{verdict, kernel: .kernel.patched_threshold}'
{
"verdict": "vulnerable",
"kernel": "6.12.85"
}
Nach einem Upgrade auf einen gepatchten Kernel verwenden Sie den Unterbefehl reset, um die
von fix installierte modprobe-Regel zu entfernen:
$ sudo copyfail-guard --dry-run reset
[copyfail-guard] reset (dry-run) — OK
[skip] Würde /etc/modprobe.d/cve-2026-31431-copyfail-guard.conf entfernen
$ sudo copyfail-guard reset
[copyfail-guard] reset — OK
[ ok ] /etc/modprobe.d/cve-2026-31431-copyfail-guard.conf entfernt
Starten Sie neu, damit algif_aead bei Bedarf wieder geladen werden kann.
reset ist idempotent — wenn die Datei bereits fehlt, beendet es mit 0 und einer
„nichts zu tun"-Meldung. Dann neu starten.
Container. fix weigert sich, innerhalb eines Containers ausgeführt zu werden, da /proc/modules
den Host-Kernel widerspiegelt, der Container jedoch keine Berechtigung hat, Module zu laden oder zu entladen.
Führen Sie copyfail-guard direkt auf dem Host aus.
Eingebautes algif_aead. Einige Kernel kompilieren algif_aead direkt in das
Image (CONFIG_CRYPTO_USER_API_AEAD=y). Die modprobe-Abschwächung hat in dieser
Konfiguration keine Wirkung; die einzige Abhilfe ist ein Kernel-Upgrade. detect meldet
in diesem Fall unmitigable_builtin. Die Ausführung von fix installiert trotzdem die modprobe-Regel
(die verhindert, dass eine koexistierende ladbare Kopie geladen wird), aber die eingebaute
Instanz ist nicht betroffen — Kernel-Upgrade und Neustart sind die einzige echte Abhilfe.
blacklist vs. install … /bin/false. Beide Direktiven blockieren das normale
Auto-Laden, aber install algif_aead /bin/false ist stärker, da es auch normale
explizite modprobe algif_aead-Aufrufe blockiert. Ein ausreichend privilegierter
Administrator kann die modprobe-Policy dennoch umgehen, beispielsweise durch
Low-Level-Modulladewerkzeuge oder spezielle modprobe-Flags. copyfail-guard installiert
immer die stärkere Form. Wenn Ihr System bereits eine einfache blacklist-Direktive
hat, meldet das Tool mitigated, gibt aber einen Hinweis aus, der das Upgrade empfiehlt.
SELinux/AppArmor. Schreibvorgänge nach /etc/modprobe.d/ erben auf RHEL normalerweise
system_u:object_r:modules_conf_t:s0 vom übergeordneten Verzeichnis, sodass normalerweise
kein manuelles Relabeling für die von copyfail-guard geschriebene Datei erforderlich sein sollte.
initramfs. algif_aead ist normalerweise nicht im Boot-Image der gängigen
Distributionen enthalten, daher führt copyfail-guard nach der Installation der modprobe-Regel
kein update-initramfs -u oder dracut -f aus. Wenn Ihre Distribution oder Ihr lokaler
Build algif_aead im initramfs enthält, folgen Sie den Kernel-/Modul-Richtlinien Ihrer Distribution.
Apache 2.0 — siehe LICENSE.
| Unterbefehl | Aktion |
|---|
detect | Kombiniert fünf Signale (Kernelversion, /proc/modules, modules.builtin, modules.dep, modprobe-Konfiguration) zu einem von sechs Urteilen |
fix | Schreibt atomar eine modprobe-Regel install algif_aead /bin/false und versucht, algif_aead zu entladen |
reset | Entfernt die von fix installierte modprobe-Regel (nach einem Upgrade auf einen gepatchten Kernel ausführen) |
| Code | Bedeutung |
|---|
0 | Sicher — Urteil ist patched, mitigated oder not_applicable; oder der persistente Fix-Schritt war erfolgreich |
1 | Verwundbar — Urteil ist vulnerable oder unmitigable_builtin |
2 | Fehler — Zustand konnte nicht ermittelt werden, Vorbedingung abgelehnt oder der persistente Fix-Schritt ist fehlgeschlagen |
| Urteil | Beschreibung |
|---|
patched | Laufender Kernel ist auf oder über der gepatchten Version |
mitigated | Kernel ist verwundbar, aber algif_aead wird durch die modprobe-Konfiguration blockiert |
not_applicable | Kernel ist verwundbar, aber algif_aead ist auf diesem System nicht vorhanden |
vulnerable | Kernel ist verwundbar, Modul ist ladbar, keine Abschwächung vorhanden |
unmitigable_builtin | algif_aead ist in das Kernel-Image kompiliert — modprobe-Abschwächung hat keine Wirkung; Kernel-Upgrade erforderlich |
unknown | Kernelversion konnte nicht geparst werden oder liegt außerhalb des bewerteten Bereichs |