
Copy Fail (CVE-2026-31431) — это логическая ошибка в модуле algif_aead ядра Linux, входящем в пользовательский крипто-API AF_ALG. Уязвимость была раскрыта 29 апреля 2026 года компаниями Theori / Xint Code.
Скрипт обнаружения только для чтения для уязвимости локального повышения привилегий Copy Fail в ядре Linux.
Никакого эксплойт-кода. Никаких AF_ALG-сокетов. Никаких файлов, записываемых за пределами/etc/modprobe.d(только если вы применяете смягчение вручную).
Copy Fail (CVE-2026-31431) — логическая ошибка в модуле algif_aead ядра Linux — части пользовательского крипто-API AF_ALG. Она была раскрыта 29 апреля 2026 года компанией Theori / Xint Code.
Скрипт на Python размером 732 байта может дать непривилегированному локальному пользователю полный root-доступ практически на любом крупном дистрибутиве Linux, собранном с 2017 года — без гонок, смещений ядра или скомпилированных полезных нагрузок.
| Свойство | Детали |
|---|
| CVE | CVE-2026-31431 |
| CVSS | 7.8 HIGH |
| Тип | Локальное повышение привилегий (LPE) |
| Затронутые ядра | 4.14 – 6.18.21, 6.19.0 – 6.19.11 |
| Корневая причина | Оптимизация на месте в algif_aead (коммит 72548b093ee3, 2017) |
| Исправление в апстриме | Откат через коммит a664bf3d603d |
| Надёжность эксплойта | Детерминированная — гонка не требуется |
modprobe.d, параметр командной строки ядра initcall_blacklistkmod согласно USN-8226-1Примечание об Ubuntu / Debian: Ubuntu не повышает версию апстрим-ядра при бэкпорте исправлений безопасности. Поэтому скрипт проверяет версию пакета
kmod(>= 31+20240202-2ubuntu7.2согласно USN-8226-1), а не полагается только на строку версии ядра.
| Дистрибутив | Метод проверки |
|---|---|
| Ubuntu / Linux Mint | Версия пакета kmod (USN-8226-1) |
| Debian | Версия пакета kmod + трекер безопасности |
| Parrot OS | Версия пакета kmod (Debian rolling) |
| RHEL / CentOS / AlmaLinux / Rocky | dnf updateinfo + параметр initcall_blacklist |
| Fedora | dnf updateinfo |
| Amazon Linux | dnf check-update --security |
| SUSE / openSUSE | zypper lp |
| Arch Linux | pacman -Syu linux |
# Скачать
curl -O https://raw.githubusercontent.com/kw-soft/copyfail/main/copyfail.sh
# Сделать исполняемым
chmod +x copyfail.sh
# Запустить (root рекомендуется для полной видимости модулей)
sudo ./copyfail.sh
============================================
CVE-2026-31431 'Copy Fail' — безопасное обнаружение
============================================
[*] Ядро: 6.8.0-71-generic
[!] Ядро 6.8.0-71-generic находится в уязвимом диапазоне апстрима (4.14 – 6.19.11)
[~] Далее следует проверка бэкпорта дистрибутива — номер версии сам по себе не является окончательным
[*] Статус модуля algif_aead:
[!] algif_aead ЗАГРУЖЕН — поверхность атаки активна
[*] Статус исправления дистрибутива:
Дистрибутив : Ubuntu 24.04
установлен kmod : 31+20240202-2ubuntu6
требуется kmod : >= 31+20240202-2ubuntu7.2
[!] kmod 31+20240202-2ubuntu6 < 31+20240202-2ubuntu7.2 — смягчение НЕ применено
============================================
РЕЗУЛЬТАТ
============================================
[!] УЯЗВИМА — ядро затронуто, и algif_aead активен
============================================
CVE-2026-31431 'Copy Fail' — безопасное обнаружение
============================================
[*] Ядро: 6.8.0-71-generic
[!] Ядро 6.8.0-71-generic находится в уязвимом диапазоне апстрима (4.14 – 6.19.11)
[~] Далее следует проверка бэкпорта дистрибутива — номер версии сам по себе не является окончательным
[*] Статус модуля algif_aead:
[✓] algif_aead НЕ загружен
[✓] Чёрный список modprobe активен: /etc/modprobe.d/disable-algif_aead.conf
[*] Статус исправления дистрибутива:
Дистрибутив : Ubuntu 24.04
установлен kmod : 31+20240202-2ubuntu7.2
требуется kmod : >= 31+20240202-2ubuntu7.2
[✓] kmod >= 31+20240202-2ubuntu7.2 — смягчение USN-8226-1 присутствует
============================================
РЕЗУЛЬТАТ
============================================
[✓] СМЯГЧЕНО — algif_aead заблокирован
[~] Примените пропатченное ядро, когда оно станет доступно, чтобы полностью решить проблему
sudo apt update && sudo apt upgrade && sudo reboot
Это устанавливает пропатченный пакет kmod (USN-8226-1), который добавляет правило modprobe.d, блокирующее algif_aead.
Если немедленная перезагрузка невозможна:
echo 'install algif_aead /bin/false' | sudo tee /etc/modprobe.d/disable-algif.conf
sudo update-initramfs -u
sudo rmmod algif_aead 2>/dev/null || echo "Модуль используется — требуется перезагрузка"
⚠️ В ядрах семейства RHEL
algif_aeadвстроен в ядро (CONFIG_CRYPTO_USER_API_AEAD=y).
Правилаmodprobe.dне действуют. Вместо этого используйте параметр grub:
sudo grubby --update-kernel=ALL --args='initcall_blacklist=algif_aead_init'
sudo reboot
sudo pacman -Syu linux && sudo reboot
Смягчение не влияет ни на что из следующего:
dm-crypt / полнодисковое шифрование LUKSЗатронуты могут быть только приложения, явно настроенные на использование движка afalg или напрямую связывающие AF_ALG AEAD-сокеты, — это редко встречается в стандартных развёртываниях.
Hetzner не применяет обновления ОС автоматически. Ubuntu поставляется с предустановленным unattended-upgrades, но его необходимо включить и настроить.
# Проверить, активны ли автоматические обновления безопасности
cat /etc/apt/apt.conf.d/20auto-upgrades
# Просмотреть историю обновлений
grep "^Start-Date\|^Commandline" /var/log/apt/history.log | tail -30
# Проверить, было ли смягчение kmod применено автоматически
grep "kmod\|algif" /var/log/apt/history.log
# Проверить последний запуск unattended-upgrades
tail -30 /var/log/unattended-upgrades/unattended-upgrades.log
Примечание: Даже при включённом
unattended-upgradesавтоматические перезагрузки по умолчанию отключены.
Новое ядро становится активным только после ручнойreboot.
Этот скрипт предназначен для использования на системах, которыми вы владеете или на тестирование которых уполномочены.
Он выполняет проверки только для чтения и никоим образом не эксплуатирует уязвимость.