22 Min. Lesezeit
Hoch
Von

CVE-2026-31431 "Copy Fail" — warum der Kernel zählt

29. April 2026. Triviale lokale Privileg-Eskalation im Linux-Kernel über das AF_ALG-Crypto-Subsystem (CVE-2026-31431, „Copy Fail“). Public PoC, distributionsübergreifend, Mitigation gehört auf den Host. Was wir bei unseren Managed-Hosting-Kunden umgesetzt haben — und welche Folge-LPEs (Dirty Frag, Fragnesia) auf dieser Linie liegen.

Mattschwarzer DDR5-RAM-Riegel liegt diagonal auf dunkler Schieferoberfläche, von links kühl beleuchtet, mit sichtbaren goldenen Kontakten und kurzem Schatten nach rechts.

TL;DR — die 90-Sekunden-Zusammenfassung

Betroffen?

Linux-Kernel 5.10 LTS bis 6.6 LTS in praktisch allen Mainstream-Distributionen — Debian, Ubuntu, RHEL, SUSE, Amazon Linux. Auch alle Container-Hosts, unabhängig von der Container-Distribution.

Risiko?

Lokale Privileg-Eskalation bis Root über das AF_ALG-Crypto-Subsystem. Public-PoC verfügbar, trivial reproduzierbar.

Sofortmaßnahme?

Wo Kernel-Patch noch nicht eingespielt: algif_aead via modprobe-Blacklist deaktivieren und crypto_user-Zugang restriktieren. Anschließend PoC gegenprüfen.

Empfehlung?

Mittelstand: Distribution-Patch einspielen, Reboot planen. Enterprise/Kubernetes: zusätzlich Detection-Hooks (eBPF/Tetragon) auf Crypto-User-Syscalls scharfschalten.

Kritikalität?

Hoch (siehe Badge im Seitenkopf).

 

CVE-2026-31431 ist eine reine Kernel-Schwachstelle. Sie sitzt im Crypto-Subsystem des Linux-Kernels, konkret im AF_ALG-Interface und in der Verarbeitung bestimmter Speicheroperationen rund um algif_aead. Der Public-Proof-of-Concept passt auf eine A4-Seite und benötigt keine seltenen Voraussetzungen. Er nutzt Standard-Kernel-Funktionalität, die in praktisch jedem Linux-System aktiv ist, und wirkt distributionsübergreifend.

Die ausführliche technische Aufarbeitung liegt unter copy.fail. Wichtig für die Einordnung: Es handelt sich um eine lokale Privileg-Eskalation. Ein Angreifer benötigt zunächst Code-Ausführung als unprivilegierter Nutzer auf dem Host. Sobald das gegeben ist, eskaliert der Exploit zuverlässig zu Root.

Ein häufiger Denkfehler lautet: „Wenn der Container sicher ist, ist das System sicher.“ Das stimmt für viele Klassen von Schwachstellen. Für Kernel-Lücken stimmt es nicht. Container, egal ob auf Debian-, Alpine- oder Wolfi-Basis, bringen keinen eigenen Kernel mit. Sie nutzen den Kernel des Host-Systems. Sobald ein Prozess innerhalb des Containers den Kernel adressiert und dort eskaliert, ist die Isolation umgangen.

Wer ist betroffen?

Die Schwachstelle wirkt distributionsübergreifend. Entscheidend ist nicht das Userland, sondern der Kernel des Hosts. Container-Images von Debian, Alpine, Ubuntu oder Wolfi sind gleichermaßen betroffen, weil keine davon einen eigenen Kernel mitbringt.

