
Erkennt und entschärft CVE-2026-31431 (Copy Fail) unter Linux, indem es die AF_ALG-Schwachstelle testet und optional das betroffene Modul auf die Blacklist setzt.
Erkennt und (optional) entschärft CVE-2026-31431 („Copy Fail") auf einem Linux-Host.
Die Schwachstelle ist eine Page-Cache-Schreibprimitive, die über die AF_ALG-Socket-Familie unter Verwendung der AEAD-Transformation authencesn(hmac(sha256),cbc(aes)) erreichbar ist. Dieses Skript reproduziert dieselbe Primitive, die Theori demonstriert hat, zielt jedoch auf eine selbst erstellte temporäre Datei statt auf ein setuid-Binary, sodass der Test selbst nicht destruktiv ist.
Wenn der Kernel verwundbar ist, bietet das Skript an, eine Abschwächung anzuwenden: Blacklist von algif_aead über /etc/modprobe.d/disable-algif-aead.conf und Entladen des Moduls. Für eine vollständige Behebung ist dennoch ein Kernel-Update erforderlich.
os.splice)uv zum Ausführen des Skripts mit einer festgelegten Python-Versionsudo / root — erforderlich zum Anwenden der Abschwächung (Schreiben nach /etc/modprobe.d und rmmod); die Erkennung allein läuft ohne Privilegien, aber das Skript fragt interaktiv, ob gepatcht werden sollsudo $(which uv) run --python 3.10 /pfad/zu/copy_fail_test.py
$(which uv) wird verwendet, damit sudo das richtige uv-Binary auf dem PATH behält.
Das Skript wird:
AF_ALG + authencesn(hmac(sha256),cbc(aes)) erreichbar ist.✅ NICHT VERWUNDBAR — Exit 0🚨 VERWUNDBAR — fordert zur Anwendung der Abschwächung auf und testet dann erneut⚠️ NICHT SCHLÜSSIG — Exit 2 (z. B. wenn der splice/sendmsg-Aufruf einen Fehler zurückgab)Wenn Sie die Eingabeaufforderung akzeptieren, führt das Skript Folgendes aus:
install algif_aead /bin/false nach /etc/modprobe.d/disable-algif-aead.conf.rmmod algif_aead aus.Wenn das Modul in den Kernel eingebaut ist (nicht ladbar), ist ein Neustart erforderlich, damit die Blacklist wirksam wird. In jedem Fall: Patchen Sie den Kernel, sobald ein Update verfügbar ist — die Blacklist entfernt nur einen Einstiegspunkt.
Manuelles Äquivalent:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null
Der Erkennungsschritt schreibt in eine tempfile.NamedTemporaryFile, die er erstellt und anschließend löscht; es werden keine Systemdateien berührt. Der Abschwächungsschritt ist der einzige Teil, der den Host verändert, und nur, wenn Sie dies an der Eingabeaufforderung bestätigen.