
Доказательство концепции эксплуатации для CVE-2026-31431 (Copy Fail) — локальное повышение привилегий в ядре Linux через повреждение page-cache в algif_aead, с рекомендациями по обнаружению, лабораторной отработке и смягчению последствий.
██████╗ ██████╗ ██████╗ ██╗ ██╗ ███████╗ █████╗ ██╗██╗
██╔════╝██╔═══██╗██╔══██╗╚██╗ ██╔╝ ██╔════╝██╔══██╗██║██║
██║ ██║ ██║██████╔╝ ╚████╔╝ █████╗ ███████║██║██║
██║ ██║ ██║██╔═══╝ ╚██╔╝ ██╔══╝ ██╔══██║██║██║
╚██████╗╚██████╔╝██║ ██║ ██║ ██║ ██║██║███████╗
╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝╚═╝╚══════╝
algif_aead⚠️ ТОЛЬКО ДЛЯ АВТОРИЗОВАННОГО ИСПОЛЬЗОВАНИЯ — Данный репозиторий предназначен строго для пентестеров, исследователей безопасности и защитников, действующих в рамках законного разрешения. Неправомерное использование является уголовным преступлением.
| # | Раздел | Описание |
|---|---|---|
| 1 | Что такое Copy Fail? | Краткое описание уязвимости |
| 2 | Технический анализ | Анализ первопричины |
| 3 | Затронутые системы | Матрица дистрибутивов и ядер |
| 4 | Структура репозитория | Расположение файлов |
| 5 | Настройка лабораторной среды | Безопасное воспроизведение |
| 6 | Использование эксплойта | Рабочий процесс пентеста |
| 7 | Обнаружение | YARA, Sigma, скрипты |
| 8 | Смягчение | Патч и усиление защиты |
| 9 | Отчёт по пентесту | Шаблоны отчётов |
| 10 | Юридические и этические аспекты | Отказ от ответственности |
| 11 | Ссылки | CVE, рекомендации, блоги |
Copy Fail — это уязвимость локального повышения привилегий (LPE), раскрытая 29 апреля 2026 года, затрагивающая практически все основные дистрибутивы Linux, работающие на ядрах, выпущенных с 2017 года.
Непривилегированный пользователь ──► AF_ALG + splice() ──► Запись 4 байт в кэш страниц ──► ROOT
| Свойство | Детали |
|---|---|
| CVE ID | CVE-2026-31431 |
| Псевдоним | Copy Fail |
| CVSS v3.1 | 7.8 (ВЫСОКИЙ) |
| Вектор атаки | Локальный |
| Необходимые привилегии | Низкие (любой непривилегированный пользователь) |
| Взаимодействие с пользователем | Не требуется |
| Обнаружил | Xint Code (Theori) |
| Дата раскрытия | 29 апреля 2026 |
| Размер эксплойта | 732 байта (Python PoC) |
| Статус патча | ✅ Доступен — откат коммита a664bf3d603d |
Уязвимость происходит из ошибочной оптимизации на месте, внедрённой в 2017 году (коммит 72548b093ee3) в модуле algif_aead пользовательского крипто API ядра Linux (AF_ALG).
AF_ALG (пользовательский крипто API)
└── модуль algif_aead
└── шаблон authencesn ◄── УЯЗВИМО
└── оптимизация на месте (2017)
└── req->src == req->dst ◄── страницы из splice() попадают в изменяемый список рассеяния dst
Шаг 1: Открыть сокет AF_ALG AEAD
socket(AF_ALG, SOCK_SEQPACKET, 0)
Шаг 2: Отправить страницы splice(), ссылающиеся на целевой файл
(страницы кэша страниц привилегированного бинарника, например /usr/bin/sudo)
Шаг 3: Запустить черновую запись authencesn
authencesn использует буфер dst как черновик →
записывает 4 контролируемых байта ЗА пределами легитимной области вывода
Шаг 4: Запись в кэше страниц для целевого файла теперь повреждена
(файл на диске не тронут — изменена только копия в памяти)
Шаг 5: Запустить изменённый бинарник → ROOT
Кэш страниц ядра Linux хранит в памяти копии файлов. Когда файл читается, его страницы кэшируются. Системный вызов splice() может напрямую ссылаться на эти кэшированные страницы. Передавая страницы кэша страниц в список рассеяния AF_ALG AEAD, черновая запись authencesn попадает внутрь этих кэшированных страниц, тем самым эффективно пропатчивая копию в памяти любого читаемого файла — включая привилегированные бинарники, такие как sudo, pkexec или passwd.
Исправление в основной ветке откатывает ошибочную оптимизацию 2017 года:
# Исправлено в коммите: a664bf3d603d
git show a664bf3d603d
| Ветка ядра | Затронута? | Исправленная версия |
|---|---|---|
| 4.9.x (LTS) | ✅ Да | 4.9.340+ |
| 5.4.x (LTS) | ✅ Да | 5.4.295+ |
| 5.10.x (LTS) | ✅ Да | 5.10.239+ |
| 5.15.x (LTS) | ✅ Да | 5.15.185+ |
| 6.1.x (LTS) | ✅ Да | 6.1.132+ |
| 6.6.x (LTS) | ✅ Да | 6.6.83+ |
| 6.12.x (LTS) | ✅ Да | 6.12.19+ |
| < 4.9 (до 2017) | ❌ Нет | Н/Д — оптимизация отсутствует |
| Дистрибутив | Затронутые версии | Исправлено? | Рекомендация |
|---|---|---|---|
| Ubuntu | < 26.04 (все выпуски) | ✅ Исправлено | USN |
| Ubuntu 26.04 (Resolute) | ❌ Не затронут | — | — |
| RHEL / CentOS | 7, 8, 9 | ✅ Исправлено | RHSA-2026 |
| Amazon Linux | 2, 2023 | ✅ Исправлено | ALAS |
| SUSE / openSUSE | Все затронуты | ✅ Исправлено | SUSE-SU |
| Debian | Bullseye, Bookworm | ✅ Исправлено | DSA |
| CloudLinux | 8, 9 | ✅ Исправлено | Рекомендация |