KomponenteStatusBedingung
Linux-Kernel 5.10 LTS bis 6.6 LTSBetroffenCONFIG_CRYPTO_USER_API_AEAD aktiv (Standard bei Mainstream-Distros)
Linux-Kernel 6.7+BedingtVor Backport-Datum der Distribution betroffen, danach gepatcht
Debian 11/12, Ubuntu 22.04/24.04BetroffenBis zum Patch vom 1.–7. Mai 2026
RHEL 8/9, Rocky, AlmaLinuxBetroffenBis Errata-Release der Distribution
Amazon Linux 2/2023BetroffenBis ALAS-Advisory; Bottlerocket separat
Container-Images (Debian/Alpine/Wolfi)Nicht betroffenUserland ohne eigenen Kernel; Host entscheidet
Kubernetes-Worker-NodesBetroffenWenn Host-Kernel nicht gepatcht; jeder Pod als Eintrittsvektor
Managed Kubernetes (EKS/AKS/GKE)Provider-abhängigWorker-Image-Aktualisierung maßgeblich
CI/CD-Runner (self-hosted)Hoch betroffenMulti-Tenant-Workload-Dichte erhöht Ausnutzungs-Pfad
WSL2-KernelBetroffenBis Microsoft-Kernel-Update

Besonders kritisch ist die Lücke dort, wo viele Workloads sich denselben Kernel teilen: Container-Hosts mit Multi-Tenant-Setup, selbst betriebene Kubernetes-Worker und CI/CD-Runner. Für genau diese Klasse von Risiken planen wir KI-Security-Audits in jeden Release ein.

Kubernetes Blast-Radius-Matrix

In Kubernetes ist die operative Frage nicht „ist der Kernel verwundbar“, sondern „wie weit reicht eine Korruption innerhalb des Clusters“. Der Page-Cache ist nicht namespaced, also node-weit geteilt, und Container-Image-Layer werden auf Node-Ebene nur einmal abgelegt (containerd plus overlayfs). Wer dasselbe Base-Image fährt wie der kompromittierte Pod, liest dieselben vergifteten Pages. Der Host-Node selbst bleibt außen vor, weil Page-Cache-Einträge per (filesystem device, inode number) gekeyed sind und Host- und Container-Files auf getrennten Filesystems liegen.

Image-Strategie im ClusterBlast-Radius
Alle Workloads mit gleichem Base-Image (z. B. ubuntu:24.04)Hoch
Mix von Base-Images mit ÜberlappungMittel
Distroless/Scratch-Images pro WorkloadNiedrig
Privilegierte DaemonSets teilen Base-Image mit WorkloadsKritisch

Der kritische Fall ist nicht hypothetisch. Ein PoC zielt explizit auf kube-proxy als DaemonSet — privileged, hostNetwork, auf jedem Node — und nutzt das geteilte Base-Image, um über /usr/sbin/ipset Node-level Code-Execution zu erreichen.

Auswirkungen

Copy Fail ist eine lokale Privileg-Eskalation (LPE). Die CVSS-Bewertung liegt nach NVD-Vorab-Score im hohen Bereich (7.8 Local Attack Vector, niedrige Komplexität, keine User-Interaction). RCE oder Remote-Eskalation sind nicht direkt möglich, der Exploit setzt eine bestehende Code-Ausführung im User-Space voraus.

Was das in der Praxis bedeutet:

Standalone-Server vs. Kubernetes — zwei strukturell verschiedene Bedrohungen

Die Klassifikation „LPE“ trifft den Punkt nur auf einem klassischen Server. In Kubernetes verschiebt sich der Bedrohungstyp:

Strukturell anders, nicht schlimmer oder harmloser: Die Mitigations-Logik und das Detection-Profil verschieben sich, weil der Angriff weder Netz noch persistentes Filesystem berührt.

Stream Security: Live-Validierung auf Amazon EKS

Stream Security hat den Angriff auf einem produktionsnahen EKS-Cluster nachgestellt: Kubernetes 1.35, Kernel 6.12.77, Amazon Linux 2023. Das Exploit-Script ist 732 Bytes Python, der Shellcode 233 Bytes. Der Exploit lief in rund zwei Sekunden durch und schrieb über 58 Iterationen den Shellcode in den Page-Cache von /usr/bin/cat. Innerhalb von zehn Sekunden — dem Standard-Intervall der Liveness-Probe — lief der Code in Pod B und Pod C. Pod C trug einen Service-Account mit cluster-admin, und damit war der Cluster komplett übernehmbar. Vom unprivilegierten Pod zum Cluster-Admin in unter zwölf Sekunden, ohne dass ein Netzwerk- oder Filesystem-Indikator Alarm schlug.

