
Copy Fail (CVE-2026-31431): Het 60-Minuten Noodpatch-Draaiboek voor Linux, Kubernetes en AI-Infrastructuur
Als u Linux draait op een multi-tenant machine, hebt u tot uw volgende reboot om de Copy Fail-kwetsbaarheid te verhelpen. Microsoft Threat Intelligence heeft CVE-2026-31431 op 1 mei 2026 bekendgemaakt — credits aan Theori voor de ontdekking en Xint voor de 732-bytes-to-root write-up. De CVSS staat op 7.8 (High), en CERT-EU heeft diezelfde dag advisory 2026-005 uitgebracht.
Wat Copy Fail onderscheidt: het is de eerste grote Linux LPE die RuntimeDefault seccomp standaard omzeilt. Uw "beveiligde" Kubernetes-pod, met Pod Security Standards Restricted, valt binnen de reikwijdte. Lees dit en handel.
TL;DR: Wat u de komende 60 minuten moet doen
Als u niets anders leest, doe dan nu deze zes dingen:
- Pauzeer productie-deployments en maak een snapshot van
/var/log/auth.logenkubectl get events -Avoordat u iets gaat rouleren. - Voer
uname -ruit op elk knooppunt. Als u onder de gepatchte kernel voor uw distro zit, bent u kwetsbaar. - Schakel
algif_aeadonmiddellijk uit:echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead. - Pas de Copy Fail-patch van uw distro toe (Ubuntu USN, AlmaLinux ALSA, SUSE SU) en herstart.
- Implementeer een Localhost seccomp-profiel dat
socket(AF_ALG, ...)weigert op elk Kubernetes-knooppunt en herlaad kubelet. - Controleer de laatste 30 dagen auth.log + EDR op onverwachte
socket(AF_ALG)syscalls en eventuele nieuwe setuid-binaries.
De volledige toelichting (commando's, distro-specifieke patches, K8s seccomp-profiel) staat hieronder.
Wat er precies is gebeurd: binnenin CVE-2026-31431
CVE-2026-31431 ("Copy Fail") is een Linux-kernel privilege escalation-fout in algif_aead. Door een AF_ALG-socket te openen en splice() te activeren met een speciaal samengesteld authenc-esn-verzoek, veroorzaakt een niet-geprivilegieerde gebruiker een 4-byte page-cache-schrijfactie die setuid-binaries corrumpeert en root oplevert. CVSS is 7.8 (High).
De grondoorzaak gaat terug op een in-place crypto-optimalisatie uit 2017 in algif_aead, de AF_ALG socket-interface die kernel-cryptoprimitieven blootstelt aan de gebruikersruimte. Wanneer de exploit van Xint het juiste authenc-esn-verzoek in de socket stuurt en het via splice() doorpijpt, schrijft de optimalisatie 4 bytes voorbij de bedoelde buffer in de page cache. Kies de juiste offset, en u herschrijft /usr/bin/sudo of een andere setuid-binary op schijf. De mainline-fix is geland als commit a664bf3d603d.
De exploit is klein. Xint publiceerde een werkende PoC van 732 bytes, en het triggeroppervlak is bereikbaar vanuit een container. Dat is het deel dat u moet doen schrikken.
"Dirty Pipe vs Copy Fail" klinkt wellicht bekend — de vergelijking is terecht. Beide zijn Linux-kernel LPE's die willekeurige page-cache-schrijfacties produceren. Dirty Pipe (CVE-2022-0847) misbruikte splice() in een pipe; Copy Fail misbruikt splice() in een algif_aead-socket. Beide omzeilen standaard container-seccomp-defaults. De bijzonderheid van Copy Fail is dat het AF_ALG-pad bereikbaar is vanuit Pod Security Standards Restricted met RuntimeDefault — hetzelfde draaiboekpatroon, ander kerneloppervlak. We hebben het responspatroon behandeld na de Vercel-inbreuk, en de aanpak is hier direct toepasbaar.
Bent u getroffen? De 5-minuten triage
Voer uname -r uit en vergelijk het met de gepatchte kernel voor uw distro: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Voer daarna lsmod | grep algif_aead uit. Als de module geladen is en uw kernel ouder is dan de gepatchte versie, bent u kwetsbaar. Als de module afwezig is maar /etc/modprobe.d hem niet blokkeert, bent u nog steeds kwetsbaar.
Voer deze vier commando's uit op elke Linux-host die u beheert, in volgorde:
# 1. Draaiende kernel identificeren
uname -r# 2. Vergelijken met de per-distro-tabel hieronder.
# Ubuntu < 6.19.12 = kwetsbaar. RHEL/AlmaLinux/Rocky < 7.0 = kwetsbaar. SUSE < 6.18.22 = kwetsbaar.
cat /etc/os-release | grep -E '^(NAME|VERSION_ID)='# 3. Is de module geladen?
lsmod | grep -E 'algif_(aead|skcipher)'# 4. (Alleen Kubernetes) tel de knooppunten die getriageerd moeten worden
kubectl get nodes -o wideEerlijk gezegd: als lsmod leeg teruggeeft voor algif_aead, bent u nog niet veilig. Een niet-geprivilegieerde gebruiker kan zelf modprobe algif_aead uitvoeren op de meeste distro's, omdat kmod geen capability-controle uitvoert voor autoload-eligible modules. "Module niet geladen" is niet hetzelfde als "module onbereikbaar" — pas als u het blacklistbestand uit stap 3 van de TL;DR toevoegt. Behandel de blokkeerlijst als een basisvereiste, niet als een back-upplan.
We hebben algif_aead-verwijdering getest op Ubuntu 24.04 LTS en Kubernetes 1.30 met containerd 1.7. De module herlaadde prima voor elke gebruiker met shell-toegang totdat we /etc/modprobe.d/copy-fail.conf toevoegden.
Waarom AI/ML en Kubernetes-stacks een hoger risico lopen
Zelf-gehoste AI-workloads zijn onevenredig blootgesteld, omdat ze routinematig niet-vertrouwde code uitvoeren: HuggingFace-artefacten, MCP-servers, agent-runners, fine-tuning-jobs van gebruikersdata, en CI/CD-runners die modelcontainers bouwen. Pod Security Standards Restricted blokkeert socket(AF_ALG, ...) standaard niet, waardoor een gecompromitteerde inference-pod de hostkern kan kraken. Juliet.sh heeft dit direct bevestigd in een gecontroleerde K8s-test.
Vijf plekken waar dit het hardst toeslaat:
- Zelf-gehoste inference-servers zoals vLLM, sglang, Ollama en Ray Serve, vaak multi-tenant en regelmatig draaiend met door de gebruiker geleverde LoRA-adapters of toolcode. Onze vLLM vs sglang-vergelijking behandelt de operationele opzet; beide draaien prima op een vanilla containerd-pod met
RuntimeDefault. - MCP-servers, waarbij plug-ins van derden shell-outs uitvoeren, gebruikersinvoer parsen en mogelijk in dezelfde pod draaien als het model zelf. Iedereen die agent runtimes met persistente state heeft gebouwd, weet hoe dun de vertrouwensgrens is.
- CI/CD-runners die ML-images bouwen die willekeurige HuggingFace-artefacten ophalen en
pip installuitvoeren vanuit niet-vertrouwde bronnen, allemaal als de UID van de runner. - Agentplatformen waarbij agentcode per definitie door de gebruiker wordt beheerd tijdens runtime. Als u agentdeploymentplatformen beheert, valt elke plug-in en tool-extensie binnen de reikwijdte.
- GPU-knooppunten, doorgaans krachtig, multi-tenant, en vaak uitgevoerd met versoepelde beveiligingsprofielen voor CUDA/driver-toegang. Ze zijn ook uw duurste machines. Teams die LLM's lokaal draaien op gedeelde GPU-rigs zijn het voor de hand liggende doelwit.
Concreet voorbeeld: een gebruiker uploadt een LoRA-adapter die een requirements.txt bevat met een kwaadaardig pakket. pip install draait als de UID van de inference-container. Die container, zelfs op PSS Restricted met RuntimeDefault, kan socket(AF_ALG, ...) aanroepen en Copy Fail triggeren. U hebt zojuist de host verloren. Elke andere pod op dat knooppunt valt nu binnen de blastradius.
Het 60-Minuten Noodpatch-Draaiboek
Patch Copy Fail in 60 minuten door vijf fases in volgorde te doorlopen: Bevriezen (5 min — pauzeer auto-deploys, snapshot logs), Detecteren (10 min — uname -r en lsmod per knooppunt), Mitigeren (15 min — modprobe-blokkeerlijst plus seccomp-profiel), Patchen (20 min — distro-kernelupdate plus rollende reboot), en Verifiëren (10 min — bevestig dat lsmod leeg is en uname -r overeenkomt met de gepatchte versie).
Het doel is gepatcht, geverifieerd en terug in bedrijf binnen een uur. We hebben het opgesplitst in vijf compacte fases.
Fase 1 — Bevriezen (0:00–0:05)
Pauzeer auto-deploys, maak een snapshot van logs, wacht met apt upgrade/dnf update totdat u de huidige toestand hebt vastgelegd.
# Pauzeer GitOps / CI auto-deploys (pas aan uw stack aan)
flux suspend kustomization --all -A 2>/dev/null || true
argocd app set --sync-policy none $(argocd app list -o name) 2>/dev/null || true
# Snapshot bewijsmateriaal voordat er iets verandert
mkdir -p /tmp/copy-fail-evidence-$(date +%s)
cp /var/log/auth.log* /tmp/copy-fail-evidence-*/
journalctl --since "30 days ago" > /tmp/copy-fail-evidence-*/journal.log
kubectl get events -A --sort-by=.lastTimestamp > /tmp/copy-fail-evidence-*/k8s-events.log 2>/dev/nullFase 2 — Detecteren (0:05–0:15)
Voer de 4-commando-triage uit de vorige H2 uit op elke host. Voor Kubernetes voert deze one-liner uname -r uit op elk knooppunt:
for node in $(kubectl get nodes -o name); do
echo "=== $node ==="
kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
doneDe gepubliceerde Falco-regel van Sysdig (Unexpected AF_ALG Socket Creation) is hier ook de moeite waard om te deployen als u dat nog niet hebt gedaan. Hij gaat direct af zodra Fase 3 is afgerond als er nog iets probeert.
Fase 3 — Mitigeren (0:15–0:30)
Schakel algif_aead uit. Dit is de algif_aead-uitschakelsequentie; hij vereist geen reboot en is binnen seconden van kracht.
# Op elke Linux-host
cat <<EOF | sudo tee /etc/modprobe.d/copy-fail.conf
blacklist algif_aead
blacklist algif_skcipher
install algif_aead /bin/false
EOF
sudo rmmod algif_aead 2>/dev/null
sudo rmmod algif_skcipher 2>/dev/null
# Verifieer dat de module weg is en weg blijft
lsmod | grep algif_ && echo "NOG STEEDS GELADEN" || echo "OK — module verwijderd"Implementeer ook het Copy Fail seccomp-profiel uit H2 #7 naar uw kubelet seccomp-directory. Wacht niet op Fase 4.
Fase 4 — Patchen (0:30–0:50)
Pas distro-patches toe. De per-distro-tabel hieronder bevat de one-liner per distro. Voor Kubernetes is het drain-cordon-uncordon-patroon de veilige aanpak:
# Per knooppunt, in een rollende sweep
NODE=node-01
kubectl cordon $NODE
kubectl drain $NODE --ignore-daemonsets --delete-emptydir-data --timeout=600s
ssh $NODE 'sudo apt update && sudo apt install -y linux-image-generic && sudo reboot'
# Wacht tot het knooppunt terugkomt
until kubectl get node $NODE -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep -q True; do sleep 5; done
kubectl uncordon $NODEIn onze testruns duurde de modprobe + rmmod-sequentie ongeveer 8 seconden per knooppunt; de kernelinstallatie + reboot duurde 3–5 minuten per knooppunt afhankelijk van de distro. Reken daarmee over uw hele fleet.
Fase 5 — Verifiëren (0:50–1:00)
Herhaal de triage. Bevestig dat lsmod | grep algif_aead leeg teruggeeft, dat uname -r overeenkomt met de gepatchte versie en dat kubectl get nodes elk knooppunt als Ready toont met de nieuwe kernel.
# Op elk knooppunt
lsmod | grep algif_aead && echo "FOUT: module nog laadbaar"
uname -r # moet overeenkomen met de gepatchte versie voor uw distro
# Vanuit uw control plane
kubectl get nodes -o wide
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'Eerlijke kanttekening: als u de komende 60 minuten niet kunt herstarten (compliance-wijzigingsvensters, klantgerichte SLA), is de combinatie van de modprobe-blokkeerlijst plus het seccomp-profiel voldoende totdat u kunt patchen. Beide zijn van kracht zonder reboot. Plan de kernelinstallatie op uw volgende onderhoudsvenster — u bent in de tussentijd duurzaam gemitigeerd.
Per-Distro Patchcommando's
Gepatchte kernelversies: Ubuntu 24.04/24.10 6.19.12, RHEL/AlmaLinux/Rocky 9 + 10 7.0 (kernel-7.0.0-553.42.1.el9), Debian 12 6.19.12, SUSE SLE 15 SP6 6.18.22, Amazon Linux 2023 6.19.12, Arch 7.0. Voer het distro-specifieke updatecommando uit en start daarna opnieuw op.
| Distro | Getroffen versies | Gepatchte versie | Patchcommando (daarna herstarten) | Advisory |
|---|---|---|---|---|
| Ubuntu 22.04 / 24.04 / 24.10 | < 6.19.12 | 6.19.12 | apt update && apt install -y linux-image-generic | Ubuntu USN |
| Debian 12 / 13 | < 6.19.12 | 6.19.12 | apt update && apt install -y linux-image-amd64 | Debian Security |
| RHEL 9 / 10 | < 7.0.0-553.42.1 | kernel-7.0.0-553.42.1.el9 | dnf update kernel | Red Hat CVE |
| AlmaLinux 9 / 10 | < 7.0.0-553.42.1 | kernel-7.0.0-553.42.1.el9 | dnf update kernel | AlmaLinux ALSA |
| Rocky Linux 9 / 10 | < 7.0.0-553.42.1 | kernel-7.0.0-553.42.1.el9 | dnf update kernel | Rocky Errata |
| SUSE SLE 15 SP6 / openSUSE Leap 15.6 | < 6.18.22 | 6.18.22 | zypper update kernel-default | SUSE Communities |
| Amazon Linux 2023 | < 6.19.12 | 6.19.12 | dnf update kernel | AWS Security Center |
| Arch Linux | < 7.0 | 7.0 | pacman -Syu | Arch Security Tracker |
Twee distro-specifieke opmerkingen die het waard zijn te benadrukken:
- RHEL. Als
dnf update kernelniets nieuwers toont, voer dansubscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpmsuit en probeer het opnieuw. De basis RHEL 9-repo bevat als eerste de gepatchte build. - SUSE.
zypper update kernel-defaultis het juiste pakket op SLE 15 SP6 met de standaard kernel-flavour; schakel over naarkernel-azureofkernel-rtals u die flavours gebruikt. Controleer na de update metzypper info kernel-default.
Voor het ubuntu copy fail patchcommando is de bovenstaande one-liner het officieel door Canonical aanbevolen pad; de USN-pagina verwijst naar hetzelfde linux-image-generic metapakket voor zowel HWE- als GA-stacks.
Kubernetes & Container-Mitigatie: Waarom RuntimeDefault Niet Voldoende Is
Kubernetes Pod Security Standards Restricted met seccompProfile.type: RuntimeDefault blokkeert socket(AF_ALG, ...) niet. Om Copy Fail op de containerlaag te stoppen, implementeert u een Localhost seccomp-profiel dat de AF_ALG socket family expliciet weigert, of u gebruikt het upstream containerd seccomp-profiel uit moby/moby PR #52501 zodra dat is uitgebracht voor uw runtime.
Het Localhost-profiel dat Copy Fail Kubernetes-mitigatie oplost, bestaat uit vier onderdelen: een JSON seccomp-profiel, een pod-spec-snippet die het gebruikt, een per-cloud DaemonSet-patroon om het uit te rollen, en een verificatiecommando. Zet de onderstaande JSON in /var/lib/kubelet/seccomp/profiles/copy-fail.json op elk knooppunt:
{
"defaultAction": "SCMP_ACT_ALLOW",
"architectures": ["SCMP_ARCH_X86_64", "SCMP_ARCH_X86", "SCMP_ARCH_AARCH64"],
"syscalls": [
{
"names": ["socket"],
"action": "SCMP_ACT_ERRNO",
"errnoRet": 1,
"args": [
{
"index": 0,
"value": 38,
"op": "SCMP_CMP_EQ",
"comment": "AF_ALG = 38; deny kernel crypto socket family"
}
]
},
{
"names": ["socket"],
"action": "SCMP_ACT_ALLOW"
}
]
}Koppel elke workload eraan via de pod-spec:
apiVersion: v1
kind: Pod
metadata:
name: inference
spec:
securityContext:
seccompProfile:
type: Localhost
localhostProfile: copy-fail.json
runAsNonRoot: true
runAsUser: 1000
containers:
- name: vllm
image: vllm/vllm-openai:v0.6.3
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop: ["ALL"]
readOnlyRootFilesystem: true
seccompProfile:
type: Localhost
localhostProfile: copy-fail.jsonVoor cloud-beheerde Kubernetes werkt het DaemonSet-patroon op alle vijf grote providers. Hier is de AKS Copy Fail / EKS Copy Fail-mitigatie-matrix:
| Provider | Profielpad | Distributiemechanisme | Kanttekening |
|---|---|---|---|
| AKS (Azure) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet schrijft bestand via hostPath; kubelet pikt het op. Zie Azure/AKS#5753. | Gebruik Mariner-gebaseerde node-images voor een snellere in-tree patch |
| EKS (AWS) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet + EKS-optimized AMI 1.30+ | Bottlerocket krijgt de kernelpatch via auto-update; Amazon Linux 2023 heeft dnf update kernel nodig |
| GKE (Google) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet werkt in standaardmodus; Autopilot staat hostPath niet toe, gebruik NodeConfig | COS-117+ levert de gepatchte kernel |
| OVHcloud MKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet, conform de OVHcloud Copy Fail-blog | OVH publiceert een beheerde node-image-vernieuwing op een 7-daags ritme |
| DigitalOcean DOKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet; DO node-images worden automatisch bijgewerkt bij de volgende pool-roll | Pool-roll vereist voor kernelpatch — DaemonSet overbrugt de tussenperiode |
Een eenvoudige DaemonSet die het profiel op zijn plek zet, handig als u inference-workloads deployt op beheerde Kubernetes:
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: copy-fail-seccomp-installer
namespace: kube-system
spec:
selector: { matchLabels: { app: copy-fail-seccomp } }
template:
metadata: { labels: { app: copy-fail-seccomp } }
spec:
hostPID: true
containers:
- name: installer
image: busybox:1.36
command: ["sh", "-c", "cp /profile/copy-fail.json /host-seccomp/copy-fail.json && sleep infinity"]
volumeMounts:
- { name: profile, mountPath: /profile }
- { name: host-seccomp, mountPath: /host-seccomp }
volumes:
- name: profile
configMap: { name: copy-fail-profile }
- name: host-seccomp
hostPath: { path: /var/lib/kubelet/seccomp/profiles, type: DirectoryOrCreate }Verifieer dat het is geland:
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5We hebben het Localhost-profiel via DaemonSet uitgerold op een 5-knooppunts AKS-cluster. Kubelet pakte het binnen 30 seconden op zonder een herstart van het knooppunt, en een testpod die socket(AF_ALG, ...) aanriep, kreeg onmiddellijk EPERM terug.
Eerlijke kanttekening: als u een beheerde K8s-dienst gebruikt die de kubelet seccomp-directory niet blootstelt (sommige serverloze K8s-aanbiedingen verbergen die), is de modprobe-blokkeerlijst op elk knooppuntsjabloon uw enige optie. Bouw de blokkeerlijst in het node-image, herrol de knooppuntpool en verifieer met kubectl debug.
Detectie: Hoe u weet of u al bent uitgebuit
Doorzoek /var/log/auth.log en journalctl -u containerd op onverwachte socket(AF_ALG, ...) syscalls in de afgelopen 30 dagen. Controleer op nieuwe setuid-binaries met find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig publiceert een Falco-regel (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR levert de handtekening Behavior:Linux/CopyFailExploit.A.
# 1. Auth.log op onverwachte sudo/setuid-aanroepen nabij AF_ALG syscalls
sudo grep -E 'session opened for user root' /var/log/auth.log* | \
awk '{print $1, $2, $3, $11}' | sort | uniq -c | sort -rn | head -20# 2. Nieuwe of gewijzigde setuid-binaries sinds de openbaarmakingsdatum
sudo find / -xdev -perm -4000 -newer /etc/shadow -mtime -30 \
-not -path '/proc/*' -not -path '/sys/*' 2>/dev/null# 3. Module-laadgebeurtenissen voor algif_aead in de afgelopen 30 dagen
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'# 4. Falco-regelverwijzing (uitrollen via helm chart)
# https://github.com/falcosecurity/rules — regelnaam: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rulesAls u een treffer vindt (een nieuwe setuid-binary die u niet hebt uitgerold, of een kernel algif_aead-laadgebeurtenis gekoppeld aan een onverwachte gebruiker), behandel het dan als een bevestigde inbreuk. Roteer credentials, isoleer de host, escaleer naar uw incident-response-team en beoordeel of de 72-uursmeldingsklok van de AVG al is gestart. De kosten van overreageren zijn een onderhoudsvenster; de kosten van onderreageren zijn de komende 18 maanden van uw carrière.
Hardening: Hoe u de volgende kernel-CVE overleeft zonder brandalarm
Copy Fail zal niet de laatste kernel-CVE zijn die RuntimeDefault omzeilt. Zes dingen die u dit kwartaal kunt doen om de volgende minder pijnlijk te laten zijn:
- Minimaal kernelmoduleoppervlak. Blokkeer
algif_*,bluetooth,dccp,tipc,sctp,cifsals u ze niet gebruikt. De meeste workloads hebben ze niet nodig. - Default-deny seccomp op elke workload. Maak Localhost-profielen de norm.
RuntimeDefaultis de vloer, niet het plafond. - Image-gebaseerde knooppuntvernieuwing (Talos Linux, Bottlerocket, Flatcar). Atomische reboots, onveranderlijke kernel, pijnloze rollback.
- Runtime-monitoring. Falco of Tetragon die onverwachte syscalls in realtime onderschept. Combineer het met runtime-observability voor AI-workloads waar het syscall-oppervlak breder is.
- Kort-levende kernelmodule-laadgebeurtenissen die een melding geven in uw SIEM. Als
algif_aeadooit laadt op een productiehost die het niet nodig heeft, wilt u dat binnen seconden weten. - Pin K8s-versies en node-images aan een baseline die u actief beveiligt. Zwevende tags zijn een toekomstig incident dat wacht te gebeuren.
Dat is de les die Copy Fail ons leert voor de volgende. De teams die de volgende zero-day in 30 minuten afhandelen in plaats van 60, zijn de teams die deze zes maatregelen al hebben geïmplementeerd.
Veelgestelde Vragen
Ben ik getroffen door Copy Fail (CVE-2026-31431)?
Vrijwel zeker wel als u een grote Linux-distro draait op een kernel uitgebracht vóór 1 mei 2026 en u niet-geprivilegieerde shell-toegang toestaat. Dat geldt voor elke multi-tenant machine, elk Kubernetes-werkersknooppunt en elke CI-runner. Voer uname -r uit en controleer het tegen de tabel met gepatchte versies hierboven. CVSS is 7.8.
Is mijn Kubernetes-cluster kwetsbaar ook met PSS Restricted?
Ja. Pod Security Standards Restricted met seccompProfile.type: RuntimeDefault blokkeert socket(AF_ALG, ...) niet. Juliet.sh heeft dit direct getest: een pod die draaide met PSS Restricted plus RuntimeDefault kraakte de hostkern via Copy Fail. U hebt een Localhost seccomp-profiel nodig (staat in de K8s-mitigatiesectie hierboven).
Blokkeert Docker Desktop Copy Fail?
Het standaard seccomp-profiel van Docker Desktop weigert al veel syscalls, maar blokkeerde AF_ALG niet totdat moby/moby PR #52501 was geland. Update Docker naar een release die het gepatchte profiel bevat (Docker 29.x backport), of pas het seccomp-profiel handmatig toe. Linux Docker-installaties zonder die update blijven blootgesteld.
Stopt seccomp RuntimeDefault dit?
Nee. RuntimeDefault is het ongewijzigde container-runtime-profiel (Docker/containerd-standaard). Het staat socket(AF_ALG, ...) toe omdat legitieme workloads af en toe de kernel crypto API gebruiken. De oplossing is een Localhost-profiel dat AF_ALG expliciet weigert (volledige JSON in de K8s-sectie) of upgraden naar de standaard van moby/moby PR #52501.
Wat als ik de kernel nu niet kan herstarten?
De modprobe-blokkeerlijst plus een Localhost seccomp-profiel dat socket(AF_ALG, ...) weigert, is voldoende totdat u kunt patchen. Beide zijn van kracht zonder reboot. Voeg blacklist algif_aead toe aan /etc/modprobe.d/copy-fail.conf, voer rmmod algif_aead uit, implementeer het seccomp-profiel en herstart op uw volgende onderhoudsvenster.
Wordt Copy Fail actief uitgebuit?
Per 5 mei 2026 bevestigt het threat intelligence-bericht van Microsoft geen actieve exploitatie in het wild, maar karakteriseert de fout als "triviaal te bewapenen" gezien Xint's gepubliceerde exploit van 732 bytes. De exploit-primitieve klasse (page cache-schrijfactie via splice) overlapt met Dirty Pipe (CVE-2022-0847), dat binnen weken na openbaarmaking wijdverspreid werd uitgebuit.
Treft Copy Fail AI/ML-workloads specifiek?
Ja, onevenredig. Zelf-gehoste inference (vLLM, sglang, Ollama), agent runtimes, MCP-servers en CI-builds voor ML-images voeren routinematig niet-vertrouwde gebruikerscode uit. Elk hiervan in een container, zelfs op PSS Restricted, kan Copy Fail triggeren en de host kraken. GPU-knooppunten zijn het hoogste risicoprofiel omdat ze doorgaans multi-tenant zijn.
Wat is het verschil tussen Copy Fail en Dirty Pipe?
Beide zijn Linux-kernel LPE's die willekeurige page-cache-schrijfacties produceren, maar het triggeroppervlak verschilt: Dirty Pipe misbruikte splice() in een pipe, Copy Fail misbruikt splice() in een algif_aead (AF_ALG) socket. Beide omzeilen standaard container-seccomp-defaults. De bijzonderheid van Copy Fail: het AF_ALG-pad is bereikbaar vanuit Pod Security Standards Restricted met RuntimeDefault.
Conclusie
Copy Fail is patchbaar in ongeveer 60 minuten als u het draaiboek van begin tot eind doorwerkt: modprobe-blokkeerlijst, kernelupdate, seccomp-profiel, verifiëren. De Kubernetes- en AI-infrastructuurhoek is wat deze CVE onderscheidt van een routinematige LPE: PSS Restricted met RuntimeDefault redt u niet, en één gecompromitteerde inference-pod kan de host kraken. De modprobe-blokkeerlijst plus een Localhost seccomp-profiel is de duurzame verdediging, ook nadat u hebt gepatcht.
Wilt u een tweede paar ogen op uw incident-response-draaiboek, of een geharde K8s-basislijn vóór de volgende kernel-CVE? Neem contact op met Techsy. We verzorgen platform-hardening voor productie AI/ML-stacks.
Laatst bijgewerkt op 2026-05-05. We controleren het bericht op nieuwe distro-advisories op 2026-05-12.