
Schnelle, überprüfbare Linux-Absicherung für den CVE-2026-31431 Copy Fail: algif_aead-Block, Verifikation und AF_ALG-Seccomp-Härtung.
______ ______ _ __ ______ __
/ ____/___ ____ __ _/ ____/___ _(_) / / ____/_ ______ __________/ /
/ / / __ \/ __ \/ / / / /_ / __ `/ / / / / __/ / / / __ `/ ___/ __ /
/ /___/ /_/ / /_/ / /_/ / / __/ / /_/ / / / / /_/ / /_/ / /_/ / / / /_/ /
\____/\____/ .___/\__, /_/ \__,_/_/_/ \____/\__,_/\__,_/_/ \__,_/
/_/ /____/
Schnelle, prüfbare Linux-Expositionsbewertung und -Minderung für CVE-2026-31431 „Copy Fail“, während Kernel gepatcht werden.
CopyFail Guard ist ein defensives Betriebswerkzeug für Linux-Sysadmins, DevSecOps-Ingenieure, Plattformteams und Incident-Responder. Es hilft, die Exposition gegenüber dem Linux-algif_aead/AF_ALG-Problem zu reduzieren, indem es:
algif_aead verfügbar, geladen, eingebaut oder bereits blockiert istmodprobe.d-Block installiert und das Modul entlädt, wenn dies sicher möglich istEndgültige Behebung: Installieren Sie den gepatchten Kernel Ihres Anbieters und starten Sie neu.
Dieses Werkzeug überbrückt die betriebliche Lücke zwischen Offenlegung und vollständiger Flotten-Patchung.
splice, Setuid-Änderungen, Privilegieneskalation oder destruktive Sonden./etc/modprobe.d/99-copyfail-guard.conf, und der Rollback entfernt nur diese Datei.seccomp-patch fügt eine AF_ALG-Ablehnung zu einem bestehenden Docker/Podman/Kubernetes-Seccomp-Profil hinzu, anstatt Ihre Laufzeit-Härtung zu ersetzen.assess --json und dokumentierte Exit-Codes unterstützen Flotten-Scans, SIEM-Erfassung und Change-Management-Nachweise.Wenn Sie auf einem Linux-Host sind und eine schnelle Antwort benötigen:
git clone --depth 1 https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
Wenn das Urteil „exponiert“ lautet und algif_aead modular ist:
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Für wiederholbare Installationen ein Release-Tag fixieren:
git clone --branch v0.3.0 --depth 1 https://github.com/juliosuas/copyfail-guard.git
Ersetzen Sie v0.3.0 durch das neueste getaggte Release, wenn neuere Versionen verfügbar sind.
Führen Sie zuerst die sichere Expositionsprüfung durch:
sudo ./bin/copyfail-guard.sh assess
So lesen Sie das Ergebnis:
Wenn Sie nicht vertrauenswürdige Container, CI-Jobs, Sandboxes oder Multi-User-Workloads betreiben, testen Sie auch, ob die AF_ALG-Socket-Erstellung in dieser Laufzeit blockiert ist:
python3 tools/afalg-socket-test.py
PERMITTED beweist keine erfolgreiche Ausnutzung, aber es beweist, dass die relevante Userspace-Crypto-API erreichbar ist. Für defensive Operationen ist das Grund genug, die Minderung anzuwenden, während Sie die Rollout des gepatchten Kernels bestätigen.
Es ist kein destruktiver Proof-of-Concept enthalten. Das ist ein Feature, kein Manko.
Ein echter Copy-Fail-Exploit-Nachweis müsste Kernel-Speicher/Page-Cache-Auswirkungen oder Privilegieneskalation validieren. Die Auslieferung in einem öffentlichen Minderungs-Repo würde das Projekt weniger sicher und weniger einsetzbar in der Produktion machen.
CopyFail Guard beweist die Dinge, auf die Betreiber sicher reagieren können:
Kombinieren Sie für den endgültigen Verwundbarkeitsstatus dieses Werkzeug mit der Anbieterberatung/Paketbestandsliste und Neustart-Nachweisen.
CopyFail Guard ist Minderung, nicht Heilung. Es reduziert die Exposition und überprüft interimistische Kontrollen. Die dauerhafte Lösung bleibt der gepatchte Kernel des Anbieters plus Neustart.
Das Werkzeug ist bewusst als Clone-and-Run für Incident Response ausgelegt: Kein Compiler, Kernel-Header, Exploit-Code oder Drittanbieter-Paketmanager ist für den Kern-Host-Workflow erforderlich. python3 wird für --json-Ausgabe, seccomp-patch und den nicht-exploitiven AF_ALG-Socket-Test benötigt.
Clone-and-Run:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
chmod +x bin/copyfail-guard.sh
sudo ./bin/copyfail-guard.sh doctor
sudo ./bin/copyfail-guard.sh assess
sudo ./bin/copyfail-guard.sh mitigate --yes
sudo ./bin/copyfail-guard.sh verify
Optionale Systeminstallation:
git clone https://github.com/juliosuas/copyfail-guard.git
cd copyfail-guard
sudo ./scripts/install.sh
sudo copyfail-guard status
Der Installer unterstützt das Fixieren von Quelle und Ziel für kontrollierte Rollouts:
sudo env COPYFAIL_GUARD_REF=v0.3.0 ./scripts/install.sh
Verwenden Sie das neueste getaggte Release für COPYFAIL_GUARD_REF, wenn neuere Versionen verfügbar sind.
Container-/CI-Härtung:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
Validieren Sie, dass AF_ALG in einem geschützten Container blockiert ist:
docker run --rm \
--security-opt seccomp=./copyfail-seccomp.json \
-v "$PWD/tools:/tools:ro" \
python:3.12-alpine \
python /tools/afalg-socket-test.py
Erwartetes geschütztes Ergebnis:
BLOCKED: socket(AF_ALG) denied by policy (...)
Siehe Beispielausgaben für erwartete Urteile, JSON-Form und Container-Validierungsergebnisse.
Copy Fail ist eine lokale Privilegieneskalation im Linux-Kernel in der Komponente algif_aead der AF_ALG-Userspace-Crypto-API. Öffentliche Advisories beschreiben eine Page-Cache-Schreibprimitive, die von unprivilegierten lokalen Benutzern erreichbar ist und besonders gefährlich auf Systemen mit gemeinsam genutztem Kernel ist: Kubernetes-Knoten, CI/CD-Runner, Multi-Tenant-Hosts, Agent-Sandboxes und Entwicklerrechner.
Die korrekte Lösung ist ein Kernel-Update des Anbieters, das den Upstream-Revert/Fix enthält, und ein Neustart in den gepatchten Kernel. CopyFail Guard ist ein defensiver Betriebshelfer für das Zeitfenster, bevor dieser Neustart in der gesamten Flotte abgeschlossen ist.
Kern-Host-Befehle:
bashmodinfo, modprobe, lsmod, rmmod wo verfügbargrep, awk, mktemp, installOptionale Sichtbarkeitswerkzeuge:
lsof oder ss für AF_ALG-VerbraucherprüfungenSeccomp-Profil-Patching:
python3 wird benötigt für --json, seccomp-patch und tools/afalg-socket-test.pyEs wird kein Exploit-Code, Compiler, Kernel-Header oder Drittanbieter-Pakete benötigt.
CopyFail Guard enthält keinen Exploit-Proof-of-Concept. Das ist beabsichtigt. Siehe Beweist dies die Verwundbarkeit?.
Stattdessen führt assess eine sichere betriebliche Prüfung durch:
algif_aead verfügbar, geladen, eingebaut oder blockiert erscheintAutomatisierungs-JSON:
sudo ./bin/copyfail-guard.sh assess --json
./bin/copyfail-guard.sh doctor --json
Exit-Codes:
mitigate schreibt:
/etc/modprobe.d/99-copyfail-guard.conf
mit:
# Managed by CopyFail Guard for CVE-2026-31431
install algif_aead /bin/false
blacklist algif_aead
Dann versucht es:
sudo rmmod algif_aead
Wenn das Modul derzeit in Benutzung ist, kann rmmod fehlschlagen. In diesem Fall bleibt der persistente Block installiert; stoppen Sie AF_ALG-Verbraucher oder starten Sie neu nach Anwendung der Minderung.
Das Skript weigert sich, einen Symlink an seinem verwalteten modprobe-Pfad zu überschreiben und schreibt die Datei atomar mit sicheren Berechtigungen.
Blockieren Sie für nicht vertrauenswürdige Workloads die AF_ALG-Socket-Erstellung mit Seccomp, auch während Sie Hosts patchen.
Empfohlener Pfad: Patchen Sie Ihre bestehende Laufzeit-Seccomp-Basislinie, anstatt sie zu ersetzen:
./bin/copyfail-guard.sh seccomp-patch docker-default.json copyfail-seccomp.json
Verwendung mit Docker:
docker run --security-opt seccomp=./copyfail-seccomp.json IMAGE
Verwendung mit Podman:
podman run --security-opt seccomp=./copyfail-seccomp.json IMAGE
Notfall-Pfad, wenn Sie kein Basislinien-Profil haben:
./bin/copyfail-guard.sh seccomp-docker ./copyfail-afalg-seccomp.json
Das generierte Notfall-Profil blockiert AF_ALG, erlaubt aber ansonsten Systemaufrufe. Behandeln Sie es als gezielten Notbehelf, nicht als Ersatz für die normale Seccomp-Härtung von Docker.
Für Kubernetes platzieren Sie das Profil unter dem kubelet-Seccomp-Root, üblicherweise:
/var/lib/kubelet/seccomp/profiles/copyfail-seccomp.json
Dann referenzieren Sie es mit:
securityContext:
seccompProfile:
type: Localhost
localhostProfile: profiles/copyfail-seccomp.json
Siehe examples/kubernetes-seccomp-pod.yaml.
Dieses Projekt enthält einen nicht-exploitiven AF_ALG-Erreichbarkeitstest:
python3 tools/afalg-socket-test.py
Es versucht nur, einen AF_ALG-Socket zu erstellen und zu schließen. Es bindet keine Crypto-Operationen, ruft splice auf, berührt Setuid-Binaries, korrumpiert den Page-Cache oder versucht eine Privilegieneskalation.
Ergebnisse:
BLOCKED bedeutet, die Richtlinie hat AF_ALG für diesen Prozess verboten.PERMITTED bedeutet, die AF_ALG-Socket-Erstellung ist für diesen Prozess noch erlaubt.UNSUPPORTED bedeutet, AF_ALG ist in dieser Laufzeit nicht verfügbar.CopyFail Guard benötigt reale Kompatibilitätsberichte von Linux-Hosts, Container-Laufzeiten, CI-Runnern und Kubernetes-Knoten. Wenn Sie es sicher testen können, eröffnen Sie ein Kompatibilitätsbericht-Issue mit bereinigter doctor-, assess --json-, verify- oder AF_ALG-Socket-Test-Ausgabe.
Nützliche Berichte helfen zu beantworten:
algif_aead eingebaut ist und nur Patch/Neustart erfordertSiehe Community-Validierungsleitfaden.
copyfail-guard assess Sichere Expositionsbewertung, kein Exploit-Versuch
copyfail-guard status Host-Expositionsindikatoren inspizieren
copyfail-guard doctor Abhängigkeiten und Laufzeitbereitschaft prüfen
copyfail-guard mitigate algif_aead persistent deaktivieren und entladen
copyfail-guard verify Host-Minderung auf Aktivität prüfen
copyfail-guard rollback CopyFail Guards modprobe-Minderung entfernen
copyfail-guard seccomp-docker [FILE] Notfall-AF_ALG-Verbotsprofil generieren
copyfail-guard seccomp-patch BASE OUT Bestehendes Seccomp-Profil sicher patchen
copyfail-guard k8s-example Kubernetes-Seccomp-Beispiel ausgeben
Flags können vor oder nach dem Befehl platziert werden:
--dry-run Geplante Änderungen anzeigen, ohne Dateien zu schreiben oder Module zu entladen
--yes Nicht-interaktive Bestätigung
--no-logo ASCII-Banner deaktivieren
--json JSON für unterstützte Befehle ausgeben: assess, doctor
In typischen Konfigurationen wird das Deaktivieren von algif_aead voraussichtlich keine Auswirkungen haben auf:
Es könnte Anwendungen beeinträchtigen, die explizit die AF_ALG-Engine verwenden oder direkt AF_ALG-Sockets erstellen. Prüfen Sie zuerst:
sudo lsof | grep AF_ALG || true
ss -xa | grep -i alg || true
algif_aead, Seccomp-Härtung für nicht vertrauenswürdige Workloads und Rollback.CopyFail Guard tut nicht:
Die Host-Modul-Minderung funktioniert für modulares algif_aead. Wenn algif_aead in Ihren Kernel eingebaut ist, können modprobe.d und rmmod es nicht deaktivieren; Patch/Neustart ist zwingend erforderlich und Seccomp sollte für nicht vertrauenswürdige Workloads während des Patching verwendet werden.
Seccomp schützt nur Workloads, die mit dem Profil gestartet werden. Bestehende laufende Container oder Pods müssen mit dem gehärteten Profil neu gestartet werden.
sudo ./bin/copyfail-guard.sh rollback --yes
Rollback entfernt nur die von diesem Werkzeug verwaltete Datei. Es lädt das Modul nicht neu. Starten Sie neu oder laden Sie modprobe algif_aead nur manuell, wenn Sie es explizit benötigen und das Risiko akzeptiert oder den Kernel gepatcht haben.
Nein. Patch und Neustart bleiben die endgültige Lösung.
Nein. Das Projekt vermeidet bewusst Exploit-Verhalten. tools/afalg-socket-test.py prüft nur, ob die AF_ALG-Socket-Erstellung erreichbar ist.
Verteidigung in der Tiefe. Container- und CI-Workloads sind häufige Orte, an denen nicht vertrauenswürdiger Code auf einem gemeinsam genutzten Kernel läuft. Seccomp macht den ersten Schritt dieser Angriffsklasse für diese Workload unerreichbar.
Weil Standard-Laufzeitprofile viele Härtungsentscheidungen enthalten. Das Ersetzen durch ein minimales Notfallprofil kann versehentlich Schutzmaßnahmen entfernen. seccomp-patch behält Ihre Basislinie und fügt die AF_ALG-Ablehnung hinzu.
Ja. Beginnen Sie mit doctor und assess --json, inszenieren Sie die Minderung auf einer kleinen Linux-Stichprobe und rollen Sie dann Host-Minderung und Seccomp-Profiländerungen getrennt aus. Siehe Flotten-Rollout-Leitfaden.
crypto: algif_aead - Revert to operating out-of-placeErstellt von Julio César Suástegui Calderón.
Sicherheitstechnik, Linux-Systeme und praktische defensive Automatisierung.
MIT
| Urteilsfamilie | Bedeutung | Maßnahme |
|---|
EXPOSED_* | algif_aead / AF_ALG scheint erreichbar oder ladbar | Jetzt mindern, dann patchen und neu starten |
PARTIALLY_MITIGATED_* | Ein Block existiert, aber das geladene Modul oder der Neustart-Status ist noch relevant | Neu starten oder sicher entladen, dann überprüfen |
INTERIM_MITIGATED_* | Lokale Minderung ist aktiv | Beibehalten, aber trotzdem patchen und neu starten |
LOW_OBVIOUS_EXPOSURE_* | Lokale Prüfungen fanden keine offensichtliche algif_aead-Exposition | Trotzdem den Patch-Status des Anbieters bestätigen |
| Bereich | Befehl | Zweck |
|---|
| Sichere Bewertung | assess | Gibt ein Nicht-Exploit-Expositionsurteil, nächste Aktionen und automatisierungsfreundlichen Exit-Code |
| Abhängigkeitsprüfung | doctor | Prüft benötigte/optionale Werkzeuge und erklärt Laufzeitbeschränkungen |
| Host-Inspektion | status | Zeigt OS/Kernel, Modulverfügbarkeit, Ladezustand, Einbauwarnung, modprobe-Block und offensichtliche AF_ALG-Verbraucher |
| Host-Minderung | mitigate | Schreibt /etc/modprobe.d/99-copyfail-guard.conf und versucht, algif_aead zu entladen |
| Verifikation | verify | Scheitert klar, wenn das Modul geladen, eingebaut oder nicht blockiert ist |
| Rollback | rollback | Entfernt nur die von CopyFail Guard verwaltete modprobe-Datei |
| Container | seccomp-patch | Patchen eines bestehenden Seccomp-Profils, um socket(AF_ALG, ...) zu verbieten, während normale Socket-Nutzung erhalten bleibt |
| Notfall-Profil | seccomp-docker | Generiert ein gezieltes AF_ALG-Verbotsprofil für den Notfall |
| Kubernetes | k8s-example | Gibt ein Localhost-Seccomp-Pod-Beispiel aus |
| Code | Bedeutung |
|---|
0 | Niedrige offensichtliche Exposition aus lokalen Prüfungen |
1 | Vorläufige Minderung aktiv, Patch/Neustart noch erforderlich |
10 | Exponiert/Minderung verfügbar |
11 | Teilweise gemindert; Neustart oder Entladen erforderlich |
12 | Eingebauter Modulpfad; Patch/Neustart erforderlich |
20 | Unbekannter Bewertungszustand |