
Скрипт для смягчения последствий без перезагрузки для ошибки ядра Copy Fail (CVE-2026-31431). Отключает уязвимый модуль algif_aead и вытесняет кэш страниц для setuid-бинарников.
Минимальный помощник для смягчения последствий Copy Fail / CVE-2026-31431 без перезагрузки.
Этот скрипт отключает уязвимый путь модуля algif_aead и пытается немедленно выгрузить модуль. Он также выполняет попытку вытеснения страничного кэша для /usr/bin/su.
Это смягчение последствий, а не исправление ядра. Установите пропатченное ядро от вашего вендора, как только оно станет доступно.
Скрипт выполняет смягчение последствий, рекомендованное публичным бюллетенем Copy Fail:
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead 2>/dev/null || true
Это предотвращает повторную загрузку algif_aead через modprobe и выгружает его из работающего ядра, если это возможно.
Затем он запускает небольшой фрагмент Python, который вызывает posix_fadvise() с POSIX_FADV_DONTNEED для первой страницы /usr/bin/su:
os.posix_fadvise(fd, 0, page, os.POSIX_FADV_DONTNEED)
Это попытка вытеснить соответствующую страницу из страничного кэша. Она не заменяет патчинг и не гарантирует очистку каждого возможного целевого setuid-бинарника.
/usr/bin/su?Публичный proof-of-concept Copy Fail по умолчанию нацелен на /usr/bin/su. Поэтому этот скрипт пытается удалить первую страницу /usr/bin/su из страничного кэша после отключения уязвимого пути модуля.
Если в вашем окружении тестировалась или предполагается эксплуатация другого setuid-бинарника, просмотрите и адаптируйте скрипт соответствующим образом.
Сначала просмотрите скрипт.
sudo ./mitigate-copy-fail.sh
Проверьте, что модуль не загружен:
lsmod | grep '^algif_aead' || echo "algif_aead is not loaded"
Проверьте, что правило modprobe существует:
cat /etc/modprobe.d/disable-algif.conf
Ожидаемый вывод:
install algif_aead /bin/false
Попробуйте загрузить модуль вручную:
sudo modprobe algif_aead
Он должен завершиться ошибкой или отказаться загружаться.
Откатывайте изменения только после установки исправленного ядра или после принятия риска.
sudo rm -f /etc/modprobe.d/disable-algif.conf
sudo modprobe algif_aead
Этот скрипт не:
Для недоверенных рабочих нагрузок, таких как контейнеры, песочницы, CI-раннеры и многопользовательские хосты, рассмотрите дополнительное усиление защиты, например блокировку создания сокетов AF_ALG с помощью seccomp.