Усунення CVE-2026-31431 (системи на Linux)
CVE-2026-31431 «Copy Fail» — локальне підвищення привілеїв у ядрі Linux. Як зрозуміти, чи зачеплений ваш сервер, і як закрити вразливість.
Як закрити CVE-2026-31431 («Copy Fail») на серверах Linux
- 1Перевірити, чи зачеплений серверuname -r, потім пошукати CVE-2026-31431 у списку змін ядра.
- 2Поставити пропатчене ядроБажано завжди, коли дистрибутив його випустив.
- 3Або застосувати обхідний прийомПовністю вимикає вразливий інтерфейс algif_aead. Ефективність повна.
- 4ПерезавантажитисяЖоден зі шляхів не набуває чинності до перезапуску сервера.
- 5Перевірити після перезавантаженняПереконатися, що параметр завантаження активний або що працює пропатчене ядро.
Що таке Copy Fail
CVE-2026-31431 із прізвиськом «Copy Fail» — вразливість локального підвищення привілеїв у ядрі Linux високого ступеня небезпеки (CVSS 7.8). Їй піддаються практично всі основні дистрибутиви Linux, що вийшли з 2017 року.
Проблема живе в криптографічному інтерфейсі ядра algif_aead. Зв’язавши виклик сокета AF_ALG зі splice(), непривілейований локальний користувач може виконати контрольований запис чотирьох байтів у сторінковий кеш будь-якого читабельного файла — включно з setuid-root бінарниками на кшталт /usr/bin/su. Робочий експлойт на Python обсягом 732 байти опубліковано, і він стабільно спрацьовує в різних дистрибутивах, без гонок і прив’язки до часу.
Чи зачеплений мій сервер
Якщо у вас будь-який дистрибутив Linux із ядром, випущеним між 2017 роком і патчем (квітень 2026), — так. Сюди входять:
- CentOS 7, CentOS Stream 8/9/10
- RHEL 7/8/9/10, AlmaLinux, Rocky Linux, CloudLinux
- Ubuntu 18.04, 20.04, 22.04, 24.04 (Ubuntu 26.04 і новіші не зачеплені)
- Debian 10, 11, 12
Вразливість потребує локального виконання коду — сама по собі віддалено вона не експлуатується. Але на віртуальному хостингу, у багатокористувацьких середовищах, контейнерах і CI це критичний ризик: будь-який користувач із доступом до оболонки, зокрема через зламаний сайт, може піднятися до root.
Швидка перевірка
Виконайте на будь-якому сервері Linux:
uname -r
grep -E 'authencesn|algif_aead' /proc/crypto
Якщо в списку змін ядра ще немає згадки CVE-2026-31431, сервер вразливий і йому потрібне або пропатчене ядро, або обхідний прийом нижче.
Як лагодити
Є два варіанти:
- Поставити пропатчене ядро з репозиторію дистрибутива і перезавантажитися (бажано, коли воно доступне).
- Застосувати обхідний прийом нижче: він повністю вимикає вразливий інтерфейс
algif_aead. Ефективність повна, потрібне лише перезавантаження.
Обхідний прийом ніяк не впливає на dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS, NSS і SSH. Зачеплені тільки застосунки, які явно використовують користувацький криптоінтерфейс AF_ALG для операцій AEAD, — на звичайних серверах це рідкість.
Обхідний прийом для систем на RPM (CentOS / RHEL / AlmaLinux / Rocky Linux / CloudLinux)
Застосовно до: CentOS 7, CentOS Stream 8/9/10, RHEL 7/8/9/10, AlmaLinux 8/9/10, Rocky Linux 8/9/10, CloudLinux 7/8/9/10.
Крок 1 — додайте параметр завантаження ядра
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
Крок 2 — переконайтеся, що параметр встановлено
sudo grubby --info=DEFAULT | grep args
У виводі має бути initcall_blacklist=algif_aead_init.
Крок 3 — перезавантажте сервер
sudo reboot
Крок 4 — перевірте після перезавантаження, що прийом діє
cat /proc/cmdline | grep initcall_blacklist
grep -E 'authencesn|algif_aead|af_alg' /proc/crypto
dmesg | grep -i 'blacklisting initcall'
Очікуваний результат:
- Перша команда має показати параметр.
- Друга команда має повернути порожній вивід.
- Третя має показати
blacklisting initcall algif_aead_init.
Якщо всі три перевірки пройшли, прийом діє повністю.
Обхідний прийом для систем на Debian / Ubuntu
Застосовно до: Debian 10/11/12, Ubuntu 18.04, 20.04, 22.04, 24.04.
Крок 1 — створіть чорний список modprobe
sudo tee /etc/modprobe.d/disable-algif-aead.conf > /dev/null <<'EOF'
install algif_aead /bin/false
blacklist algif_aead
EOF
Крок 2 — зробіть резервну копію конфігурації GRUB
sudo cp /etc/default/grub /etc/default/grub.backup-copyfail
Крок 3 — додайте параметр завантаження ядра
sudo sed -i 's|^GRUB_CMDLINE_LINUX="\(.*\)"|GRUB_CMDLINE_LINUX="\1 initcall_blacklist=algif_aead_init"|' /etc/default/grub
Крок 4 — переконайтеся, що параметр додано
grep GRUB_CMDLINE_LINUX /etc/default/grub
У виводі має бути initcall_blacklist=algif_aead_init.
Крок 5 — перезберіть конфігурацію GRUB
sudo update-grub
Якщо update-grub недоступний (мінімальний Debian), скористайтеся:
sudo grub-mkconfig -o /boot/grub/grub.cfg
Крок 6 — оновіть initramfs
sudo update-initramfs -u
Крок 7 — перезавантажте сервер
sudo reboot
Крок 8 — перевірте після перезавантаження, що прийом діє
cat /proc/cmdline | grep initcall_blacklist
lsmod | grep algif_aead
grep -E 'authencesn|algif_aead|af_alg' /proc/crypto
dmesg | grep -i 'blacklisting initcall'
Очікуваний результат:
- Перша команда має показати параметр.
- Друга і третя мають повернути порожній вивід.
- Четверта має показати
blacklisting initcall algif_aead_init.
Як зняти обхідний прийом після встановлення пропатченого ядра
Коли дистрибутив випустить ядро з офіційним виправленням CVE-2026-31431, поставте його і зніміть обхідний прийом. Поспішати нікуди — прийом може лишатися скільки завгодно довго без шкоди.
Для систем на RPM
sudo dnf update kernel
sudo grubby --update-kernel=ALL --remove-args="initcall_blacklist=algif_aead_init"
sudo reboot
(У CentOS 7 замість dnf використовуйте yum.)
Для систем на Debian/Ubuntu
sudo apt update && sudo apt upgrade
sudo rm /etc/modprobe.d/disable-algif-aead.conf
sudo sed -i 's| initcall_blacklist=algif_aead_init||' /etc/default/grub
sudo update-grub
sudo update-initramfs -u
sudo reboot
Переконайтеся, що працює пропатчене ядро
uname -r
Порівняйте з офіційною версією пропатченого ядра вашого дистрибутива. Для AlmaLinux 9 це 5.14.0-611.49.2.el9_7 або новіше, для AlmaLinux 8 — 4.18.0-553.121.1.el8_10 або новіше. Щодо решти дистрибутивів дивіться офіційні сторінки з бюлетенями безпеки.
Джерела
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-31431
- Технічний розбір Theori: https://xint.io/blog/copy-fail-linux-distributions
- Сторінка проєкту: https://copy.fail/
- Бюлетень Red Hat: https://access.redhat.com/security/cve/CVE-2026-31431
- Бюлетень Ubuntu: https://ubuntu.com/security/CVE-2026-31431
- Трекер Debian: https://security-tracker.debian.org/tracker/CVE-2026-31431
- Оголошення AlmaLinux: https://almalinux.org/blog/2026-05-01-cve-2026-31431-copy-fail/
Якщо потрібна допомога із застосуванням обхідного прийому на вашому сервері, відкрийте тікет у підтримку.