Поддержка 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 или новее. По остальным дистрибутивам смотрите официальные страницы с бюллетенями безопасности.

Источники

Если нужна помощь с применением обходного приёма на вашем сервере, откройте тикет в поддержку.