
Copy Fail (CVE-2026-31431): Den 60-minutters nødlappeboken for Linux, Kubernetes og AI-infrastruktur
Kjører du Linux på en multi-tenant-maskin, har du til neste omstart på deg til å fikse Copy Fail-sårbarheten. Microsoft Threat Intelligence avslørte CVE-2026-31431 1. mai 2026 — med æren til Theori for oppdagelsen og Xint for 732-bytes-til-root-gjennomgangen. CVSS er 7,8 (Høy), og CERT-EU publiserte rådgivning 2026-005 samme dag.
Her er det som gjør Copy Fail annerledes: det er den første store Linux LPE-en som omgår RuntimeDefault seccomp rett ut av boksen. Din "sikre" Kubernetes-pod, med Pod Security Standards Restricted, er i faresonen. Les dette og handle nå.
TL;DR: Hva du gjør de neste 60 minuttene
Hvis du ikke leser noe annet, gjør disse seks tingene nå:
- Sett produksjonsutsendinger på pause og ta et øyeblikksbilde av
/var/log/auth.logogkubectl get events -Afør du begynner å rotere noe. - Kjør
uname -rpå alle noder. Ligger du under den patchede kjernen for din distribusjon, er du sårbar. - Deaktiver
algif_aeadumiddelbart:echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead. - Bruk distribusjonens Copy Fail-patch (Ubuntu USN, AlmaLinux ALSA, SUSE SU) og start på nytt.
- Distribuer en Localhost seccomp-profil som nekter
socket(AF_ALG, ...)på alle Kubernetes-noder og last kubelet på nytt. - Gå gjennom de siste 30 dagene i auth.log og EDR for uventede
socket(AF_ALG)-systemkall og eventuelle nye setuid-binærfiler.
Den fullstendige gjennomgangen (kommandoer, distribusjonssspesifikke patcher, K8s seccomp-profil) finner du nedenfor.
Hva som egentlig skjedde: CVE-2026-31431 under lupen
CVE-2026-31431 ("Copy Fail") er en Linux-kjerneprivilegieskalering i algif_aead. Ved å åpne en AF_ALG-socket og utløse splice() med en spesiallaget authenc-esn-forespørsel, forårsaker en uprivilegert bruker en 4-bytes sidebufringsskriving som korrupterer setuid-binærfiler og gir root-tilgang. CVSS er 7,8 (Høy).
Rotårsaken spores tilbake til en på stedet-kryptooptimalisering fra 2017 i algif_aead, AF_ALG-socket-grensesnittet som eksponerer kjernens kryptografiske primitiver til brukerrommet. Når Xints utnyttelse sender den riktige authenc-esn-forespørselen inn i socketen og leder den gjennom splice(), skriver optimaliseringen 4 bytes forbi den tiltenkte bufferen og inn i sidebufferen. Velg riktig offset, og du skriver over /usr/bin/sudo eller en annen setuid-binær på disk. Hovedlinje-rettelsen ble lagt til som commit a664bf3d603d.
Utnyttelsen er liten. Xint publiserte en fungerende PoC på 732 bytes, og utløserflaten er nåbar innenfra en container. Det er den delen som burde gi deg en klump i magen.
Hvis "Dirty Pipe vs. Copy Fail" høres kjent ut, er sammenligningen berettiget. Begge er Linux-kjerne-LPE-er som produserer vilkårlige sidebuffersskrivinger. Dirty Pipe (CVE-2022-0847) misbrukte splice() inn i en pipe; Copy Fail misbruker splice() inn i en algif_aead-socket. Begge omgår standard container-seccomp-standarder. Copy Fails twist er at AF_ALG-banen er nåbar fra Pod Security Standards Restricted med RuntimeDefault — samme angrepsmønster, annen kjerneflate. Vi dekket responsmønsteret etter Vercel-bruddet, og strukturen passer godt her.
Er du rammet? Den 5-minutters triasjen
Kjør uname -r og sammenlign med den patchede kjernen for din distribusjon: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Kjør deretter lsmod | grep algif_aead. Hvis modulen er lastet og kjernen din er eldre enn den patchede versjonen, er du sårbar. Hvis modulen er fraværende, men /etc/modprobe.d ikke svartelister den, er du fortsatt sårbar.
Kjør disse fire kommandoene på alle Linux-verter du drifter, i rekkefølge:
# 1. Identifiser kjørende kjerne
uname -r# 2. Krysskontroller mot per-distribusjonstabell lenger ned.
# Ubuntu < 6.19.12 = sårbar. RHEL/AlmaLinux/Rocky < 7.0 = sårbar. SUSE < 6.18.22 = sårbar.
cat /etc/os-release | grep -E '^(NAME|VERSION_ID)='# 3. Er modulen lastet?
lsmod | grep -E 'algif_(aead|skcipher)'# 4. (Bare Kubernetes) tell noder du må triasere
kubectl get nodes -o wideÆrlig merknad: hvis lsmod returnerer tomt for algif_aead, er du ikke trygg. En uprivilegert bruker kan selv kjøre modprobe algif_aead på de fleste distribusjoner, fordi kmod ikke krever spesielle rettigheter for automatisk innlasting av moduler. "Modul ikke lastet" er ikke det samme som "modul utilgjengelig" — ikke før du legger til svartelistefilen i trinn 3 av TL;DR.
Vi testet algif_aead-fjerning på Ubuntu 24.04 LTS og Kubernetes 1.30 med containerd 1.7. Modulen ble lastet inn igjen av enhver bruker med shell-tilgang inntil vi la til /etc/modprobe.d/copy-fail.conf. Behandle svartelisten som obligatorisk, ikke som en reserveplan.
Hvorfor AI/ML- og Kubernetes-stakker er mer utsatt
Selvdriftede AI-arbeidsbelastninger er uforholdsmessig eksponert fordi de jevnlig kjører upålitelig kode: HuggingFace-artefakter, MCP-servere, agentmiljøer, finjusteringsjobber fra brukerdata og CI/CD-løpere som bygger modellcontainere. Pod Security Standards Restricted blokkerer ikke socket(AF_ALG, ...) som standard, så en kompromittert inferenspod kan knekke vertskjernen. Juliet.sh bekreftet dette direkte i en kontrollert K8s-test.
Fem steder dette treffer hardest:
- Selvdriftede inferensservere som vLLM, sglang, Ollama og Ray Serve, ofte multi-tenant og hyppig kjørende brukerleverte LoRA-adaptere eller verktøykode. Vår vLLM vs. sglang-sammenligning dekker driftsformen; begge kjører gjerne på en vanlig containerd-pod med
RuntimeDefault. - MCP-servere, der tredjepartsplugins kaller ut til skallet, parser brukerinput og kanskje kjører inne i samme pod som selve modellen. Den som har bygget agentmiljøer som lagrer tilstand, vet hvor tynn tillitsgrensen er.
- CI/CD-løpere som bygger ML-bilder og henter vilkårlige HuggingFace-artefakter og kjører
pip installfra upålitelige kilder, alt som løperens UID. - Agentplattformer der, per definisjon, agentkoden er brukerkontrollert ved kjøretid. Hvis du drifter agentdistribusjonsplattformer, er alle plugins og verktøyutvidelser i faresonen.
- GPU-noder, typisk kraftige, multi-tenant og ofte kjørt med avslappede sikkerhetsprofiler for CUDA/driver-tilgang. De er også de dyreste maskinene du har. Team som kjører LLM-er lokalt på delte GPU-rigger er det åpenbare målet.
Konkret eksempel: en bruker laster opp en LoRA-adapter med en requirements.txt som inneholder en ondsinnet pakke. pip install kjører som inferenscontainerens UID. Den containeren, selv på PSS Restricted med RuntimeDefault, kan kalle socket(AF_ALG, ...) og utløse Copy Fail. Du har nettopp mistet verten. Alle andre pods som deler den noden, er nå i skaderadiusen.
Den 60-minutters nødlappeboken
Patch Copy Fail på 60 minutter ved å jobbe gjennom fem faser i rekkefølge: Frys (5 min — sett automatiske utsendinger på pause, ta øyeblikksbilder av logger), Oppdag (10 min — uname -r og lsmod per node), Begrens (15 min — modprobe-svarteliste pluss seccomp-profil), Patch (20 min — kjerneoppdatering per distribusjon pluss rullende omstart), og Verifiser (10 min — bekreft at lsmod er tom og at uname -r stemmer overens med den patchede versjonen).
Målet er patchet, verifisert og tilbake i drift på under en time. Vi har delt det opp i fem stramme faser.
Fase 1 — Frys (0:00–0:05)
Sett automatiske utsendinger på pause, ta øyeblikksbilder av logger, vent med apt upgrade/dnf update til du har registrert gjeldende tilstand.
# Sett GitOps / CI-autodistribusjoner på pause (tilpass til din stakk)
flux suspend kustomization --all -A 2>/dev/null || true
argocd app set --sync-policy none $(argocd app list -o name) 2>/dev/null || true
# Ta øyeblikksbilde av bevis før noe endres
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 — Oppdag (0:05–0:15)
Kjør de 4 triasjekommandoene fra forrige H2 mot alle verter. For Kubernetes kjører denne one-lineren uname -r på alle noder:
for node in $(kubectl get nodes -o name); do
echo "=== $node ==="
kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
doneSysdig's publiserte Falco-regel (Unexpected AF_ALG Socket Creation) er også verdt å distribuere her hvis du ikke allerede har gjort det. Den vil utløses i det øyeblikket fase 3 er ferdig, hvis noe fortsatt prøver.
Fase 3 — Begrens (0:15–0:30)
Deaktiver algif_aead. Dette er sekvensen for algif_aead-deaktivering; den krever ikke omstart og trer i kraft på sekunder.
# På alle Linux-verter
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
# Bekreft at modulen er borte og forblir borte
lsmod | grep algif_ && echo "FORTSATT LASTET" || echo "OK — modul avlastet"Distribuer også Copy Fail seccomp-profilen fra H2 nr. 7 til kubelet seccomp-mappen din nå. Ikke vent til fase 4.
Fase 4 — Patch (0:30–0:50)
Bruk distribusjonspatche. Per-distribusjonstabellen nedenfor har one-lineren per distribusjon. For Kubernetes er drain-cordon-uncordon det trygge mønsteret:
# Per node, i en rullende gjennomgang
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'
# Vent på at noden kommer tilbake
until kubectl get node $NODE -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep -q True; do sleep 5; done
kubectl uncordon $NODEI testkjøringene våre tok modprobe + rmmod-sekvensen ~8 sekunder per node; kjerninstallasjon + omstart tok 3–5 minutter per node avhengig av distribusjon. Ta høyde for det på tvers av flåten din.
Fase 5 — Verifiser (0:50–1:00)
Kjør triasjen på nytt. Bekreft at lsmod | grep algif_aead returnerer tomt, at uname -r stemmer overens med den patchede versjonen, og at kubectl get nodes viser alle noder klar på den nye kjernen.
# På alle noder
lsmod | grep algif_aead && echo "FEIL: modul fortsatt lastbar"
uname -r # må stemme overens med patchet versjon for distribusjonen
# Fra kontrollplanet ditt
kubectl get nodes -o wide
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'Ærlig forbehold: hvis du ikke kan starte på nytt de neste 60 minuttene (samsvarsendringsvindu, kundevendt SLA), er modprobe-svartelisten pluss seccomp-profilen tilstrekkelig inntil du kan patche. Begge gjelder uten omstart. Planlegg kjerninstallasjon til neste vedlikeholdsvindu, og du er varig begrenset i mellomtiden.
Patchkommandoer per distribusjon
Patchede kjerneversjonar: 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. Kjør den distribusjonssspesifikke oppdateringskommandoen, deretter omstart.
| Distribusjon | Berørte versjoner | Patchet versjon | Patchkommando (deretter omstart) | Rådgivning |
|---|---|---|---|---|
| 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 |
To distribusjonssspesifikke merknader verdt å trekke frem:
- RHEL. Hvis
dnf update kernelikke viser noe nyere, kjørsubscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpmsog prøv igjen. Basis RHEL 9-depotet har den patchede bygget først. - SUSE.
zypper update kernel-defaulter riktig pakke på SLE 15 SP6 med standard kjernesmak; bytt tilkernel-azureellerkernel-rthvis du bruker de smakene. Bekreft medzypper info kernel-defaultetter oppdateringen.
For Ubuntu Copy Fail-patchkommandoen er one-lineren over den offisielle Canonical-anbefalte veien; USN-siden lenker til den samme linux-image-generic-metapakken på tvers av HWE- og GA-stakker.
Kubernetes- og containerbegrensning: Hvorfor RuntimeDefault ikke er nok
Kubernetes Pod Security Standards Restricted med seccompProfile.type: RuntimeDefault blokkerer ikke socket(AF_ALG, ...). For å stoppe Copy Fail på containerlaget, distribuer en Localhost seccomp-profil som eksplisitt nekter AF_ALG-socket-familien, eller bruk den oppstrøms containerd seccomp-profilen fra moby/moby PR #52501 når den er sluppet til ditt miljø.
Localhost-profilen som fikser Copy Fail Kubernetes-begrensningen leveres i fire deler: en JSON seccomp-profil, et pod-spec-utdrag som bruker den, et per-sky DaemonSet-mønster for å rulle den ut, og en verifikasjonskommando. Slipp JSON-en nedenfor inn i /var/lib/kubelet/seccomp/profiles/copy-fail.json på alle noder:
{
"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"
}
]
}Aktiver den for alle arbeidsbelastninger via 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.jsonFor skybasert Kubernetes fungerer DaemonSet-mønsteret på alle fem store leverandører. Her er matrisen for AKS Copy Fail / EKS Copy Fail-begrensning:
| Leverandør | Profilbane | Distribusjonsmekanisme | Forbehold |
|---|---|---|---|
| AKS (Azure) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet skriver filen via hostPath; kubelet henter den opp. Se Azure/AKS#5753. | Bruk Mariner-baserte nodebilder for raskere innebygd patch |
| EKS (AWS) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet + EKS-optimalisert AMI 1.30+ | Bottlerocket får kjernepatch via automatisk oppdatering; Amazon Linux 2023 krever dnf update kernel |
| GKE (Google) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet fungerer på standardmodus; Autopilot tillater ikke hostPath, bruk NodeConfig | COS-117+ leveres med den patchede kjernen |
| OVHcloud MKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet, per OVHcloud Copy Fail-bloggen | OVH publiserer en administrert nodebildeoppdatering på 7-dagers kadense |
| DigitalOcean DOKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet; DO-nodebilder oppdateres automatisk ved neste bassengopprulling | Bassengopprulling kreves for kjernepatch — DaemonSet dekker mellomperioden |
En enkel DaemonSet som legger profilen på plass, når du distribuerer inferensarbeidsbelastninger på tvers av administrert 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 }Bekreft at den ble plassert:
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5Vi distribuerte Localhost-profilen via DaemonSet på et 5-noders AKS-kluster. Kubelet hentet den opp innen 30 sekunder uten nodeomstart, og en testpod som kalte socket(AF_ALG, ...) fikk EPERM umiddelbart.
Ærlig forbehold: hvis du kjører en administrert K8s-tjeneste som ikke eksponerer kubelet seccomp-mappen (noen serverløse K8s-tilbud skjuler den), er modprobe-svartelisten på alle nodemaler din eneste mulighet. Bak inn svartelisten i nodebildet, distribuer nodebassenget på nytt og bekreft med kubectl debug.
Oppdagelse: Slik avgjør du om du allerede er utnyttet
Søk i /var/log/auth.log og journalctl -u containerd etter uventede socket(AF_ALG, ...)-systemkall de siste 30 dagene. Sjekk etter nye setuid-binærfiler med find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig publiserer en Falco-regel (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR leverer signaturen Behavior:Linux/CopyFailExploit.A.
# 1. Auth.log for uventede sudo/setuid-anrop nær AF_ALG-systemkall
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. Nye eller modifiserte setuid-binærfiler siden avsløringsdatoen
sudo find / -xdev -perm -4000 -newer /etc/shadow -mtime -30 \
-not -path '/proc/*' -not -path '/sys/*' 2>/dev/null# 3. Modulinnlastingshendelser for algif_aead de siste 30 dagene
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'# 4. Falco-regelreferanse (distribuer via helm chart)
# https://github.com/falcosecurity/rules — regelnavn: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rulesFinner du et treff — en ny setuid-binær du ikke distribuerte, eller en kjerne-algif_aead-innlastingshendelse knyttet til en uventet bruker — behandle det som et bekreftet kompromiss. Roter legitimasjoner, isoler verten, eskaler til hendelsesresponsteamet ditt og vurder om GDPRs 72-timers varslingsklokke har startet. Kostnaden ved å overreagere er et vedlikeholdsvindu; kostnaden ved å underreagere er de neste 18 månedene av karrieren din.
Herding: Slik overlever du neste kjerne-CVE uten brannslukking
Copy Fail blir ikke den siste kjerne-CVE-en som slår RuntimeDefault ut. Seks ting du kan gjøre dette kvartalet for å gjøre det neste mindre smertefullt:
- Minimal kjernemodulflate. Svartelis
algif_*,bluetooth,dccp,tipc,sctp,cifshvis du ikke bruker dem. De fleste arbeidsbelastninger gjør ikke det. - Nekt-som-standard seccomp på alle arbeidsbelastninger. Gjør Localhost-profiler til normen.
RuntimeDefaulter gulvet, ikke taket. - Imagebasert nodefornyelse (Talos Linux, Bottlerocket, Flatcar). Atomiske omstarter, uforanderlig kjerne, smertefri tilbakerulling.
- Kjøretidsovervåking. Falco eller Tetragon fanger uventede systemkall i sanntid. Kombiner det med kjøretidsobservabilitet for AI-arbeidsbelastninger der systemkallflaten er bredere.
- Kortlivede kjernemodulinnlastingshendelser som varsler i SIEM-en din. Hvis
algif_aeadnoen gang lastes på en produksjonsvert som ikke trenger det, vil du vite det på sekunder. - Fest K8s-versjoner og nodebilder til en grunnlinje du aktivt sikkerhetssporer. Flytende tagger er en fremtidig hendelse som venter på å skje.
Det er leksjonen Copy Fail lærer oss før den neste nulldagssårbarheten dukker opp. Teamene som håndterer den neste på 30 minutter i stedet for 60, er de som allerede har levert disse seks kontrollene.
Ofte stilte spørsmål
Er jeg berørt av Copy Fail (CVE-2026-31431)?
Nesten helt sikkert ja, hvis du kjører en stor Linux-distribusjon på en kjerne sluppet før 1. mai 2026, og du tillater uprivilegert shell-tilgang. Det inkluderer alle multi-tenant-maskiner, alle Kubernetes-arbeidere og alle CI-løpere. Kjør uname -r og sjekk mot tabellen med patchede versjoner ovenfor. CVSS er 7,8.
Er Kubernetes-klusteret mitt sårbart selv med PSS Restricted?
Ja. Pod Security Standards Restricted med seccompProfile.type: RuntimeDefault blokkerer ikke socket(AF_ALG, ...). Juliet.sh testet dette direkte: en pod kjørt med PSS Restricted pluss RuntimeDefault knakk vertskjernen via Copy Fail. Du trenger en Localhost seccomp-profil (tilgjengelig i K8s-begrensningsdelen ovenfor).
Blokkerer Docker Desktop Copy Fail?
Docker Desktops standard seccomp-profil nekter allerede mange systemkall, men blokkerte ikke AF_ALG før moby/moby PR #52501 ble sluppet. Oppdater Docker til en versjon som inkluderer den patchede profilen (Docker 29.x tilbakeport), eller bruk seccomp-profilen manuelt. Linux Docker-installasjoner uten den oppdateringen er fortsatt eksponert.
Stopper seccomp RuntimeDefault dette?
Nei. RuntimeDefault er den umodifiserte container-miljøprofilen (Docker/containerd-standard). Den tillater socket(AF_ALG, ...) fordi legitime arbeidsbelastninger av og til bruker kjernesystemets krypto-API. Løsningen er en Localhost-profil som eksplisitt nekter AF_ALG (full JSON i K8s-delen) eller oppgradering til moby/moby PR #52501-standarden.
Hva hvis jeg ikke kan starte kjernen på nytt akkurat nå?
Modprobe-svartelisten pluss en Localhost seccomp-profil som nekter socket(AF_ALG, ...) er tilstrekkelig inntil du kan patche. Begge gjelder uten omstart. Legg til blacklist algif_aead i /etc/modprobe.d/copy-fail.conf, kjør rmmod algif_aead, distribuer seccomp-profilen og start på nytt ved neste vedlikeholdsvindu.
Utnyttes Copy Fail i naturen?
Per 5. mai 2026 bekrefter ikke Microsofts trusseletterretningsinnlegg utnyttelse i naturen, men karakteriserer feilen som "trivielt våpeniserbar" gitt Xints publiserte 732-bytes-utnyttelse. Utnyttelsens primitive klasse (sidebufferskriving via splice) overlapper Dirty Pipe (CVE-2022-0847), som ble mye utnyttet innen uker etter avsløringen.
Påvirker Copy Fail AI/ML-arbeidsbelastninger spesielt?
Ja, uforholdsmessig mye. Selvdriftet inferens (vLLM, sglang, Ollama), agentmiljøer, MCP-servere og CI-bygg for ML-bilder kjører jevnlig upålitelig brukerkode. Enhver av disse i en container, selv på PSS Restricted, kan utløse Copy Fail og knekke verten. GPU-noder er den høyeste risikoprofilen fordi de typisk er multi-tenant.
Hvordan er Copy Fail forskjellig fra Dirty Pipe?
Begge er Linux-kjerne-LPE-er som produserer vilkårlige sidebufferskrivinger, men utløserflaten er ulik: Dirty Pipe misbrukte splice() inn i en pipe, Copy Fail misbruker splice() inn i en algif_aead (AF_ALG)-socket. Begge omgår standard container-seccomp-standarder. Copy Fails vri: AF_ALG-banen er nåbar fra Pod Security Standards Restricted med RuntimeDefault.
Bunnlinjen
Copy Fail kan patches på omtrent 60 minutter hvis du jobber gjennom lappeboken ende-til-ende: modprobe-svarteliste, kjerneoppdatering, seccomp-profil, verifiser. Kubernetes- og AI-infravinkelen er det som gjør denne CVE-en annerledes enn en rutinemessig LPE: PSS Restricted med RuntimeDefault redder deg ikke, og en enkelt kompromittert inferenspod kan knekke verten. Modprobe-svartelisten pluss en Localhost seccomp-profil er det varige forsvaret, selv etter at du har patchet.
Vil du ha et ekstra par øyne på hendelsesrespons-runbooken din, eller en herdet K8s-grunnlinje før neste kjerne-CVE dukker opp? Ta kontakt med Techsy. Vi kjører plattformherding for produksjonsstakker for AI/ML.
Sist oppdatert 2026-05-05. Vi gjennomgår innlegget for nye distribusjonsrådgivninger 2026-05-12.