
Copy Fail (CVE-2026-31431): 60 minuutin hätäkorjausopas Linuxille, Kubernetesille ja AI-infrastruktuurille
Jos käytät Linuxiä monivuokraajaisella palvelimella, sinulla on aikaa seuraavaan uudelleenkäynnistykseen asti korjata copy fail -haavoittuvuus. Microsoft Threat Intelligence paljasti CVE-2026-31431 1. toukokuuta 2026 – kiitokset löydöstä kuuluvat Theorille ja Xintille 732 tavua root-oikeuksiin -raportista. CVSS-pisteet ovat 7,8 (Korkea), ja CERT-EU julkaisi samana päivänä neuvonnan 2026-005.
Tässä on se, mikä tekee Copy Failista erilaisen: se on ensimmäinen merkittävä Linuxin LPE (Local Privilege Escalation), joka ohittaa RuntimeDefault-seccompin oletusarvoisesti. ”Turvallinen” Kubernetes-podisi Pod Security Standards Restricted -tilassa on vaaravyöhykkeellä. Lue tämä ja toimi.
TL;DR: Mitä tehdä seuraavan 60 minuutin aikana
Jos et lue muuta, tee nämä kuusi asiaa heti:
- Pysäytä tuotantokäytön julkaisut ja ota tilannevedos
/var/log/auth.log:sta sekä komennostakubectl get events -Aennen kuin alat pyörittää mitään uudelleen. - Suorita
uname -rjokaisessa nodessa. Jos käytössäsi on jakelusi paikatun ytimen alapuolella oleva versio, olet haavoittuvainen. - Poista
algif_aeadkäytöstä välittömästi:echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead. - Asenna jakelusi copy fail -korjaus (Ubuntu USN, AlmaLinux ALSA, SUSE SU) ja käynnistä uudelleen.
- Ota käyttöön Localhost-seccomp-profiili, joka kieltää
socket(AF_ALG, ...)jokaisessa Kubernetes-nodessa, ja lataa kubelet uudelleen. - Tarkista viimeisen 30 päivän auth.log- ja EDR-tiedostot odottamattomien
socket(AF_ALG)-järjestelmäkutsujen ja uusien setuid-binäärien varalta.
Täydellinen erittely (komennot, jakelukohtaiset korjaukset, K8s-seccomp-profiili) on alla.
Mitä todella tapahtui: Sisällä CVE-2026-31431
CVE-2026-31431 (”Copy Fail”) on Linux-ytimen oikeuksien korotusvirhe komponentissa algif_aead. Avaamalla AF_ALG-socketin ja laukaisemalla splice()-toiminnon räätälöidyllä authenc-esn-pyynnöllä oikeudeton käyttäjä aiheuttaa 4 tavun sivuvälimuistin kirjoituksen, joka korruptoi setuid-binäärejä ja tuottaa root-oikeudet. CVSS on 7,8 (Korkea).
Juurisyy juontaa juurensa vuoden 2017 in-place-salausoptimointiin komponentissa algif_aead, joka on AF_ALG-socket-liitäntä, joka paljastaa ytimen salausprimitiivit userspacelle. Kun Xintin hyödyntämiskoodi syöttää oikean authenc-esn-pyynnön socketiin ja putkittaa sen splice():n kautta, optimointi kirjoittaa 4 tavua tarkoitetun puskurin ohi sivuvälimuistiin. Valitse oikea offset, ja kirjoitat uudelleen /usr/bin/sudo:n tai minkä tahansa muun levylle tallennetun setuid-binäärin. Päähaaran korjaus saapui commitina a664bf3d603d.
Hyödyntämiskoodi on pieni. Xint julkaisi toimivan PoC:n 732 tavussa, ja laukaisupinta on saavutettavissa containerin sisäpuolelta. Tämä on se osa, jonka pitäisi saada vatsasi solmuun.
Jos ”Dirty Pipe vs Copy Fail” kuulostaa tutulta, vertaus on osuva. Molemmat ovat Linux-ytimen LPE-haavoittuvuuksia, jotka tuottavat mielivaltaisia sivuvälimuistin kirjoituksia. Dirty Pipe (CVE-2022-0847) hyväksikäytti splice():tä putkeen; Copy Fail hyväksikäyttää splice():tä algif_aead-socketiin. Molemmat ohittavat standardit containerien seccomp-oletusasetukset. Copy Failin koukku on, että AF_ALG-polku on saavutettavissa Pod Security Standards Restricted -tilassa RuntimeDefault-asetuksella – sama pelikirjan muoto, eri ytimen pinta. Käsittelimme vastausmallia Vercel-murron jälkeen, ja rakenne istuu tähän puhtaasti.
Oletko受影响? 5 minuutin triage
Suorita uname -r ja vertaa sitä jakelusi paikattuun ytimeen: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Suorita sitten lsmod | grep algif_aead. Jos moduuli on ladattuna ja ytimesi on vanhempaa versiota kuin paikkausversio, olet haavoittuvainen. Jos moduulia ei ole, mutta /etc/modprobe.d ei mustalistaa sitä, olet silti haavoittuvainen.
Suorita nämä neljä komentoa jokaisella hallinnoimallasi Linux-hostilla järjestyksessä:
# 1. Identify running kernel
uname -r# 2. Cross-reference against the per-distro table further down.
# Ubuntu < 6.19.12 = vulnerable. RHEL/AlmaLinux/Rocky < 7.0 = vulnerable. SUSE < 6.18.22 = vulnerable.
cat /etc/os-release | grep -E '^(NAME|VERSION_ID)='# 3. Is the module loaded?
lsmod | grep -E 'algif_(aead|skcipher)'# 4. (Kubernetes only) count nodes you need to triage
kubectl get nodes -o wideRehellinen huomautus: jos lsmod palauttaa tyhjän tuloksen algif_aead:lle, et ole turvassa. Oikeudeton käyttäjä voi suorittaa modprobe algif_aead itse useimmilla jakeluilla, koska kmod ei tarkista capability-oikeuksia automaattisesti ladattavissa oleville moduuleille. ”Moduuli ei ladattuna” ei tarkoita ”moduuli ei saavutettavissa”, ennen kuin lisäät blacklist-tiedoston kohdan 3 mukaisesti TL;DR-osiossa.
Testasimme algif_aead:n poistoa Ubuntu 24.04 LTS:ssä ja Kubernetes 1.30:ssä containerd 1.7:n kanssa. Moduuli latautui uudelleen ongelmitta kenelle tahansa shell-käyttöoikeuden omaavalle, kunnes lisäsimme /etc/modprobe.d/copy-fail.conf:n. Pidä blacklista perusvaatimuksena, ei varasuunnitelmana.
Miksi AI/ML- ja Kubernetes-pinot ovat suuremmassa riskissä
Itse isännöidyt AI-työkuormat ovat suhteettoman alttiina, koska ne suorittavat säännöllisesti luotettavaa koodia: HuggingFace-artefakteja, MCP-palvelimia, agenttiajureita, hienosäätötöitä käyttäjätiedoista ja CI/CD-ajureita, jotka rakentavat mallicontainereita. Pod Security Standards Restricted ei estä socket(AF_ALG, ...) oletusarvoisesti, joten kompromisoitu päättelypod voi kaapata host-ytimen. Juliet.sh vahvisti tämän suoraan kontrolloidussa K8s-testissä.
Viisi aluetta, joissa tämä iskee kovimmin:
- Itse isännöidyt päättelypalvelimet, kuten vLLM, sglang, Ollama ja Ray Serve, ovat usein monivuokraajaisia ja ajavat usein käyttäjän toimittamia LoRA-sovitteita tai työkalukoodia. vLLM vs sglang -vertailumme kattaa operatiivisen muodon; molemmat toimivat mielellään vanilla-containerd-podissa
RuntimeDefault-asetuksella. - MCP-palvelimet, joissa kolmansien osapuolien pluginit kuorivat shell-komentoja, jäsentävät käyttäjän syötettä ja voivat ajaa samassa podissa kuin malli itse. Kuka tahansa, joka on rakentanut tilan säilyttäviä agenttiruntimeja, tietää, kuinka ohut luottamusraja on.
- CI/CD-ajurit, jotka rakentavat ML-kuvia ja vetävät mielivaltaisia HuggingFace-artefakteja ja suorittavat
pip install-komennon luotettamattomista lähteistä, kaikki ajurin UID:nä. - Agenttialustat, joissa määritelmän mukaan agenttikoodi on käyttäjän hallinnassa runtime-vaiheessa. Jos käytät agenttien käyttöönottopalustoja, jokainen plugin ja työkalulaajennus on vaaravyöhykkeellä.
- GPU-nodet, jotka ovat yleensä tehokkaita, monivuokraajaisia ja joita ajetaan usein rennoilla turvallisuusprofiileilla CUDA/ajurikäyttöä varten. Ne ovat myös kalleimpia koneitasi. Tiimit, jotka ajavat LLM:iä paikallisesti jaetuilla GPU-rigeillä, ovat ilmeinen kohde.
Konkreettinen esimerkki: käyttäjä lataa LoRA-sovitteen, joka sisältää requirements.txt:n haitallisella paketilla. pip install suoritetaan päättelycontainerin UID:nä. Tämä container, jopa PSS Restricted -tilassa RuntimeDefault-asetuksella, voi suorittaa socket(AF_ALG, ...) ja laukaista Copy Failin. Menetit juuri hostin. Kaikki muut tätä nodea jakavat podit ovat nyt räjähdyssäteen alueella.
60 minuutin hätäkorjausopas
Korjaa Copy Fail 60 minuutissa työskentelemällä viiden vaiheen läpi järjestyksessä: Freeze (5 min, pysäytä auto-julkaisut, ota tilannevedos lokeista), Detect (10 min, uname -r ja lsmod per node), Mitigate (15 min, modprobe-blacklist plus seccomp-profiili), Patch (20 min, jakelun ytimen päivitys plus rolling-reboot) ja Verify (10 min, vahvista lsmod tyhjäksi ja uname -r vastaamaan paikkattua versiota).
Tavoitteena on olla paikkattu, vahvistettu ja takaisin palvelussa alle tunnissa. Olemme jakaneet sen viiteen tiiviiseen vaiheeseen.
Vaihe 1 — Freeze (0:00–0:05)
Pysäytä auto-julkaisut, ota tilannevedos lokeista, pidättäydy apt upgrade/dnf update -komennoista, kunnes olet kirjannut nykyisen tilan.
# Pause GitOps / CI auto-deploys (adjust to your stack)
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 evidence before anything changes
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/nullVaihe 2 — Detect (0:05–0:15)
Suorita edellisen H2-osion 4 komennon triage jokaiselle hostille. Kubernetesissa tämä one-liner suorittaa uname -r:n jokaisessa nodessa:
for node in $(kubectl get nodes -o name); do
echo "=== $node ==="
kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
doneSysdigin julkaisema Falco-sääntö (Unexpected AF_ALG Socket Creation) on myös syytä ottaa käyttöön tässä vaiheessa, jos et ole vielä tehnyt niin. Se laukeaa heti, kun Vaihe 3 päättyy, jos jokin yrittää edelleen.
Vaihe 3 — Mitigate (0:15–0:30)
Poista algif_aead käytöstä. Tämä on algif_aead disable -sekvenssi; se ei vaadi uudelleenkäynnistystä ja astuu voimaan sekunneissa.
# On every 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
# Verify the module is gone and stays gone
lsmod | grep algif_ && echo "STILL LOADED" || echo "OK — module unloaded"Ota myös käyttöön copy fail seccomp -profiili H2:n kohdasta #7 kubeletin seccomp-hakemistoon nyt. Älä odota Vaihetta 4.
Vaihe 4 — Patch (0:30–0:50)
Asenna jakelukohtaiset korjaukset. Alla olevassa jakelukohtaisessa taulukossa on one-liner kullekin jakelulle. Kubernetesissa drain-cordon-uncordon on turvallinen malli:
# Per node, in a rolling 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'
# Wait for node to come back
until kubectl get node $NODE -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep -q True; do sleep 5; done
kubectl uncordon $NODETestiajoissamme modprobe + rmmod -sekvenssi vei noin 8 sekuntia per node; ytimen asennus + uudelleenkäynnistys vei 3–5 minuuttia per node jakelusta riippuen. Varaa aikaa sille koko kalustossasi.
Vaihe 5 — Verify (0:50–1:00)
Suorita triage uudelleen. Vahvista, että lsmod | grep algif_aead palauttaa tyhjän tuloksen, uname -r vastaa paikkattua versiota ja kubectl get nodes näyttää jokaisen noden Ready-tilassa uudella ytimellä.
# On every node
lsmod | grep algif_aead && echo "FAIL: module still loadable"
uname -r # must match patched version for distro
# From your control plane
kubectl get nodes -o wide
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'Rehellinen varaus: jos et voi käynnistää uudelleen seuraavan 60 minuutin aikana (compliance-muutosikkunat, asiakaskohtaiset SLA:t), modprobe-blacklistin ja seccomp-profiilin yhdistelmä on riittävä, kunnes voit korjata haavoittuvuuden. Molemmat voidaan ottaa käyttöön ilman uudelleenkäynnistystä. Ajoita ytimen asennus seuraavaan huoltoikkunaan, ja olet kestävasti suojattu sillä välin.
Jakelukohtaiset korjauskomennot
Paikatut ytimen versiot: 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. Suorita jakelukohtainen päivityskomento ja käynnistä uudelleen.
| Jakelu | Haavoittuvat versiot | Paikattu versio | Korjauskomento (sitten reboot) | Neuvonta |
|---|---|---|---|---|
| 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 |
Kaksi jakelukohtaista huomautusta, jotka kannattaa nostaa esiin:
- RHEL. Jos
dnf update kernelei näytä uudempaa versiota, suoritasubscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpmsja yritä uudelleen. Perus-RHEL 9 -repo sisältää paikatun buildin ensimmäisenä. - SUSE.
zypper update kernel-defaulton oikea paketti SLE 15 SP6:ssa oletusydimen flavorilla; vaihdakernel-azure:een taikernel-rt:hen, jos käytät näitä flavoreita. Varmista komennollazypper info kernel-defaultpäivityksen jälkeen.
ubuntu copy fail patch command -osalta yllä oleva one-liner on virallinen Canonicalin suosittelema polku; USN-sivu linkittää saman linux-image-generic-metapaketin sekä HWE- että GA-pinossa.
Kubernetes & Container -lievennys: Miksi RuntimeDefault ei riitä
Kubernetes Pod Security Standards Restricted asetuksella seccompProfile.type: RuntimeDefault ei estä socket(AF_ALG, ...):ää. Pysäyttääksesi Copy Failin container-tasolla, ota käyttöön Localhost-seccomp-profiili, joka nimenomaisesti kieltää AF_ALG-socket-perheen, tai käytä upstream-containerd-seccomp-profiilia moby/moby PR #52501 -vetopyynnöstä, kun se on julkaistu runtimeesi.
Localhost-profiili, joka korjaa copy fail kubernetes mitigation -ongelman, koostuu neljästä osasta: JSON-seccomp-profiili, pod-määritysnpätkä, joka käyttää sitä, pilvikohtainen DaemonSet-malli sen levittämiseen ja vahvistuskomento. Pudota alla oleva JSON tiedostoon /var/lib/kubelet/seccomp/profiles/copy-fail.json jokaisessa nodessa:
{
"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"
}
]
}Optimoita sitten jokainen työkuorma käyttämään sitä pod-määrityksen kautta:
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.jsonPilvihallinnoituun Kubernetesiin DaemonSet-malli toimii kaikilla viidellä suurella tarjoajalla. Tässä on AKS copy fail / EKS copy fail mitigation -matriisi:
| Tarjoaja | Profiilin polku | Levitysmekanismi | Varaus |
|---|---|---|---|
| AKS (Azure) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet kirjoittaa tiedoston hostPathin kautta; kubelet poimii sen. Katso Azure/AKS#5753. | Käytä Mariner-pohjaisia node-kuvia nopeampaan in-tree-päivitykseen |
| EKS (AWS) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet + EKS-optimoitu AMI 1.30+ | Bottlerocket saa ytimen päivityksen auto-update:n kautta; Amazon Linux 2023 vaatii dnf update kernel:n |
| GKE (Google) | /var/lib/kubelet/seccomp/profiles/ | DaemonSet toimii standard-tilassa; Autopilot ei salli hostPathia, käytä NodeConfigia | COS-117+ toimittaa paikatun ytimen |
| OVHcloud MKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet, OVHcloud Copy Fail -blogin mukaisesti | OVH julkaisee hallinnoitujen node-kuvien päivityksen 7 päivän syklillä |
| DigitalOcean DOKS | /var/lib/kubelet/seccomp/profiles/ | DaemonSet; DO-node-kuvat päivittyvät automaattisesti seuraavassa pool-rollauksessa | Pool-rollaus vaaditaan ytimen päivitykseen, DaemonSet kattaa aukon |
Yksinkertainen DaemonSet, joka pudottaa profiilin paikalleen, kun otat käyttöön päättelytyökuormia hallinnoitussa Kubernetesissa:
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 }Varmista, että se laskeutui:
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5Asensimme Localhost-profiilin DaemonSetin kautta 5 noden AKS-klusterissa. Kubelet poimi sen 30 sekunnissa ilman noden uudelleenkäynnistystä, ja testipod, joka kutsui socket(AF_ALG, ...)-funktiota, sai välittömästi EPERM:n.
Rehellinen varaus: jos käytät hallinnoitua K8s-palvelua, joka ei paljasta kubeletin seccomp-hakemistoa (jotkut serverless-K8s-tarjoukset piilottavat sen), modprobe-blacklist jokaisessa node-templaatessa on ainoa polkusi. Leivo blacklist node-kuvaan, ota node-pool uudelleen käyttöön ja varmista komennolla kubectl debug.
Havaitseminen: Miten tietää, onko sinua jo hyödynnetty
Etsi /var/log/auth.log:sta ja journalctl -u containerd:sta odottamattomia socket(AF_ALG, ...) -järjestelmäkutsuja viimeisen 30 päivän ajalta. Tarkista uudet setuid-binäärit komennolla find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig julkaisee Falco-säännön (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR sisältää signaturen Behavior:Linux/CopyFailExploit.A.
# 1. Auth.log for unexpected sudo/setuid invocations near 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. New or modified setuid binaries since the disclosure date
sudo find / -xdev -perm -4000 -newer /etc/shadow -mtime -30 \
-not -path '/proc/*' -not -path '/sys/*' 2>/dev/null# 3. Module load events for algif_aead in the last 30 days
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'# 4. Falco rule reference (deploy via helm chart)
# https://github.com/falcosecurity/rules — rule name: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rulesJos löydät osuman (uusi setuid-binääri, jota et ole ottanut käyttöön, tai ytimen algif_aead-lataustapahtuma, joka liittyy odottamattomaan käyttäjään), käsittele sitä vahvistettuna kompromisointina. Kierrä tunnistetiedot, eristä host, eskaloi incident-response-tiimillesi ja arvioi, onko GDPR:n 72 tunnin ilmoituskellosi alkanut. Ylireagoinnin hinta on huoltoikkuna; alireagoinnin hinta on seuraavat 18 kuukautta urastasi.
Kovettaminen: Miten selviytyä seuraavasta ytimen CVE:stä ilman paniikkia
Copy Fail ei ole viimeinen ytimen CVE, joka ohittaa RuntimeDefault:n. Kuusi asiaa, jotka voit tehdä tänä neljänneksenä tehdäksestä seuraavasta vähemmän kivuliaan:
- Minimaalinen ytimen moduulipinta. Mustalista
algif_*,bluetooth,dccp,tipc,sctp,cifs, jos et käytä niitä. Useimmat työkuormat eivät käytä. - Default-deny-seccomp jokaisessa työkuormassa. Tee Localhost-profiileista normi.
RuntimeDefaulton lattia, ei katto. - Kuvapohjainen node-refresh (Talos Linux, Bottlerocket, Flatcar). Atomiset uudelleenkäynnistykset, muuttumaton ydin, kivuton rollback.
- Runtimen monitorointi. Falco tai Tetragon havaitsee odottamattomat järjestelmäkutsut reaaliajassa. Yhdistä se runtime-observoitavuuteen AI-työkuormille, joissa järjestelmäkutsupinta on laajempi.
- Lyhytaikaisten ytimen moduulilataustapahtumien hälytykset SIEM:ssäsi. Jos
algif_aeadlatautuu koskaan tuotantohostilla, joka ei tarvitse sitä, haluat tietää siitä sekunneissa. - Kiinnitä K8s-versiot ja node-kuvat baseliiniin, jota seuraat aktiivisesti turvallisuuden näkökulmasta. Kelluvat tagit ovat tuleva incident, joka odottaa tapahtumistaan.
Tämä on oppi, jonka Copy Fail opettaa meille ennen seuraavan ilmestymistä. Tiimit, jotka käsittelevät seuraavan zero-dayn 30 minuutissa 60:n sijaan, ovat niitä, jotka ovat jo toimittaneet nämä kuusi kontrollia.
Usein kysytyt kysymykset
Vaikuttaako Copy Fail (CVE-2026-31431) minuun?
Lähes varmasti kyllä, jos käytät mitä tahansa suurta Linux-jakelua ytimellä, joka on julkaistu ennen 1. toukokuuta 2026, ja sallit oikeudettoman shell-käytön. Tämä sisältää jokaisen monivuokraajaisen boxin, jokaisen Kubernetes-workerin ja jokaisen CI-ajurin. Suorita uname -r ja tarkista yllä olevasta paikkattujen versioiden taulukosta. CVSS on 7,8.
Onko Kubernetes-klusterini haavoittuvainen jopa PSS Restricted -tilassa?
Kyllä. Pod Security Standards Restricted asetuksella seccompProfile.type: RuntimeDefault ei estä socket(AF_ALG, ...)-kutsua. Juliet.sh testasi tätä suoraan: pod, joka ajoi PSS Restricted -tilassa plus RuntimeDefault, kaappasi host-ytimen Copy Failin kautta. Tarvitset Localhost-seccomp-profiilin (tarjottu yllä olevassa K8s-lievennysosiossa).
Estääkö Docker Desktop Copy Failin?
Docker Desktopin oletusseccomp-profiili kieltää jo monia järjestelmäkutsuja, mutta ei estänyt AF_ALG:a ennen kuin moby/moby PR #52501 laskeutui. Päivitä Docker julkaisuun, joka sisältää paikatun profiilin (Docker 29.x backport), tai ota seccomp-profiili manuaalisesti käyttöön. Linux-Docker-asennukset ilman tätä päivitystä jäävät alttiiksi.
Pysäyttääkö seccomp RuntimeDefault tämän?
Ei. RuntimeDefault on muuttamaton container-runtimen profiili (Docker/containerd-oletus). Se sallii socket(AF_ALG, ...)-kutsun, koska lailliset työkuormat käyttävät satunnaisesti ytimen salaus-API:a. Korjaus on Localhost-profiili, joka nimenomaisesti kieltää AF_ALG:n (koko JSON K8s-osiossa) tai päivitys moby/moby PR #52501 -oletukseen.
Entä jos en voi käynnistää ytimettä uudelleen juuri nyt?
Modprobe-blacklist plus Localhost-seccomp-profiili, joka kieltää socket(AF_ALG, ...)-kutsun, on riittävä, kunnes voit korjata haavoittuvuuden. Molemmat voidaan ottaa käyttöön ilman uudelleenkäynnistystä. Lisää blacklist algif_aead tiedostoon /etc/modprobe.d/copy-fail.conf, suorita rmmod algif_aead, ota seccomp-profiili käyttöön ja käynnistä uudelleen seuraavassa huoltoikkunassasi.
Hyödynnetäänkö Copy Failia villissä luonnossa?
- toukokuuta 2026 mennessä Microsoftin uhkatiedusteluposti ei vahvista villissä luonnossa tapahtuvaa hyödyntämistä, mutta luonnehtii virhettä ”triviaalisti aseistettavaksi” Xintin julkaiseman 732 tavun hyödyntämiskoodin vuoksi. Hyödyntämisprimitiiviluokka (sivuvälimuistin kirjoitus splicen kautta) limittyy Dirty Pipeen (CVE-2022-0847), jota hyödynnettiin laajasti viikkojen kuluessa paljastuksesta.
Vaikuttaako Copy Fail erityisesti AI/ML-työkuormiin?
Kyllä, suhteettoman paljon. Itse isännöity päättely (vLLM, sglang, Ollama), agenttiruntimet, MCP-palvelimet ja ML-kuvien CI-buildit suorittavat säännöllisesti luotettavaa käyttäjäkoodia. Mikä tahansa näistä containerissa, jopa PSS Restricted -tilassa, voi laukaista Copy Failin ja kaapata hostin. GPU-nodet ovat korkeimman riskin profiili, koska ne ovat tyypillisesti monivuokraajaisia.
Miten Copy Fail eroaa Dirty Pipesta?
Molemmat ovat Linux-ytimen LPE-haavoittuvuuksia, jotka tuottavat mielivaltaisia sivuvälimuistin kirjoituksia, mutta laukaisupinta eroaa: Dirty Pipe hyväksikäytti splice():tä putkeen, Copy Fail hyväksikäyttää splice():tä algif_aead (AF_ALG) -socketiin. Molemmat ohittavat standardit containerien seccomp-oletusasetukset. Copy Failin koukku: AF_ALG-polku on saavutettavissa Pod Security Standards Restricted -tilassa RuntimeDefault-asetuksella.
Alaviiva
Copy Fail on korjattavissa noin 60 minuutissa, jos suoritat pelikirjan alusta loppuun: modprobe-blacklist, ytimen päivitys, seccomp-profiili, vahvistus. Kubernetes- ja AI-infran kulma on se, mikä tekee tästä CVE:stä erilaisen kuin rutiininomainen LPE: PSS Restricted RuntimeDefault-asetuksella ei pelasta sinua, ja yksi kompromisoitu päättelypod voi kaapata hostin. Modprobe-blacklist plus Localhost-seccomp-profiili on kestävä puolustus jopa korjauksen jälkeen.
Haluaisitko toiset silmät tarkistamaan incident-response-runbookkisi tai kovetetun K8s-baselinen ennen seuraavan ytimen CVE:n ilmestymistä? Ota yhteyttä Techsyyn. Me suoritamme alustan kovettamista tuotannon AI/ML-pinoille.
Päivitetty viimeksi 2026-05-05. Päivitämme postauksen uusilla jakeluneuvonnoilla 2026-05-12.