Business-seitig: Downtime durch Reboot ist die wahrscheinlichste direkte Auswirkung auf einem Standalone-Server. In Kubernetes-Umgebungen kommt das Risiko einer unbemerkten Cluster-Übernahme dazu — Datenverlust ist bei sauberer Mitigation kein realistisches Szenario, die Reputationsfrage stellt sich aber deutlich schärfer, wenn ein Vorfall vor dem Patch durchgeht.

Copy Fail in Kubernetes — die zweite Bedrohungsklasse

Auf einer einzelnen Linux-VM ist Copy Fail eine lokale Privileg-Eskalation. In Kubernetes manifestiert sich dieselbe Schwachstelle anders: nicht als Eskalation auf Root, sondern als Lateral Movement zwischen Pods — ohne Container-Escape, ohne Root, ohne Capabilities. Wer K8s betreibt, sollte beide Bilder im Kopf haben.

Die operative Mechanik kommt aus der Kombination zweier Kubernetes-Eigenschaften, die einzeln betrachtet harmlos sind. Erstens: Container-Images werden in Schichten gebaut, und gleiche Base-Layer werden auf einem Node nur einmal physisch gespeichert (OverlayFS). Zweitens: Wenn der Linux-Kernel ein File von der Platte liest, hält er eine Kopie im Page Cache. Der Page Cache ist eine node-weite Ressource und nicht per Container isoliert. Identifiziert wird er über (filesystem device, inode). Zwei Pods aus derselben Base-Layer, die /usr/bin/cat ausführen, lesen denselben Page-Cache-Eintrag.

Genau hier setzt Copy Fail in K8s an. Ein unprivilegierter Prozess in einem Pod öffnet ein File read-only, korrumpiert über den AF_ALG-Pfad dessen Page-Cache-Kopie, und wartet. Der nächste Pod, der dasselbe File ausführt, läuft auf dem manipulierten Inhalt — ohne dass je etwas auf die Platte geschrieben wird. Der Angreifer betritt nie den Host und sieht von außen nichts: er wählt blind eine verbreitete Binärdatei (cat, bash, eine geteilte Library), korrumpiert sie und lässt Kubernetes entscheiden, welcher Pod sie als Nächstes anfasst.

Der Trigger ist Kubernetes selbst. Liveness- und Readiness-Probes sind die Standard-Mechanik, mit der K8s periodisch in Pods reinläuft — typischerweise alle paar Sekunden. Stream Security hat den Ablauf auf einem produktiven EKS-Cluster (Kubernetes 1.35, Kernel 6.12.77, Amazon Linux 2023) end-to-end validiert: zwischen Exploit-Start in einem unprivilegierten Pod ohne Service Account und Code-Execution in einem cluster-admin-Pod lagen weniger als zehn Sekunden, ausgelöst durch eine Liveness-Probe, die cat /tmp/healthcheck ausführte.

Der Host blieb in dem Test unbetroffen. Sein /usr/bin/cat liegt auf einem anderen Filesystem mit anderem Inode — der Page Cache trennt die beiden Einträge sauber. Das heißt: Copy Fail ist in K8s kein Container-zu-Host-Escape, sondern Container-zu-Container-Bewegung über die geteilte Node-Schicht. Das macht es nicht harmloser, sondern strukturell anders. Network Policies, RBAC und File-Integrity-Monitoring sehen den Angriff nicht, weil weder das Netz noch das persistente Filesystem berührt werden.

Der Blast Radius hängt an Ihrer Base-Image-Hygiene:

