cybersecurity

Copy Fail (CVE-2026-31431): Den 60-minutters nødlappeboken for Linux, Kubernetes og AI-infrastruktur

Skrevet av Mert Batur
Oppdatert May 5, 2026
12 lesing
Copy Fail (CVE-2026-31431): Den 60-minutters nødlappeboken for Linux, Kubernetes og AI-infrastruktur

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å:

  1. Sett produksjonsutsendinger på pause og ta et øyeblikksbilde av /var/log/auth.log og kubectl get events -A før du begynner å rotere noe.
  2. Kjør uname -r på alle noder. Ligger du under den patchede kjernen for din distribusjon, er du sårbar.
  3. Deaktiver algif_aead umiddelbart: echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead.
  4. Bruk distribusjonens Copy Fail-patch (Ubuntu USN, AlmaLinux ALSA, SUSE SU) og start på nytt.
  5. Distribuer en Localhost seccomp-profil som nekter socket(AF_ALG, ...) på alle Kubernetes-noder og last kubelet på nytt.
  6. 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:

bash
# 1. Identifiser kjørende kjerne
uname -r
bash
# 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)='
bash
# 3. Er modulen lastet?
lsmod | grep -E 'algif_(aead|skcipher)'
bash
# 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 install fra 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.

bash
# 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/null

Fase 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:

bash
for node in $(kubectl get nodes -o name); do
  echo "=== $node ==="
  kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
done

Sysdig'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.

bash
# 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:

bash
# 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 $NODE

I 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.

bash
# 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.

DistribusjonBerørte versjonerPatchet versjonPatchkommando (deretter omstart)Rådgivning
Ubuntu 22.04 / 24.04 / 24.10< 6.19.126.19.12apt update && apt install -y linux-image-genericUbuntu USN
Debian 12 / 13< 6.19.126.19.12apt update && apt install -y linux-image-amd64Debian Security
RHEL 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRed Hat CVE
AlmaLinux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelAlmaLinux ALSA
Rocky Linux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRocky Errata
SUSE SLE 15 SP6 / openSUSE Leap 15.6< 6.18.226.18.22zypper update kernel-defaultSUSE Communities
Amazon Linux 2023< 6.19.126.19.12dnf update kernelAWS Security Center
Arch Linux< 7.07.0pacman -SyuArch Security Tracker

To distribusjonssspesifikke merknader verdt å trekke frem:

  • RHEL. Hvis dnf update kernel ikke viser noe nyere, kjør subscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms og prøv igjen. Basis RHEL 9-depotet har den patchede bygget først.
  • SUSE. zypper update kernel-default er riktig pakke på SLE 15 SP6 med standard kjernesmak; bytt til kernel-azure eller kernel-rt hvis du bruker de smakene. Bekreft med zypper info kernel-default etter 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:

json
{
  "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:

yaml
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.json

For skybasert Kubernetes fungerer DaemonSet-mønsteret på alle fem store leverandører. Her er matrisen for AKS Copy Fail / EKS Copy Fail-begrensning:

LeverandørProfilbaneDistribusjonsmekanismeForbehold
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 NodeConfigCOS-117+ leveres med den patchede kjernen
OVHcloud MKS/var/lib/kubelet/seccomp/profiles/DaemonSet, per OVHcloud Copy Fail-bloggenOVH publiserer en administrert nodebildeoppdatering på 7-dagers kadense
DigitalOcean DOKS/var/lib/kubelet/seccomp/profiles/DaemonSet; DO-nodebilder oppdateres automatisk ved neste bassengopprullingBassengopprulling kreves for kjernepatch — DaemonSet dekker mellomperioden

En enkel DaemonSet som legger profilen på plass, når du distribuerer inferensarbeidsbelastninger på tvers av administrert Kubernetes:

yaml
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:

bash
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5

Vi 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.

bash
# 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
bash
# 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
bash
# 3. Modulinnlastingshendelser for algif_aead de siste 30 dagene
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'
bash
# 4. Falco-regelreferanse (distribuer via helm chart)
# https://github.com/falcosecurity/rules — regelnavn: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rules

Finner 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, cifs hvis du ikke bruker dem. De fleste arbeidsbelastninger gjør ikke det.
  • Nekt-som-standard seccomp på alle arbeidsbelastninger. Gjør Localhost-profiler til normen. RuntimeDefault er 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_aead noen 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.

Emneord

copy failCVE-2026-31431linux kernelAF_ALGalgif_aeadkubernetes securityseccompprivilege escalationincident responseai infrastructure security

Del denne artikkelen

Kom i gang

Klar til å bygge noe ekstraordinært?

La oss gjøre visjonen din til virkelighet. Teamet vårt er klart til å hjelpe deg med å lage programvare som utgjør en forskjell.