
Эксплойт proof-of-concept для CVE-2026-31431, уязвимости локального повышения привилегий в ядре Linux в модуле algif_aead, позволяющей непривилегированным пользователям получить root через запись 4 байт в page cache.
Этот репозиторий содержит Proof of Concept эксплойт для CVE-2026-31431, уязвимости локального повышения привилегий в ядре Linux с высоким уровнем серьёзности, которая позволяет любому непривилегированному локальному пользователю получить root-доступ. Дефект, получивший название «Copy Fail», находится в модуле algif_aead и может быть объединён с сокетным интерфейсом AF_ALG и системным вызовом splice() для выполнения контролируемой записи 4 байт в page cache любого читаемого файла, например, setuid-бинарника /usr/bin/su.
Уязвимость затрагивает практически все ядра Linux, выпущенные с 2017 года, включая все основные дистрибутивы (Ubuntu, Debian, RHEL, SUSE, Amazon Linux и многие другие). Она была публично раскрыта 29 апреля 2026 года. Исправление уже закоммичено в основную ветку (коммит a664bf3d603d), но многие вендоры всё ещё находятся в процессе выпуска пропатченных ядер. Пока исправленное ядро недоступно, настоятельно рекомендуется отключить модуль ядра algif_aead в качестве временной меры смягчения.
⚠ Важно: Этот материал предоставлен строго в образовательных целях и для авторизованных исследований в области безопасности. Не используйте его против систем, которыми вы не владеете, или без явного разрешения.
Репозиторий содержит две реализации PoC, демонстрирующие эксплуатацию с разных сторон.
copy-fail-poc-short.py — минимальный, близкий к оригиналуСокращённая версия, максимально близкая к изначально опубликованному Python-эксплойту. В ней используются однобуквенные имена переменных и опущены комментарии и константы, что делает её чрезвычайно компактной (732 байта). Этот вариант:
/usr/bin/su и сырой сокет AF_ALG AEAD.os.splice для zero-copy передачи соответствующего 4-байтового блока из целевого файла./usr/bin/su, чтобы получить root-шелл.copy-fail-poc.py — полностью рефакторизованная, всеобъемлющая версияПолностью переписанная, хорошо документированная версия, следующая лучшим практикам Python. Этот вариант:
send_data_over_crypto_socket()) для изоляции основной логики.Эта версия идеально подходит для тех, кто хочет глубоко понять уязвимость или адаптировать код для дальнейших исследований.
На высоком уровне эксплойт:
setuid-бинарник (/usr/bin/su).AF_ALG AEAD и настраивает его с параметрами, необходимыми для срабатывания логического дефекта.splice().algif_aead ядро ошибочно записывает 4 байта контролируемых атакующим данных в page cache целевого бинарника./usr/bin/su фактически пропатчивает бинарник во время выполнения, позволяя непривилегированному пользователю выполнить пропатченную версию, которая возвращает root-шелл.Эксплойт чрезвычайно надёжен (100% успешность) и не требует гонок (race windows) или смещений, зависящих от конкретного ядра.
a664bf3d603d (git.kernel.org)