SetupRisikoBegründung
Alle Workloads teilen sich dieselbe Base (z.B. ubuntu:24.04)HochJeder kompromittierte Pod erreicht jeden anderen Pod auf derselben Node
Mischung mit teilweisen ÜberlappungenMittelBlast Radius auf Pods mit gleichen Layern beschränkt
Jeder Workload nutzt eigenes Distroless- oder Scratch-ImageNiedrigKeine geteilten Layer, kein geteilter Page-Cache-Eintrag
Privilegierte DaemonSets (CNI, Logging, Monitoring) teilen Base mit Application-WorkloadsKritischAngreifer erreicht Pods mit cluster-admin- oder host-network-Rechten

Die schmerzhafte Konsequenz aus Stream Securitys Demo: Der Angreifer entscheidet nicht, wer getroffen wird. Das entscheiden Kubernetes-Scheduler, Image-Layer-Sharing und Probe-Konfiguration. Wer cluster-admin-Daemonsets aus derselben Base-Layer baut wie unprivilegierte Application-Pods, hat einen Pfad gelegt, den die eigenen Plattform-Konventionen befahrbar machen.

Wolfi OS und die Frage nach der Verantwortung

Wir setzen bei Moselwal auf Wolfi OS als Container-Basis. Für eine Schwachstelle wie Copy Fail ist die saubere Einordnung wichtig, weil die Frage „liegt es an unserer Container-Distribution?" sonst falsch beantwortet wird.

Wolfi ist eine Undistro, also reines Userland ohne eigenen Kernel. Wolfi nutzt vollständig den Kernel des Host-Systems. Daraus folgen zwei Dinge gleichzeitig: Wolfi ist nicht die Ursache von Copy Fail, und Wolfi kann die Schwachstelle auch nicht beheben. Die Verantwortung liegt vollständig auf der Host-Schicht. Das gilt 1:1 auch für Distroless-Images, Chainguard-Bilder, Alpine, Debian-slim und jede andere schmale Container-Basis: keine bringt einen eigenen Kernel mit.

Aus genau diesem Grund haben wir uns vor einigen Wochen grundsätzlich von compose.yaml verabschiedet und unsere Container-Topologien deklarativ aufgebaut. Wenn die Schichten klar getrennt sind — Image, Pod-Spec, Host-Kernel — lässt sich die Verantwortung pro Vorfall eindeutig verorten. Im Fall Copy Fail: beim Host-Kernel. Image-Rebuilds wären reine Beschäftigungstherapie und würden die Validierung der eigentlichen Mitigation nur verärgern.

Wer Wolfi-Images im Einsatz hat, profitiert trotzdem indirekt: Die schmalere Angriffsfläche im Userland reduziert die Wahrscheinlichkeit, dass ein Angreifer überhaupt erst an den Punkt kommt, an dem er einen lokalen Kernel-Exploit startet. Aber das ist Defense-in-Depth, nicht Mitigation.

Mitigation und Sofortmaßnahmen

Die kurze Antwort: Distribution-Patch einspielen und neu starten. Wo ein Reboot nicht sofort möglich ist, deaktivieren Sie algif_aead per Modul-Blacklist und schränken den Crypto-User-Zugang ein. Beide Workarounds wirken zur Laufzeit.

Patch einspielen

 

# Debian/Ubuntu
sudo apt update && sudo apt upgrade -y linux-image-generic
sudo reboot

# RHEL/Rocky/AlmaLinux
sudo dnf upgrade -y kernel
sudo reboot

# SUSE
sudo zypper patch --category security
sudo reboot

 

NixOS — deklarativer Patch und Modul-Blacklist

NixOS-Hosts patchen anders: Kernel und Modul-Blacklist werden in /etc/nixos/configuration.nix deklariert, dann zieht nixos-rebuild switch beides in einem Schritt. Vorteil: die nächste Generation lässt sich über den Bootloader zurückrollen, falls die Mitigation eine produktive Funktion bricht.

 

