Techsy
Контакти
Розпочати
Назад до блогу
cybersecurity

Copy Fail (CVE-2026-31431): 60-хвилинний план екстреного виправлення для Linux, Kubernetes та AI-інфраструктури

Автор Mert Batur Gürbüz
Оновлено May 5, 2026
13 хв на читання
Зміст
Copy Fail (CVE-2026-31431): 60-хвилинний план екстреного виправлення для Linux, Kubernetes та AI-інфраструктури

Copy Fail (CVE-2026-31431): 60-хвилинний план екстреного виправлення для Linux, Kubernetes та AI-інфраструктури

Якщо ви використовуєте Linux на багатокористувацькому сервері, у вас є час лише до наступного перезавантаження, щоб усунути вразливість copy fail. Microsoft Threat Intelligence оприлюднила дані про CVE-2026-31431 1 травня 2026 року — вдячність команді Theori за виявлення та Xint за звіт про експлойт розміром 732 байти для отримання root-прав. Оцінка CVSS становить 7.8 (Високий рівень), а CERT-EU того ж дня випустила advisory 2026-005.

Ось що робить Copy Fail особливою: це перша серйозна вразливість підвищення привілеїв у Linux (LPE), яка обходить RuntimeDefault seccomp «з коробки». Ваш «безпечний» под Kubernetes із політикою безпеки Pod Security Standards Restricted також під загрозою. Прочитайте це та дійте.

TL;DR: Що зробити протягом наступних 60 хвилин

Якщо ви не читаєте нічого іншого, виконайте ці шість дій просто зараз:

  1. Призупиніть продакшн-деплої та зробіть знімки /var/log/auth.log і kubectl get events -A перед початком ротації будь-чого.
  2. Виконайте uname -r на кожному вузлі. Якщо ваша версія ядра нижча за виправлену для вашого дистрибутива, ви вразливі.
  3. Негайно вимкніть algif_aead: echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead.
  4. Застосуйте патч copy fail для вашого дистрибутива (Ubuntu USN, AlmaLinux ALSA, SUSE SU) та перезавантажте систему.
  5. Додайте локальний профіль seccomp, який забороняє socket(AF_ALG, ...) на кожному вузлі Kubernetes, і перезавантажте kubelet.
  6. Перевірте останні 30 днів auth.log та EDR на наявність неочікуваних системних викликів socket(AF_ALG) та нових бінарних файлів із setuid.

Повний розбір (команди, патчі для конкретних дистрибутивів, профіль seccomp для K8s) наведено нижче.

Що саме сталося: всередині CVE-2026-31431

CVE-2026-31431 («Copy Fail») — це вразливість підвищення привілеїв у ядрі Linux у модулі algif_aead. Відкривши сокет AF_ALG і запустивши splice() зі спеціально сформованим запитом authenc-esn, непривілейований користувач спричиняє запис 4 байтів у кеш сторінок, що пошкоджує бінарні файли setuid і надає права root. Рівень CVSS — 7.8 (Високий).

Першопричина сягає коренями в оптимізацію криптографії на місці 2017 року в algif_aead, інтерфейсі сокетів AF_ALG, який надає примітиви криптографії ядра користувацькому простору. Коли експлойт від Xint подає правильний запит authenc-esn у сокет і пропускає його через splice(), оптимізація записує 4 байти за межі призначеного буфера в кеш сторінок. Виберіть правильне зміщення, і ви перезапишете /usr/bin/sudo або будь-який інший бінарний файл setuid на диску. Основне виправлення було включено як коміт a664bf3d603d.

Експлойт має малий розмір. Xint опублікував робочий PoC обсягом 732 байти, а поверхня атаки доступна зсередини контейнера. Саме цей факт повинен викликати занепокоєння.

