
Постоянные скрипты для устранения уязвимости CVE-2026-31431 (Copy Fail) на Ubuntu 24.04, добавляющие уязвимый модуль ядра algif_aead в чёрный список и обновляющие initramfs для сохранения изменений после перезагрузки.
Этот репозиторий содержит скрипты, предназначенные для нейтрализации критической уязвимости CVE-2026-31431, получившей название «Copy Fail», в системах Ubuntu.
[!IMPORTANT] Совместимость: Эти скрипты адаптированы и протестированы для Ubuntu Server 24.04 LTS. Хотя логика аналогична для других дистрибутивов, они не тестировались на Debian или других вариантах Linux.
Перед применением патча загрузите официальный скрипт обнаружения (разработанный rootsecdev) для проверки текущего состояния вашей системы:
# Загрузка скрипта обнаружения
wget https://raw.githubusercontent.com/rootsecdev/cve_2026_31431/main/test_cve_2026_31431.py
# Убедитесь, что у вас установлен python3
python3 --version
Уязвимость CVE-2026-31431 ($CVSS\ 7.8$) затрагивает криптографическую подсистему ядра Linux (модуль algif_aead).
Локальный пользователь может повредить Page Cache системы, используя ошибку в оптимизации «на месте» функции splice(). Это позволяет злоумышленнику заставить ядро записывать произвольные данные (порядковые номера) в страницы памяти файлов, которые должны быть доступны только для чтения (например, SUID-бинарники или чувствительные системные файлы).
modprobe -r недостаточноЯдро Linux использует механизм, называемый автозагрузкой. Если процесс или скрипт (например, детектор) запрашивает сокет типа AF_ALG, ядро автоматически перезагружает модуль, даже если он был удалён вручную. Метод, используемый в этом патче («Hard Block»), физически предотвращает загрузку бинарного файла модуля ядром.
Запустите тестер, чтобы подтвердить, подвержено ли ваше текущее ядро уязвимости:
python3 test_cve_2026_31431.py
Если скрипт отображает [!] VULNERABLE, переходите к следующему шагу.
Скрипт patch-CVE-2026-31431.sh навсегда нейтрализует вектор атаки. Он создаёт файл конфигурации в /etc/modprobe.d/ и обновляет initramfs, чтобы гарантировать сохранение блокировки после перезагрузки.
chmod +x patch-CVE-2026-31431.sh
sudo ./patch-CVE-2026-31431.sh
Запустите скрипт обнаружения снова. Теперь вы должны увидеть сообщение о том, что предварительные условия не выполнены:
[+] Precondition not met ('authencesn(...) cannot be instantiated).
Это подтверждает, что модуль успешно нейтрализован.
Как только Ubuntu выпустит официальное исправление через обновление ядра (проверьте примечания apt upgrade на предмет CVE-2026-31431), вам следует восстановить нативные криптографические возможности:
chmod +x unpatch-CVE-2026-31431.sh
sudo ./unpatch-CVE-2026-31431.sh
Защита основана на следующей директиве в /etc/modprobe.d/cve-2026-31431-mitigation.conf:
blacklist algif_aead
install algif_aead /bin/true
Команда install перенаправляет попытку ядра загрузить модуль на /bin/true, который возвращает код выхода «успех» без выполнения какого-либо уязвимого кода.