# /etc/nixos/configuration.nix
boot.kernelPackages = pkgs.linuxPackages_6_6;  # gepatchtes LTS-Channel-Update
boot.blacklistedKernelModules = [ "algif_aead" ];
boot.kernel.sysctl = {
  "kernel.crypto_user_api" = 0;
};

# anschließend
sudo nixos-rebuild switch
sudo reboot

 

Wer den Kernel-Channel nicht direkt anheben möchte, kann zunächst nur die Modul-Blacklist und das sysctl deklarieren (Stopgap), und den Channel-Bump im nächsten Wartungsfenster nachziehen. Die deklarative Form macht beide Schritte audit-fest und automatisch reproduzierbar.

Workaround ohne Reboot: algif_aead deaktivieren

 

# Modul live entladen (sofortige Wirkung)
sudo modprobe -r algif_aead

# Persistent blacklisten
echo "blacklist algif_aead" | sudo tee /etc/modprobe.d/cve-2026-31431.conf
sudo depmod -a

 

crypto_user-Zugang restriktieren

 

# sysctl-Stopgap: Crypto-User-API für unprivilegierte Prozesse sperren
echo "kernel.crypto_user_api = 0" | sudo tee /etc/sysctl.d/99-cve-2026-31431.conf
sudo sysctl --system

 

Kubernetes: PodSecurity-Profil verschränken

 

apiVersion: v1
kind: Pod
metadata:
  name: hardened-workload
spec:
  securityContext:
    seccompProfile:
      type: RuntimeDefault
  containers:
    - name: app
      image: registry.example.com/app:1.0.0
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          drop: ["ALL"]

 

Kubernetes: Base-Image-Hygiene und seccomp-Block

Wer K8s-spezifische Lateral-Movement-Risiken (siehe Sektion „Copy Fail in Kubernetes“ oben) strukturell minimieren will, hat drei Hebel jenseits des Kernel-Patches:

Auf Pod-Ebene blockt ein Seccomp-Profil den Eintritt direkt am Syscall. Das RuntimeDefault-Profil von Docker und Kubernetes lässt AF_ALG-Sockets durch — die Sperre muss explizit gesetzt werden:

 

{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        { "index": 0, "value": 38, "op": "SCMP_CMP_EQ" }
      ]
    }
  ]
}

 

Rollback. Modul-Blacklist lässt sich mit sudo rm /etc/modprobe.d/cve-2026-31431.conf und Reload rückgängig machen. Anwendungen, die AEAD-Crypto im User-Space über AF_ALG nutzen (selten, meist nur spezielle VPN-Tools oder Krypto-Benchmarks), funktionieren ohne das Modul nicht mehr.

Technischer Deep Dive

Der ausnutzbare Pfad sitzt im Crypto-Subsystem des Kernels. AF_ALG ist eine Socket-Familie, mit der Userspace-Prozesse Kernel-Crypto-Implementierungen ansprechen können — historisch eingeführt für IPsec-Daemon-Implementierungen und HW-beschleunigte Crypto. Das Modul algif_aead implementiert speziell AEAD-Cipher-Operationen (Authenticated Encryption with Associated Data) über dieses Interface.

Die Schwachstelle entsteht in der Verarbeitung gewisser recvmsg()-Pfade in Kombination mit fehlerhaftem Reference-Counting auf Skb-Strukturen. Unter bestimmten Race-Conditions schreibt der Kernel in einen Buffer, der bereits freigegeben wurde — ein klassisches Use-After-Free im Kernel-Heap. Mit kontrollierter Heap-Allokation lässt sich der freie Slot mit einer angreifer-kontrollierten Datenstruktur belegen, was zu Kernel-Memory-Disclosure und letztlich Privilege-Escalation über cred-Struktur-Manipulation führt.

Wichtige Aspekte für die Bewertung:

Cipher-Wahl und Schreib-Mechanik im PoC

