
Эксплойт для CVE-2026-31431, уязвимости authencesn в ядре Linux, позволяющей локальное повышение привилегий до root и выход из контейнера через AF_ALG и splice().
В 2017 году в криптографическом модуле ядра Linux authencesn была внедрена оптимизация операций AEAD (аутентифицированного шифрования) на месте (in-place), которая при определённых условиях приводила к тому, что страницы, доступные только для чтения в page cache, могли быть ошибочно помещены в записываемый целевой scatterlist. Используя криптографический API ядра, доступный через сокеты AF_ALG, в сочетании с системным вызовом splice(), атакующий использует указанный логический дефект для 4-байтовой произвольной записи в page cache setuid-бинарных файлов (например, /usr/bin/su), тем самым изменяя логику программы и получая root shell.
Весь процесс эксплуатации представляет собой линейную логику, не требует гонок (race window), не требует специфичных для ядра смещений и не требует предустановки каких-либо специальных инструментов.
Локальное повышение привилегий до root: любая локальная учётная запись обычного пользователя может безусловно повысить привилегии до root.
Побег из контейнера: в средах Kubernetes / контейнеров page cache является общим для хоста, поэтому атакующий внутри контейнера может выйти за пределы контейнера, поставив под угрозу узел хоста и других арендаторов на том же узле.
Компрометация сред CI/CD: в средах CI, выполняющих недоверенный код, таких как GitHub Actions, GitLab Runner, Jenkins Agent, атакующий может получить root-доступ к хосту Runner напрямую через вредоносный PR.
Облачные мультитенантные среды: облачные сервисы, выполняющие пользовательский код, такие как Notebook, Serverless, песочницы Agent, позволяют арендатору повысить привилегии до root на хосте.
Уязвимость сохраняется почти десять лет: проблемный код был внедрён в 2017 году, и с тех пор затронуты все дистрибутивы Linux.
Все версии ядра Linux, собранные с 2017 года до выпуска патча, включая:
Обновитесь до версии ядра, содержащей mainline commit a664bf3d603d; основные дистрибутивы постепенно выпускают исправленные версии:
# Ubuntu / Debian
apt update && apt upgrade linux-image-$(uname -r)
# RHEL / CentOS / Rocky / Alma
dnf update kernel
# Amazon Linux
yum update kernel
# SUSE
zypper update kernel-default
После обновления перезагрузите систему, чтобы новое ядро вступило в силу, и проверьте наличие исправляющего коммита следующей командой:
grep -r "a664bf3d603d" /proc/version 2>/dev/null || uname -r
# Проверьте наличие исправляющего коммита или сверьтесь с номером исправленной версии в официальных объявлениях дистрибутива
Отключение модуля ядра algif_aead блокирует путь эксплуатации уязвимости:
# Постоянное отключение (вступает в силу после перезагрузки)
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
# Немедленная выгрузка (действует для текущего сеанса)
rmmod algif_aead 2>/dev/null || true
Оценка влияния отключения algif_aead:
Не затрагивает: dm-crypt/LUKS, kTLS, IPsec/XFRM, стандартные сборки OpenSSL/GnuTLS/NSS, SSH, шифрование в кольце ключей ядра — эти компоненты напрямую используют криптографический API ядра и не проходят через AF_ALG.
Может затронуть: OpenSSL с явно включённым движком afalg, некоторые встроенные пути разгрузки шифрования, приложения, напрямую привязывающиеся к сокетам aead/skcipher/hash. Проверить, использует ли текущая система процессы с AF_ALG, можно с помощью lsof | grep AF_ALG или ss -xa.
| Дистрибутив | Затронутые версии ядра |
| Ubuntu 24.04 LTS | 6.17.0-1007-aws и ниже |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 и ниже |
| RHEL 14.3 | 6.12.0-124.45.1.el10_1 и ниже |
| SUSE 16 | 6.12.0-160000.9-default и ниже |
| Debian / Arch / Fedora / Rocky / Alma / Oracle | Затронуты соответствующие версии ядра |