Підтримка 24/7
Віртуальний хостингWordPress-хостингРеселер-хостингХостинг для OpenClawVPS-хостингВиділені сервериОбслуговування серверівПро компаніюПорівнянняРегіониБаза знаньПідтримкаДомениSSLБлогОсобистий кабінет
Безпека
База знань / Безпека

Усунення CVE-2026-31431 (системи на Linux)

CVE-2026-31431 «Copy Fail» — локальне підвищення привілеїв у ядрі Linux. Як зрозуміти, чи зачеплений ваш сервер, і як закрити вразливість.

Оновлено: 1 травня 2026 р.

Як закрити CVE-2026-31431 («Copy Fail») на серверах Linux

  1. 1Перевірити, чи зачеплений серверuname -r, потім пошукати CVE-2026-31431 у списку змін ядра.
  2. 2Поставити пропатчене ядроБажано завжди, коли дистрибутив його випустив.
  3. 3Або застосувати обхідний прийомПовністю вимикає вразливий інтерфейс algif_aead. Ефективність повна.
  4. 4ПерезавантажитисяЖоден зі шляхів не набуває чинності до перезапуску сервера.
  5. 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, сервер вразливий і йому потрібне або пропатчене ядро, або обхідний прийом нижче.

Як лагодити

Є два варіанти:

  1. Поставити пропатчене ядро з репозиторію дистрибутива і перезавантажитися (бажано, коли воно доступне).
  2. Застосувати обхідний прийом нижче: він повністю вимикає вразливий інтерфейс 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 або новіше. Щодо решти дистрибутивів дивіться офіційні сторінки з бюлетенями безпеки.

Джерела

Якщо потрібна допомога із застосуванням обхідного прийому на вашому сервері, відкрийте тікет у підтримку.