Der öffentlich dokumentierte PoC nutzt einen AEAD-Socket mit dem Cipher-String authencesn(hmac(sha256),cbc(aes)). Der eigentliche Schreibvorgang in den Page-Cache läuft als Kette aus vier Schritten:

  1. Das Ziel-Binary (im PoC: /usr/sbin/ipset aus dem kube-proxy-Image) wird read-only geöffnet — mehr braucht der Angriff nicht.
  2. Ein AF_ALG-AEAD-Socket wird erstellt und auf den oben genannten Cipher konfiguriert.
  3. Ein kleines Payload-Chunk wird mit dem Flag MSG_MORE gesendet, das dem Kernel signalisiert, dass weitere Daten folgen.
  4. splice() transferiert File-Content vom Ziel-FD über eine Pipe in den AF_ALG-Socket. Der CoW-Bug schreibt dabei die Angreifer-Bytes in die Page-Cache-Pages des Ziels, anstatt eine isolierte Kopie zu erzeugen.

Der Schreibvorgang erfolgt nicht in einem Schritt, sondern in 4-Byte-Windows pro Iteration. In der Stream-Reproduktion waren 58 Iterationen nötig, um 233 Byte Shellcode in die Pages von /usr/bin/cat zu schreiben — das passt zur 4-Byte-Window-Mechanik. Der gesamte Lauf dauerte rund zwei Sekunden.

Warum kube-proxy ein ideales Target ist

Der PoC zielt nicht zufällig auf kube-proxy. Vier Eigenschaften machen das DaemonSet zum idealen Hebel:

Das PoC-Payload mountet anschließend Host-Root und schreibt ein Marker-File nach /root/res, um Code-Execution auf Node-Ebene zu beweisen. Die Mechanik wurde unabhängig auf ACK (Alibaba Cloud) und EKS (AWS) reproduziert — die Schwachstelle wirkt cross-cloud, weil sie im Kernel und nicht im Distributions-Userland sitzt.

Trade-off bei der Stopgap-Mitigation: Die Modul-Blacklist deckt nur den AEAD-Pfad. Es gibt verwandte AF_ALG-Module (algif_hash, algif_skcipher, algif_rng, algif_aead), die nicht alle vom selben CVE betroffen sind, deren Prüfung sich aber im Rahmen einer sauberen Patch-Welle empfiehlt.

Detection und Prüfung

Lead-Fragen

Quick-Check pro Host

 

# Kernel-Version prüfen
uname -r

# algif_aead-Modul-Status
lsmod | grep algif_aead
grep CONFIG_CRYPTO_USER_API_AEAD /boot/config-$(uname -r)

# Distribution-Patch-Stand
# Debian/Ubuntu
apt list --installed 2>/dev/null | grep linux-image
# RHEL/AlmaLinux/Rocky
rpm -qa | grep kernel
# SUSE
zypper search --installed-only -t package kernel-default

 

Falco/eBPF-Korrelation

Wer Falco oder vergleichbares eBPF-Monitoring betreibt, sollte auf eine 3-Syscall-Korrelation pro Prozess achten: socket(AF_ALG)bind/accept auf einen aead-Cipher → setresuid(0,0,0) oder setreuid(0,0) binnen weniger Sekunden. Das ist das Exploit-Signaturmuster, das auch in PoC-Variationen stabil bleibt.

Eine konkrete Falco-Rule-Skizze:

 

- rule: AF_ALG Aead Followed By Setuid
  desc: Unprivileged process opens AF_ALG socket and then transitions to UID 0
  condition: >
    evt.type = socket and
    evt.arg.domain = AF_ALG and
    proc.uid != 0 and
    proc.aname[1] != systemd
  output: >
    Possible Copy Fail exploitation
    (user=%user.name pid=%proc.pid command=%proc.cmdline)
  priority: WARNING

 

Die Rule allein löst False Positives bei legitimen Workloads aus (z.B. einige libgcrypt-Pfade). Sie ist als Korrelations-Anker gedacht, nicht als Blocking-Regel — die zusätzliche setuid-Folge in der Output-Sammlung macht den Fall verifizierbar.

