
# Ansible-Playbooks zur Prüfung und Behebung von CVE-2026-31431 („Copy Fail“), einer lokalen Privilege-Escalation-Schwachstelle im `algif_aead`-Modul des Linux-Kernels, die seit 2017 alle großen Distributionen betrifft.
Linux-Kernel
algif_aeadPrivilege Escalation / Memory Corruption
Ansible-basierte Audit- und Mitigations-Playbooks — produktionsbereit
Copy Fail (CVE-2026-31431) ist eine Schwachstelle im algif_aead-Modul
des Linux-Kernels — die benutzerseitige AEAD-Schnittstelle der AF_ALG-
Crypto-Socket-Familie.
Ein Fehler im copy_*user-Pfad des Kernels innerhalb des AEAD-Request-Handlers
ermöglicht es einem lokalen, nicht privilegierten Benutzer, Kernel-Speicher zu
korrumpieren oder Privilegien zu eskalieren, indem er eine fehlerhafte
Socket-Anfrage erstellt.
| Feld | Detail |
|---|
| CVE-ID | CVE-2026-31431 |
| Spitzname | Copy Fail |
| Komponente | Linux-Kernel — algif_aead (net/socket.c, crypto/algif_aead.c) |
| Angriffsvektor | Lokal |
| Erforderliche Privilegien | Niedrig (nicht privilegierter Benutzer) |
| Auswirkung | Kernel-Speicherkorruption / lokale Privilegieneskalation |
| Gepatcht | Upstream-Kernel-Patch in Arbeit — prüfen Sie Ihren Distributionsanbieter |
| Distribution | Betroffene Versionen | Status |
|---|---|---|
| Ubuntu 22.04 / 24.04 | Kernel < gepatchte Version | Patch ausstehend — siehe Ubuntu USN |
| Debian 12 (Bookworm) | Kernel < gepatchte Version | Patch ausstehend |
| RHEL / AlmaLinux / Rocky 8 & 9 | Kernel < gepatchte Version | Patch ausstehend |
| Amazon Linux 2 / 2023 | Kernel < gepatchte Version | Patch ausstehend |
| Generisches Upstream | algif_aead kompiliert oder automatisch geladen | Anfällig, wenn Modul vorhanden |
Ein System ist nicht unmittelbar gefährdet, wenn
algif_aeadnicht geladen ist und keine Benutzertools es bei Bedarf laden (siehe Audit-Schritt 1).
| Subsystem | Von dieser CVE betroffen? | Von der Mitigation betroffen? |
|---|---|---|
| dm-crypt / LUKS | Nein | Nein |
| kTLS | Nein | Nein |
| IPsec / StrongSwan | Nein | Nein |
| OpenSSL (Standard-Build) | Nein | Nein |
| GnuTLS / NSS | Nein | Nein |
| OpenSSH | Nein | Nein |
| OpenSSL afalg-Engine | Möglicherweise ja | Ja — vor Anwendung prüfen |
kcapi-enc / kcapi-dgst-Tools | Ja | Ja |
.
├── audit_algif_aead.yml # Schritt 1 — Audit: Erkennung der Gefährdung pro Host
├── mitigate_copyfail.yml # Schritt 2 — Mitigation: Modul entladen + Blacklist
└── README.md # Dieses Dokument
community.general-Collection (ansible-galaxy collection install community.general)become: true (sudo) auf den Zielhostslsof auf den Zielhosts installiert (normalerweise standardmäßig vorhanden)inventory.ini ist gitignored — es bleibt lokal und gelangt nie ins Repository.
inventory.ini.example ist die eingecheckte Vorlage, von der alle ausgehen.
# Klonen und vorbereiten
git clone https://github.com/your-org/copy-fail-CVE-2026-31431.git
cd copy-fail-CVE-2026-31431
cp inventory.ini.example inventory.ini
# inventory.ini mit Ihren echten Hosts bearbeiten, dann ausführen:
ansible-playbook -i inventory.ini audit_algif_aead.yml
Die folgenden Pfade sind gitignored, um das Leaken von Infrastrukturdaten zu verhindern:
| Gitignored-Pfad | Warum |
|---|---|
inventory.ini | Echte Hostnamen / IPs |
inventories/ | Beliebiges lokales Inventarverzeichnis |
copyfail_reports/ | Audit-Ausgabe enthält Kernel-Versionen, Prozesslisten |
.vault_pass | Ansible-Vault-Passwortdatei |
*.retry | Ansible-Retry-Artefakte |
Führen Sie das Audit-Playbook vor jeglichen Änderungen aus. Es sammelt pro Host Beweise und schreibt einen Bericht sowohl lokal als auch auf jedem Ziel.
ansible-playbook -i inventory.ini audit_algif_aead.yml
Berichte werden nach ./copyfail_reports/<hostname>_audit.txt übertragen.
| Prüfung | Befehl | Ergebnis |
|---|---|---|
| Kernel-Version | uname -r | Informativ |
| Modul geladen? | lsmod | grep algif_aead | Geladen = Gefährdungsrisiko |
| Aktive AF_ALG-Sockets | lsof | grep AF_ALG | Benutzer gefunden = muss geprüft werden |
| OpenSSL-afalg-Engine | openssl engine | grep afalg | Aktiv = Auswirkung prüfen |
| kcapi-Tools vorhanden | which kcapi-* | Vorhanden = potenzielle Benutzer |
| Mitigation bereits angewendet | stat /etc/modprobe.d/disable-algif.conf | Vorhanden = bereits mitigiert |
| Bedingung | Empfohlene Maßnahme |
|---|---|
| Modul NICHT geladen | Geringes unmittelbares Risiko — Kernel-Patch überwachen |
| Modul geladen, keine AF_ALG-Socket-Benutzer | Mitigation kann sicher angewendet werden |
| Modul geladen und AF_ALG-Benutzer aktiv | Prozesse prüfen, bevor Mitigation angewendet wird |
| Mitigationsdatei bereits vorhanden | Mitigation wurde zuvor angewendet — verifizieren |
Führen Sie zuerst das Audit aus. Das Mitigations-Playbook kann sicher idempotent ausgeführt werden, aber das Audit liefert die Beweiskette.
ansible-playbook -i inventory.ini mitigate_copyfail.yml
ansible-playbook -i inventory.ini mitigate_copyfail.yml \
-e '{"skip_hosts": ["db-prod-01", "hsm-node-02"]}'
/etc/modprobe.d/disable-algif.conf mit install algif_aead /bin/falsealgif_aead-Modul aus dem laufenden Kernel (kein Neustart für den initialen Schutz erforderlich)update-initramfs auf Debian/Ubuntu, dracut --force auf RHEL)/var/backup/copyfail_mitigation/mitigation.logKein Neustart erforderlich, um das Modul aus dem Speicher zu entfernen.
Ein Neustart wird dennoch empfohlen, um zu bestätigen, dass die Blacklist wirksam wird, und einen sauberen Zustand nach der Mitigation herzustellen.
Nach Abschluss des Playbooks auf einem beliebigen Zielhost verifizieren:
# Modul darf NICHT erscheinen
lsmod | grep algif_aead
# Blacklist-Datei muss existieren und die install-Zeile enthalten
cat /etc/modprobe.d/disable-algif.conf
# Manuelles Laden muss abgelehnt werden
sudo modprobe algif_aead # Erwartet: FATAL: Module algif_aead not found or refused
Sobald Ihr Anbieter einen gepatchten Kernel veröffentlicht und Sie ihn angewendet haben:
# Auf jedem Host — Blacklist entfernen
sudo rm /etc/modprobe.d/disable-algif.conf
# Initramfs neu erstellen
sudo update-initramfs -u # Debian / Ubuntu
sudo dracut --force # RHEL / CentOS / Amazon Linux
# In den gepatchten Kernel neu starten
sudo reboot
Veröffentlicht unter der MIT-Lizenz.
Nutzung auf eigene Gefahr. Validieren Sie immer in einer Staging-Umgebung,
bevor Sie auf Produktionssystemen anwenden.
Von der Community gepflegt. PRs und Issue-Meldungen sind willkommen.