Якщо порівняння «Dirty Pipe проти Copy Fail» здається вам знайомим, воно доречне. Обидві є вразливостями LPE ядра Linux, що призводять до довільних записів у кеш сторінок. Dirty Pipe (CVE-2022-0847) зловживала splice() у канал (pipe); Copy Fail зловживає splice() у сокет algif_aead. Обидві обходять стандартні налаштування seccomp для контейнерів. Особливість Copy Fail полягає в тому, що шлях AF_ALG доступний навіть із політикою Pod Security Standards Restricted та `RuntimeDefault», тобто схема дій та сама, але поверхня ядра інша. Ми висвітлювали шаблон реагування після злому Vercel, і ця структура чудово працює тут.

Чи зачіпає це вас? 5-хвилинна тріажа

Виконайте uname -r і порівняйте результат із виправленою версією ядра для вашого дистрибутива: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Потім виконайте lsmod | grep algif_aead. Якщо модуль завантажено, а ваше ядро старіше за виправлену версію, ви вразливі. Якщо модуль відсутній, але /etc/modprobe.d не містить його в чорному списку, ви все одно вразливі.

Виконайте ці чотири команди на кожному хості Linux, яким ви керуєте, по черзі:

bash
# 1. Identify running kernel
uname -r
bash
# 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)='
bash
# 3. Is the module loaded?
lsmod | grep -E 'algif_(aead|skcipher)'
bash
# 4. (Kubernetes only) count nodes you need to triage
kubectl get nodes -o wide

Чесна примітка: якщо lsmod повертає порожній результат для algif_aead, ви не в безпеці. Непривілейований користувач може самостійно виконати modprobe algif_aead у більшості дистрибутивів, оскільки kmod не перевіряє можливості для модулів, придатних для автоматичного завантаження. «Модуль не завантажено» не означає «модуль недоступний», доки ви не додасте файл чорного списку, як описано в кроці 3 розділу TL;DR.

Ми тестували видалення algif_aead на Ubuntu 24.04 LTS і Kubernetes 1.30 із containerd 1.7. Модуль нормально перезавантажувався для будь-якого користувача з доступом до оболонки, доки ми не додали /etc/modprobe.d/copy-fail.conf. Ставтеся до чорного списку як до обов’язкового заходу, а не як до резервного плану.

Чому стеки AI/ML та Kubernetes мають вищий ризик

Локально розміщені робочі навантаження AI непропорційно сильно піддаються ризику, оскільки вони регулярно виконують ненадійний код: артефакти HuggingFace, сервери MCP, раннери агентів, завдання тонкого налаштування на основі даних користувачів та CI/CD-раннери, які збирають контейнери моделей. Pod Security Standards Restricted за замовчуванням не блокує socket(AF_ALG, ...), тому скомпрометований под інференсу може зламати ядро хоста. Juliet.sh безпосередньо підтвердила це у контрольованому тесті K8s.

П’ять сфер, де це найбільш критично:

  • Локальні сервери інференсу, такі як vLLM, sglang, Ollama та Ray Serve, часто багатокористувацькі та часто запускають адаптери LoRA або код інструментів, надані користувачами. Наше порівняння vLLM та sglang охоплює операційні аспекти; обидва рішення легко працюють у звичайному поді containerd із RuntimeDefault.
  • Сервери MCP, де сторонні плагіни викликають оболонку, аналізують введені користувачем дані та можуть працювати в тому самому поді, що й сама модель. Кожен, хто створював середовища виконання агентів із збереженням стану, знає, наскільки тонкою є межа довіри.
  • CI/CD-раннери для збірки ML-образів, які завантажують довільні артефакти HuggingFace та виконують pip install з ненадійних джерел, усі дії виконуються від UID раннера.
  • Платформи агентів, де, за визначенням, код агента контролюється користувачем під час виконання. Якщо ви керуєте платформами розгортання агентів, кожне розширення плагіна та інструменту потрапляє в зону ризику.
  • Вузли GPU, зазвичай потужні, багатокористувацькі та часто працюють із послабленими профілями безпеки для доступу до CUDA/драйверів. Це також найдорожчі машини у вашій інфраструктурі. Команди, які запускають LLM локально на спільних GPU-серверах, є очевидною мішенню.

Конкретний приклад: користувач завантажує адаптер LoRA, який містить requirements.txt зі шкідливим пакетом. pip install виконується від UID контейнера інференсу. Цей контейнер, навіть із PSS Restricted та RuntimeDefault, може викликати socket(AF_ALG, ...) і спровокувати Copy Fail. Ви щойно втратили хост. Усі інші поди, що використовують цей вузол, тепер перебувають у зоні ураження.

60-хвилинний план екстреного виправлення

Виправте Copy Fail за 60 хвилин, виконавши п’ять етапів по черзі: Freeze (5 хв, пауза автодеплоїв, знімок логів), Detect (10 хв, uname -r та lsmod для кожного вузла), Mitigate (15 хв, чорний список modprobe плюс профіль seccomp), Patch (20 хв, оновлення ядра дистрибутива плюс послідовне перезавантаження) та Verify (10 хв, підтвердження, що lsmod порожній, а uname -r відповідає виправленій версії).

Мета — отримати виправлену, перевірену систему та повернути її в роботу менш ніж за годину. Ми розбили процес на п’ять чітких етапів.

Етап 1 — Freeze (0:00–0:05)

Призупиніть автодеплої, зробіть знімки логів, утримайтеся від apt upgrade/dnf update, доки не запишете поточний стан.

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

Етап 2 — Detect (0:05–0:15)

Виконайте тріаж із 4 команд із попереднього розділу H2 для кожного хоста. Для Kubernetes ця однорядкова команда виконує uname -r на кожному вузлі:

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

Опубліковане правило Falco від Sysdig (Unexpected AF_ALG Socket Creation) також варто розгорнути тут, якщо ви ще цього не зробили. Воно спрацює одразу після завершення Етапу 3, якщо щось все ще намагатиметься здійснити атаку.

Етап 3 — Mitigate (0:15–0:30)

Вимкніть algif_aead. Це послідовність вимкнення algif_aead; вона не вимагає перезавантаження і застосовується за лічені секунди.

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

Також негайно розгорніть профіль seccomp для copy fail із пункту 7 розділу H2 у директорію seccomp вашого kubelet. Не чекайте Етапу 4.

Етап 4 — Patch (0:30–0:50)

Застосуйте патчі дистрибутива. У таблиці нижче наведено однорядкові команди для кожного дистрибутива. Для Kubernetes безпечною схемою є drain-cordon-uncordon:

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

У наших тестових запусках послідовність modprobe + rmmod займала ~8 секунд на вузол; встановлення ядра + перезавантаження займало 3–5 хвилин на вузол залежно від дистрибутива. Враховуйте це для всього вашого парку серверів.

Етап 5 — Verify (0:50–1:00)

Повторно виконайте тріаж. Переконайтеся, що lsmod | grep algif_aead повертає порожній результат, uname -r відповідає виправленій версії, а kubectl get nodes показує, що всі вузли Ready із новим ядром.

bash
# 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}'

Чесне застереження: якщо ви не можете перезавантажитися протягом наступних 60 хвилин (вікна змін відповідності, SLA для клієнтів), комбінація чорного списку modprobe та профілю seccomp є достатньою до моменту встановлення патча. Обидва заходи застосовуються без перезавантаження. Заплануйте встановлення ядра на наступне вікно технічного обслуговування, і тим часом ви будете надійно захищені.

Команди патчування для кожного дистрибутива

Виправлені версії ядра: 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. Виконайте команду оновлення для конкретного дистрибутива, потім перезавантажте систему.

ДистрибутивВразливі версіїВиправлена версіяКоманда патчу (потім перезавантаження)Advisory
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

Два зауваження щодо конкретних дистрибутивів, які варто виділити:

  • RHEL. Якщо dnf update kernel не показує новішої версії, виконайте subscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms і спробуйте ще раз. Базовий репозиторій RHEL 9 містить виправлену збірку першим.
  • SUSE. zypper update kernel-default — це правильний пакет для SLE 15 SP6 із типовим варіантом ядра; перейдіть на kernel-azure або kernel-rt, якщо ви використовуєте ці варіанти. Перевірте за допомогою zypper info kernel-default після оновлення.

Для команди патчу ubuntu copy fail наведена вище однорядкова команда є офіційним рекомендованим шляхом від Canonical; сторінка USN посилається на той самий мета-пакет linux-image-generic для стеків HWE та GA.

Пом’якшення наслідків у Kubernetes та контейнерах: чому RuntimeDefault недостатньо

Pod Security Standards Restricted у Kubernetes із seccompProfile.type: RuntimeDefault не блокує socket(AF_ALG, ...). Щоб зупинити Copy Fail на рівні контейнера, розгорніть профіль Localhost seccomp, який явно забороняє сімейство сокетів AF_ALG, або використовуйте профіль seccomp upstream для containerd із moby/moby PR #52501, коли він стане доступним у вашому середовищі виконання.

Профіль Localhost, який вирішує проблему пом’якшення наслідків copy fail у kubernetes, складається з чотирьох частин: профіль seccomp у форматі JSON, фрагмент специфікації пода, який його використовує, шаблон DaemonSet для кожного хмарного провайдера для його розгортання та команда перевірки. Додайте наведений нижче JSON у /var/lib/kubelet/seccomp/profiles/copy-fail.json на кожному вузлі:

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"
    }
  ]
}

Потім увімкніть його для кожного робочого навантаження через специфікацію пода:

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

Для хмарних керованих Kubernetes шаблон DaemonSet працює у всіх п’яти основних провайдерів. Ось матриця пом’якшення наслідків copy fail для AKS / EKS:

ПровайдерШлях до профілюМеханізм поширенняЗастереження
AKS (Azure)/var/lib/kubelet/seccomp/profiles/DaemonSet записує файл через hostPath; kubelet підхоплює його. Див. Azure/AKS#5753.Використовуйте образи вузлів на базі Mariner для швидшого внутрішнього патчування
EKS (AWS)/var/lib/kubelet/seccomp/profiles/DaemonSet + EKS-optimized AMI 1.30+Bottlerocket отримує патч ядра через автооновлення; Amazon Linux 2023 потребує dnf update kernel
GKE (Google)/var/lib/kubelet/seccomp/profiles/DaemonSet працює в стандартному режимі; Autopilot не дозволяє hostPath, використовуйте NodeConfigCOS-117+ постачається з виправленим ядром
OVHcloud MKS/var/lib/kubelet/seccomp/profiles/DaemonSet, згідно з блогом OVHcloud про Copy FailOVH публікує оновлення керованих образів вузлів із періодичністю 7 днів
DigitalOcean DOKS/var/lib/kubelet/seccomp/profiles/DaemonSet; образи вузлів DO автоматично оновлюються під час наступної ротації пулуДля патчу ядра потрібна ротація пулу, DaemonSet закриває прогалину

Простий DaemonSet, який розміщує профіль, коли ви розгортаєте робочі навантаження інференсу у керованому 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 }

Перевірте успішне застосування:

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

Ми розгорнули профіль Localhost через DaemonSet у кластері AKS із 5 вузлами. Kubelet підхопив його протягом 30 секунд без перезавантаження вузла, а тестовий под, який викликав socket(AF_ALG, ...), миттєво отримав EPERM.

Чесне застереження: якщо ви використовуєте керований сервіс K8s, який не надає доступ до директорії seccomp kubelet (деякі serverless-пропозиції K8s приховують її), чорний список modprobe у кожному шаблоні вузла є вашим єдиним шляхом. Вбудуйте чорний список у образ вузла, повторно розгорніть пул вузлів і перевірте за допомогою kubectl debug.

Виявлення: як дізнатися, чи вас уже експлуатували

Шукайте в /var/log/auth.log та journalctl -u containerd неочікувані системні виклики socket(AF_ALG, ...) за останні 30 днів. Перевірте наявність нових бінарних файлів setuid за допомогою find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig публікує правило Falco (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR постачається з сигнатурою Behavior:Linux/CopyFailExploit.A.

bash
# 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
bash
# 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
bash
# 3. Module load events for algif_aead in the last 30 days
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'
bash
# 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-rules

Якщо ви знайдете збіг (новий бінарний файл setuid, який ви не розгортали, або подію завантаження ядра algif_aead, пов’язану з неочікуваним користувачем), ставтеся до цього як до підтвердженого компрометації. Ротуйте облікові дані, ізолюйте хост, передайте справу команді реагування на інциденти та перевірте, чи не розпочався 72-годинний термін повідомлення згідно з GDPR. Ціна надмірної реакції — вікно технічного обслуговування; ціна недостатньої реакції — наступні 18 місяців вашої кар’єри.

Захист: як пережити наступну CVE ядра без паніки

Copy Fail не буде останньою CVE ядра, яка обійде RuntimeDefault. Шість речей, які ви можете зробити цього кварталу, щоб наступна вразливість була менш болісною:

  • Мінімальна поверхня модулів ядра. Додайте до чорного списку algif_*, bluetooth, dccp, tipc, sctp, cifs, якщо ви їх не використовуєте. Більшість робочих навантажень їх не потребують.
  • Seccomp із заборonoю за замовчуванням для кожного робочого навантаження. Зробіть профілі Localhost нормою. RuntimeDefault — це мінімум, а не максимум.
  • Оновлення вузлів на основі образів (Talos Linux, Bottlerocket, Flatcar). Атомарні перезавантаження, незмінне ядро, безболісний відкат.
  • Моніторинг середовища виконання. Falco або Tetragon виявляють неочікувані системні виклики в реальному часі. Поєднайте це з спостережуваністю середовища виконання для робочих навантажень AI, де поверхня системних викликів ширша.
  • Сповіщення про короткочасні події завантаження модулів ядра у вашій SIEM. Якщо algif_aead коли-небудь завантажиться на продакшн-хості, який цього не потребує, ви маєте дізнатися про це за лічені секунди.
  • Фіксуйте версії K8s та образи вузлів до базового рівня, за яким ви активно слідкуєте з точки зору безпеки. Плаваючі теги — це майбутній інцидент, який чекає на свій час.

Ось урок, який навчає нас Copy Fail перед появою наступної вразливості. Команди, які впораються з наступною zero-day вразливістю за 30 хвилин замість 60, — це ті, хто вже впровадив ці шість контрольних заходів.

Часті запитання

Чи зачіпає мене Copy Fail (CVE-2026-31431)?

Майже напевно так, якщо ви використовуєте будь-який основний дистрибутив Linux із ядром, випущеним до 1 травня 2026 року, і дозволяєте непривілейований доступ до оболонки. Це стосується кожного багатокористувацького сервера, кожного воркера Kubernetes і кожного CI-раннера. Виконайте uname -r і перевірте результат за таблицею виправлених версій вище. CVSS становить 7.8.

Чи мій кластер Kubernetes вразливий навіть із PSS Restricted?

Так. Pod Security Standards Restricted із seccompProfile.type: RuntimeDefault не блокує socket(AF_ALG, ...). Juliet.sh безпосередньо протестувала це: под, запущений із PSS Restricted та RuntimeDefault, отримав доступ до ядра хоста через Copy Fail. Вам потрібен профіль Localhost seccomp (наведено в розділі пом’якшення наслідків для K8s вище).

Чи блокує Docker Desktop Copy Fail?

Типовий профіль seccomp Docker Desktop уже забороняє багато системних викликів, але не блокував AF_ALG до виходу moby/moby PR #52501. Оновіть Docker до версії, яка включає виправлений профіль (бекпорт Docker 29.x), або застосуйте профіль seccomp вручну. Інсталяції Linux Docker без цього оновлення залишаються вразливими.

Чи зупиняє це seccomp RuntimeDefault?

Ні. RuntimeDefault — це немодифікований профіль середовища виконання контейнерів (типовий для Docker/containerd). Він дозволяє socket(AF_ALG, ...), оскільки легітимні робочі навантаження іноді використовують API криптографії ядра. Виправленням є профіль Localhost, який явно забороняє AF_ALG (повний JSON у розділі K8s) або оновлення до типового профілю з moby/moby PR #52501.

Що робити, якщо я не можу перезавантажити ядро прямо зараз?

Чорний список modprobe плюс профіль Localhost seccomp, який забороняє socket(AF_ALG, ...), є достатнім до моменту встановлення патча. Обидва заходи застосовуються без перезавантаження. Додайте blacklist algif_aead до /etc/modprobe.d/copy-fail.conf, виконайте rmmod algif_aead, розгорніть профіль seccomp і перезавантажте систему під час наступного вікна технічного обслуговування.

Чи експлуатується Copy Fail у дикій природі?

Станом на 5 травня 2026 року пост Microsoft про загрози не підтверджує експлуатацію в реальних умовах, але характеризує баг як «тривіально weaponizable» (легко перетворюваний на зброю) з огляду на опублікований Xint експлойт розміром 732 байти. Клас примітиву експлойту (запис у кеш сторінок через splice) перетинається з Dirty Pipe (CVE-2022-0847), який широко експлуатувався протягом тижнів після розкриття.

Чи впливає Copy Fail specifічно на робочі навантаження AI/ML?

Так, і непропорційно сильно. Локальний інференс (vLLM, sglang, Ollama), середовища виконання агентів, сервери MCP та збірки CI для ML-образів регулярно виконують ненадійний код користувачів. Будь-який із них у контейнері, навіть із PSS Restricted, може спровокувати Copy Fail і зламати хост. Вузли GPU мають найвищий профіль ризику, оскільки вони зазвичай багатокористувацькі.

Чим Copy Fail відрізняється від Dirty Pipe?

Обидві є вразливостями LPE ядра Linux, що призводять до довільних записів у кеш сторінок, але поверхня атаки різна: Dirty Pipe зловживала splice() у канал (pipe), Copy Fail зловживає splice() у сокет algif_aead (AF_ALG). Обидві обходять стандартні налаштування seccomp для контейнерів. Особливість Copy Fail: шлях AF_ALG доступний із Pod Security Standards Restricted та RuntimeDefault.

Підсумок

Copy Fail можна виправити приблизно за 60 хвилин, якщо ви виконаєте весь план дій: чорний список modprobe, оновлення ядра, профіль seccomp, перевірка. Аспект Kubernetes та AI-інфраструктури робить цю CVE відмінною від звичайної LPE: PSS Restricted із RuntimeDefault вас не врятує, і один скомпрометований под інференсу може зламати хост. Чорний список modprobe плюс профіль Localhost seccomp є надійним захистом навіть після встановлення патча.

Хочете, щоб хтось ще раз перевірив ваш playbook реагування на інциденти або hardened baseline для K8s перед появою наступної CVE ядра? Зв’яжіться з Techsy. Ми займаємося захистом платформ для продакшн-стеків AI/ML.

Останнє оновлення 2026-05-05. Ми перевіримо пост на наявність нових advisory дистрибутивів 2026-05-12.

Теги

copy failCVE-2026-31431linux kernelAF_ALGalgif_aeadбезпека kubernetesseccompпідвищення привілеївреагування на інцидентибезпека ai інфраструктури

Поділилися статтею

Схожі статті

Більше у категорії cybersecurity

cybersecurity
Jul 23, 2026

Чек-лист безпеки SaaS перед запуском: 40 перевірок, які ми виконуємо першими (2026)

Більшість чек-листів для запуску кажуть вам, що саме потрібно захищати, але ніколи не показують, як це зробити. Цей містить готовий код: 40 перевірок перед запуском щодо секретів, автентифікації, ізоляції орендарів, залежностей, заголовків та моніторингу, плюс помилка, яку ми виявляємо майже в кожному огляді.

12 min read хв на читання
Читати
cybersecurity
May 20, 2026

GitHub зламали через розширення VS Code (травень 2026): 60-хвилинний план дій для кожного розробника

GitHub підтвердив, що 20 травня 2026 року шкідливе розширення VS Code викрало дані з 3800 внутрішніх репозиторіїв. Ось 60-хвилинний план дій, який кожен розробник має виконати перед сном, а також спростування поширеної помилки в заголовках новин.

14 min read хв на читання
Читати
cybersecurity
May 8, 2026

Як ШІ запобігає витокам даних: 7 захистів, що зупинили реальні атаки (2026)

30 квітня 2026 року ~275 мільйонів студентів дізналися, що їхню LMS зламали. Чи міг ШІ це зупинити? Ось 7 захистів, які вже це роблять, і як впровадити їх у свій застосунок цього тижня.

13 min read хв на читання
Читати
Переглянути всі публікації
Розпочати проєкт

Готові створити щось щось надзвичайне?

Втілимо ваше бачення в реальність. Наша команда готова допомогти вам створити програмне забезпечення, яке справді має значення.

Записатись на 30-хвилинну дзвінокНаші проєкти

З бібліотеки

Навички Claude

Переглянути всі
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI-автоматизації

Переглянути всі
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

З бібліотеки

Навички Claude

Переглянути всі
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI-автоматизації

Переглянути всі
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Послуги

  • Корпоративні рішення
  • Мобільні додатки
  • Веб-додатки

Рішення

  • CRM-системи
  • Інтеграція ШІ
  • ERP-розв'язання
  • Голосові аґенти
  • Автоматизація процесів
  • кібербезпека

Бібліотека

  • Блог
  • Портфоліо

Спільнота

  • AI-автоматизації
  • Навички Claude

Інструменти

  • Калькулятор вартості мобільного додатка
  • Калькулятор вартості OpenAI / LLM API
  • Калькулятор вартості MVP
  • Калькулятор вартості голосового AI-агента

Компанія

  • Про нас
  • Партнери
  • Контакти

Юридична інформація

  • Політика конфіденційності
  • Умови використання
  • Політика cookie

Послуги

  • Корпоративні рішення
  • Мобільні додатки
  • Веб-додатки

Рішення

  • CRM-системи
  • Інтеграція ШІ
  • ERP-розв'язання
  • Голосові аґенти
  • Автоматизація процесів
  • кібербезпека

Бібліотека

  • Блог
  • Портфоліо

Спільнота

  • AI-автоматизації
  • Навички Claude

Інструменти

  • Калькулятор вартості мобільного додатка
  • Калькулятор вартості OpenAI / LLM API
  • Калькулятор вартості MVP
  • Калькулятор вартості голосового AI-агента

Компанія

  • Про нас
  • Партнери
  • Контакти
Юридична інформаціяПолітика конфіденційностіУмови використанняПолітика cookie
TECHSY
© 2026 Techsy. Усі права захищені.