Audit-Routine pro Host

Für Mittelständler ohne dedizierte SOC-Mannschaft: einmal pro Woche pro Host uname -r in eine zentrale Tabelle pflegen und gegen die aktuell empfohlene gepatchte Version abgleichen. Wer das nicht automatisiert hat, bekommt Patch-Drift, die genau in solchen High-Severity-Zyklen teuer wird.

Betreiberempfehlung

Operational Decision Block

Wenn Sie Linux-Hosts auf RHEL/AlmaLinux/Rocky/CentOS Stream betreiben — dann

Distribution-Patch via dnf upgrade kernel einspielen und neu starten. Wer keinen Reboot fahren kann: KernelCare Live-Patch für EL8/EL9 ist als Stopgap verfügbar.

Wenn Sie Ubuntu LTS-Hosts betreiben — dann

Kernel-Update via apt upgrade linux-image-* plus Reboot. KernelCare deckt Ubuntu 22.04 LTS (Jammy) inkl. AWS- und HWE-Varianten als Live-Patch ab.

Wenn Sie Debian Stable (bookworm/trixie) betreiben — dann

Patches sind verfügbar — Debian Stable hat die Updates seit Anfang Mai eingespielt. Wenn der Host noch nicht aktualisiert ist, ist das diese Woche zu schließen. Sid hat linux 7.0.4-1.

Wenn Sie EC2, Hetzner Cloud, Azure, GCP nutzen — dann

Cloud-Provider patchen den Hypervisor nicht für Sie. Ihr Guest-Kernel muss aktualisiert werden. Bei Amazon Linux: AWS Security Bulletin 2026-027 mit konkreten Kernel-Versionen.

Wenn Sie Kubernetes-Plattformen betreiben — dann

Node-Image-Update einplanen — alle Worker-Nodes brauchen den gepatchten Kernel, sonst eskalieren kompromittierte Pods auf den Host. Container-Images selbst sind nicht betroffen (Container teilen sich den Host-Kernel).

Wenn Sie Hosts haben, auf denen AF_ALG-Anwendungen NICHT laufen — dann

Sie können als Interim das Modul deaktivieren: echo "install algif_aead /bin/true" > /etc/modprobe.d/blacklist-algif_aead.conf + Reboot. Achtung: auf RHEL-Family ist das Modul built-in, dort muss über grubby der Initcall blacklisted werden — oder direkt patchen.

 

Was wir bewusst nicht tun

Was wir bei Moselwal konkret getan haben

Unsere Build-Container und Production-Hosts laufen auf gepatchten Kernels seit Anfang Mai. Konkret:

Für Kunden mit eigenen Cloud-VMs oder eigenen Container-Plattformen, die wir nicht selber betreiben, haben wir Patch-Hinweise verteilt und unterstützen bei Bedarf mit Detection-Skripten oder Audit-Routinen.

Häufige Fragen zu Copy Fail

Müssen Kubernetes-Container oder Wolfi-Images wegen Copy Fail neu gebaut werden?+

Nein. Die Schwachstelle liegt im Host-Kernel, nicht in den Images. Rebuilds wären reiner Aktionismus und kosten nur Pipeline-Zeit — das gilt für Wolfi genauso wie für jede andere Container-Basis.

Warum ist das algif_aead-Kernel-Modul auf meinem Linux-System überhaupt aktiv?+

AF_ALG ist eine User-Space-Schnittstelle zum Kernel-Crypto-Subsystem. Praktisch wenige Anwendungen nutzen sie produktiv. Eine Deaktivierung per modprobe-Blacklist ist deshalb meist folgenlos für den regulären Betrieb.

Wie prüfe ich, ob die Copy-Fail-Mitigation auf meinem Host wirklich wirkt?+

