
Документация и анализ локальной уязвимости повышения привилегий в шаблоне authencesn ядра Linux через AF_ALG и splice(), включая затронутые версии, обнаружение и меры по смягчению последствий.
Локальное повышение привилегий в криптографическом шаблоне
authencesnядра Linux черезAF_ALG+splice().
Раскрыто 29 апреля 2026 года компанией Theori (Xint Code).
| Поле | Детали |
|---|---|
| CVE | CVE-2026-31431 |
| Псевдоним | Copy Fail |
| CVSS | 7.8 HIGH |
| Тип | Локальное повышение привилегий (LPE) |
| Появилась | Ядро Linux 4.14 (2017, коммит 72548b093ee3) |
| Исправлена | Коммит в mainline a664bf3d603d |
| Требуется | Локальный доступ к оболочке без привилегий |
| Удалённый вектор | Нет — только локально |
Логическая ошибка в обёртке AEAD authencesn ядра позволяет непривилегированному локальному пользователю выполнить детерминированную, контролируемую запись 4 байт в page cache любого читаемого файла в системе — включая setuid-бинарники, такие как /usr/bin/su.
Корневая причина — оптимизация обработки на месте 2017 года, которая помещала страницы page cache в записываемый scatterlist. Алгоритм authencesn записывает 4 байта служебных данных за пределами своей целевой выходной области во время перестановки Extended Sequence Number. Из-за структуры scatterlist, введённой оптимизацией, эти 4 байта попадают в page cache файла, переданного через splice(), — полностью обходя права доступа к файлу.
Никаких гонок. Никаких повторов. Никакого риска сбоя. Детерминированно на всех протестированных дистрибутивах.
Уязвимы: ядро Linux с 4.14 по 6.18.21 и 6.19.x до 6.19.12.
Все основные дистрибутивы, поставляющие ядра в этом диапазоне, затронуты, включая:
| Дистрибутив | Протестированная версия |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Не затронуты: Ubuntu 26.04 (Resolute) и новее.
Обновите ядро, содержащее коммит mainline a664bf3d603d, который откатывает оптимизацию обработки на месте 2017 года.
# Ubuntu / Debian
sudo apt update && sudo apt upgrade -y && sudo reboot
# RHEL / AlmaLinux / Amazon Linux
sudo dnf clean metadata && sudo dnf upgrade && sudo reboot
# SUSE
sudo zypper refresh && sudo zypper update kernel-default && sudo reboot
algif_aead (временно)Если немедленное патчирование невозможно, отключите уязвимый модуль, чтобы закрыть поверхность атаки.
Примечание для систем семейства RHEL:
algif_aeadвстроен в ядро на RHEL/AlmaLinux/CentOS (CONFIG_CRYPTO_USER_API_AEAD=y). Обходной путь черезmodprobe.dне работает на этих системах. Вместо этого используйте методinitcall_blacklist.
Debian/Ubuntu (модуль загружаемый):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true
Семейство RHEL (встроено в ядро — требуется перезагрузка):
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"
sudo reboot
Подтвердите после перезагрузки:
grep initcall_blacklist /proc/cmdline
Для недоверенных рабочих нагрузок — контейнеров, CI-раннеров, песочниц — заблокируйте создание сокетов AF_ALG через политику seccomp независимо от состояния патча. Это ограничивает поверхность атаки даже на уязвимых ядрах.
Проверьте, загружен ли algif_aead или используется ли он в данный момент:
# Проверка, загружен ли модуль
lsmod | grep algif_aead
# Проверка, есть ли у какого-либо процесса открытый сокет AF_ALG
lsof | grep AF_ALG
ss -xa | grep alg
Сигнатуры обнаружения в реальном времени доступны в Sysdig Secure (правило: AF_ALG Page Cache Poisoning Leading to Privilege Escalation).
xD The Watcher — Red Teamer, этичный хакер и исследователь безопасности ИИ
GitHub: @xd20111
Блог: yourhacker
Этот репозиторий документирует уязвимость в исследовательских и защитных целях. За авторитетным техническим отчётом и официальным PoC обращайтесь к раскрытию Theori по ссылке выше.
Если ваша модель угроз включает мультитенантность с общим ядром — контейнеры на общем хосте, CI-раннеры, фермы сборки — граница изоляции теперь значительно слабее до установки патча. Правильный ответ — изоляция на уровне оборудования или виртуальной машины, а не границы пространств имён.
| Dirty Cow (2016) | Dirty Pipe (2022) | Copy Fail (2026) |
|---|
| Требуется гонка | Да | Частично | Нет |
| Зависит от версии | Да | Да | Нет |
| Надёжность | Нестабильная | Умеренная | Детерминированная |
| Покрытие дистрибутивов | Ограниченное | Ограниченное | Все с 2017 года |
| Компонент | Влияние |
|---|
| dm-crypt / LUKS | ✅ Не затронут |
| SSH | ✅ Не затронут |
| IPsec / XFRM | ✅ Не затронут |
| kTLS / TLS в ядре | ✅ Не затронут |
| OpenSSL / GnuTLS / NSS (сборки по умолчанию) | ✅ Не затронуты |
OpenSSL с явно включённым движком afalg | ⚠️ Откат к криптографии в пользовательском пространстве |
Приложения, напрямую привязывающие сокеты AF_ALG aead/skcipher/hash | ⚠️ Перестанут работать — проверьте с помощью lsof | grep AF_ALG |
| Ресурс | Ссылка |
|---|
| Запись NVD | https://nvd.nist.gov/vuln/detail/CVE-2026-31431 |
| Полный отчёт Theori | https://xint.io/blog/copy-fail-linux-distributions |
| Сайт Copy Fail | https://copy.fail |
| Рекомендация CERT-EU | https://cert.europa.eu/publications/security-advisories/2026-005/ |
| Анализ Sysdig | https://sysdig.com/blog/cve-2026-31431-copy-fail-linux-kernel-flaw-lets-local-users-gain-root-in-seconds |
| Покрытие The Register | https://theregister.com/2026/04/30/linux_cryptographic_code_flaw/ |
| Примечания к патчу AlmaLinux | https://almalinux.org/blog/2026-05-01-cve-2026-31431-copy-fail/ |
| CloudLinux KernelCare | https://blog.cloudlinux.com/cve-2026-31431-copy-fail-kernel-update |
| Дата | Событие |
|---|
| 2017 | Регрессия внедрена через коммит 72548b093ee3 |
| Начало апреля 2026 | Исправление в upstream объединено (коммит a664bf3d603d) |
| 29 апреля 2026 | Публичное раскрытие Theori / Xint Code |
| 30 апреля 2026 | Начало поставки патчей дистрибутивами |
| 1 мая 2026 | Патченые ядра AlmaLinux в производственных репозиториях |