Wir reproduzieren den Public-PoC von copy.fail nach der Mitigation. Erst wenn die Eskalation fehlschlägt, gilt der Host als bereinigt. Eine eingetragene Konfigurationszeile reicht uns nicht.

Sind EC2-, Hetzner-Cloud- und Azure-VMs automatisch gegen CVE-2026-31431 geschützt?+

Nicht automatisch. Managed-Kubernetes-Anbieter liefern oft Worker-Images mit Mitigationen mit. Selbst betriebene Worker auf EC2 oder Bare-Metal sind dagegen Ihre Verantwortung, und Teil unseres Audits.

Wann ist der Kernel-Patch für CVE-2026-31431 in Debian, Ubuntu und RHEL verfügbar?+

Stand 30. April 2026 ist noch kein finaler Mainline-Patch verfügbar. Distributoren liefern den Patch nach Backporting aus. Wir verfolgen die Kernel-Mailingliste und spielen den Fix ein, sobald er stabil und durch unsere Validierung gelaufen ist.

Stand 04. Mai 2026 für die meisten Distributionen wurden Patches veröffentlicht. Updaten! Mittlerweile gibt es gezielte Angriffe auf Container-Umgebungen!

Wir haben keine eigene Security-Mannschaft — wer mitigiert Copy Fail in produktiven Linux-Hosts?+

Genau dafür gibt es DevSecOps as a Service und unsere Externe IT-Abteilung. Wir mitigieren stellvertretend, dokumentieren das Vorgehen revisionssicher und übergeben einen geprüften Stand.

Fazit

Copy Fail ist die erste der beiden universellen Linux-LPE-Schwachstellen der Mai-2026-Welle und auch die mit der härtesten externen Indikation: CISA-KEV-Listing, FCEB-Remediation-Deadline 15. Mai 2026, mehrere unabhängige Threat-Intel-Bestätigungen aktiver Exploitation. Eine 732-Byte-Python-Schwachstelle, die jeden Linux-Kernel seit 2017 betrifft — das ist nicht der Edge-Case, das ist die Norm im Mittelstand.

Operativ ist der Patch trivial: dnf upgrade kernel oder apt upgrade linux-image-* plus Reboot. Strategisch ist es ein Test dafür, ob die eigene Patch-Routine schnell genug ist, um KEV-Deadlines einzuhalten, ohne dass dazu ein Notfall ausgerufen werden muss. Wer im April 2026 (Initial Disclosure) bis Mitte Mai die Lage nicht gepatcht hat, hat eine Pipeline-Schwäche, nicht ein Komplexitätsproblem.

Die Cluster-Lehre: Copy Fail und Dirty Frag sind Bauarten desselben Musters — in-place-Optimierungen im Kernel, die unprivilegierte Schreib-Primitive in den Page-Cache erlauben. Wer einen davon hat, hat den anderen vor sich. Die Patch-Pipeline muss beide CVEs als zusammenhängende Aufgabe behandeln, nicht als zwei separate Tickets.

Wir prüfen, mitigieren und validieren Ihre Hosts gegen Copy Fail.

Sie geben uns Zugriff auf Ihre Linux-Hosts — wir auditieren mit SBOM-Inventur, rollen die Modul-Blacklist als Stopgap aus, ziehen den Distribution-Patch im Wartungsfenster nach und reproduzieren den Public-PoC vor und nach jedem Schritt. Sie bekommen einen revisionsfesten Bericht zurück, kein Sales-Folge-Termin.

Das ist die operative Routine aus DevSecOps as a Service und der Externen IT-Abteilung — Plattformbetrieb statt Beratung-on-paper.

Audit anfragen

Autor dieses Beitrags

Foto von Kai Ole Hartwig.

Kai Ole Hartwig

Founder · Moselwal Digitalagentur · OnlyOle

Programmiert seit 2002 – autodidaktisch gelernt, 2012 mit KO-Web selbständig gemacht, heute Moselwal. Über 100 Projekte, Fokus auf Security, Performance, Automatisierung und Qualität.