Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
copy-fail-cve-2026-31431 — Go-порт PoC для Copy Fail для CVE-2026-31431, уязвимости в authencesn ядра Linux, позволяющей запись 4 байт в page cache через AF_ALG и splice. Включает конвейер сборки для нескольких архитектур и подробную техническую документацию. | Kitploit
Инструменты/GitHubGitHub/erdemozgen/copy-fail-cve-2026-31431
Фреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных Файлов
GitHuberdemozgen/copy-fail-cve-2026-31431

copy-fail-cve-2026-31431

Go-порт PoC для Copy Fail для CVE-2026-31431, уязвимости в authencesn ядра Linux, позволяющей запись 4 байт в page cache через AF_ALG и splice. Включает конвейер сборки для нескольких архитектур и подробную техническую документацию.

Репозиторий
Сайт
83 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Copy Fail - CVE-2026-31431

Этот репозиторий содержит Go-порт публичного PoC для Copy Fail и воспроизводимый конвейер сборки для многоплатформенных Linux-бинарников.

Copy Fail (CVE-2026-31431) — это логическая ошибка в ядре Linux в authencesn, которая позволяет выполнять детерминированную запись 4 байт в данные page cache, доступ к которым осуществляется через AF_ALG + splice().

Ответственное использование

Используйте этот проект только в средах, где у вас есть явное разрешение на тестирование. Не запускайте этот PoC против систем, которыми вы не владеете или на проверку которых у вас нет письменного разрешения.

Быстрый тест (без сборки)

Если вы хотите протестировать немедленно, не собирая из исходников, скачайте релизный бинарник и запустите его:

root@kitploit:~
wget https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases/download/v1.0.1/copy-fail-cve-2026-31431_linux_amd64
chmod +x copy-fail-cve-2026-31431_linux_amd64
./copy-fail-cve-2026-31431_linux_amd64

Для других архитектур скачайте соответствующий артефакт со страницы релизов GitHub:

https://github.com/ErdemOzgen/copy-fail-cve-2026-31431/releases

Содержание

  • Быстрый тест (без сборки)
  • Требования к сборке
  • Локальная сборка
  • Использование
  • Устранение неполадок
  • Обзор
  • Почему это важно
  • Корневая причина
  • Путь срабатывания в authencesn
  • Как ошибка стала достижимой
  • Высокоуровневый поток эксплуатации
  • Краткое описание исправления
  • Устранение
  • Хронология раскрытия
  • Как это было найдено
  • Структура репозитория
  • GitHub Actions
  • Протестированные дистрибутивы
  • Ссылки

Требования к сборке

  • Go 1.23+
  • GNU Make

Локальная сборка

Сборка всех Linux-целей:

root@kitploit:~
make clean build-linux

Сборка и генерация контрольных сумм:

root@kitploit:~
make clean checksums

Выходные бинарники в dist/:

  • copy-fail-cve-2026-31431_linux_amd64
  • copy-fail-cve-2026-31431_linux_arm64
  • copy-fail-cve-2026-31431_linux_386
  • copy-fail-cve-2026-31431_linux_armv7
  • SHA256SUMS

Использование

Запуск по умолчанию:

root@kitploit:~
./copy-fail-cve-2026-31431_linux_amd64

Использование пользовательского пути цели:

root@kitploit:~
./copy-fail-cve-2026-31431_linux_amd64 -target /path/to/binary

Отключение выполнения su после запуска:

root@kitploit:~
./copy-fail-cve-2026-31431_linux_amd64 -spawn-su=false

Вывод метаданных сборки:

root@kitploit:~
./copy-fail-cve-2026-31431_linux_amd64 -version

Устранение неполадок

Если выполнение завершается ошибкой на смещении 0 с сообщением, похожим на:

root@kitploit:~
error: copy chunk at offset 0: splice(pipe->AF_ALG): software caused connection abort

ядро, скорее всего, отклонило уязвимый путь AEAD in-place (например, потому что хост пропатчен для CVE-2026-31431 или algif_aead смягчён/отключён).

Быстрые проверки:

root@kitploit:~
uname -r
grep -E "algif_aead|authencesn" /proc/modules

На исправленных системах ожидается, что этот PoC завершится ошибкой.

Обзор

Согласно публичному раскрытию, уязвимый путь позволяет непривилегированному локальному пользователю влиять на примитив записи 4 байт в содержимое page cache читаемых файлов при определённых условиях.

Важное эксплуатационное свойство заключается в том, что копия page cache в памяти может расходиться с байтами на диске во время выполнения, что может сделать анализ воздействия нетривиальным для команд, полагающихся только на проверки целостности на уровне диска.

Почему это важно

Copy Fail примечателен тем, что был заявлен как:

  • Детерминированный (без требований к гонкам в описанном пути срабатывания).
  • Переносимый между основными дистрибутивами Linux в тестировании.
  • Компактный в реализации, без зависимости от внешнего сборщика полезной нагрузки.
  • Актуальный за пределами одного процесса из-за поведения общего page cache.

Корневая причина

На высоком уровне проблема находится на пересечении трёх механизмов:

  1. Обработка AEAD-запросов AF_ALG.
  2. Перемещение данных, поддерживаемых page cache, через splice().
  3. Поведение временного буфера при дешифровании в authencesn.

В уязвимой конструкции сегменты, поддерживаемые page cache, могут быть связаны в форму запроса, которая позже получает записи во время обработки алгоритма, нарушая ключевое предположение о том, что изменяются только предполагаемые области назначения.

Путь срабатывания в authencesn

В документированном пути authencesn использует операции с временным буфером на стороне назначения вокруг обработки раскладки ESN и выполняет запись по смещению за пределами ожидаемого контракта вывода при дешифровании.

В сочетании с настройкой AEAD in-place и цепочечными ссылками на scatterlist эта запись может попасть в память, поддерживаемую page cache, для выбранных атакующим областей.

Как ошибка стала достижимой

В раскрытии описывается эволюция из нескольких коммитов:

  • Поведение authencesn возникло в более ранней истории интеграции.
  • Поддержка AEAD в AF_ALG добавила достижимость из пользовательского пространства с взаимодействием через splice().
  • Более поздняя оптимизация in-place в algif_aead объединила поток источника и назначения таким образом, что это пересечение стало эксплуатируемым.

Ключевой урок — композиционный риск: по отдельности разумные изменения могут стать небезопасными в комбинации.

Высокоуровневый поток эксплуатации

В публичном описании и PoC описывается следующая последовательность:

  1. Открыть и настроить AEAD-сокет AF_ALG для authencesn(hmac(sha256),cbc(aes)).
  2. Предоставить сформированные метаданные и данные по частям.
  3. Использовать splice() для направления данных файла, поддерживаемых page cache, через путь запроса.
  4. Инициировать обработку дешифрования и повторять контролируемыми шагами по 4 байта.

Go-реализация в этом репозитории повторяет логику этого публичного PoC для исследований и валидации в авторизованных средах.

Краткое описание исправления

Сообщённое исправление возвращает уязвимую операцию AEAD in-place в algif_aead к поведению out-of-place.

Концептуально:

  • До исправления: источник и назначение могли сливаться в одну записываемую цепочку для этого пути.
  • После исправления: источник и назначение остаются раздельными, что предотвращает использование сегментов источника, поддерживаемых page cache, в качестве записываемых областей назначения в этом потоке.

Устранение

  • Пропатчить ядра до версий, содержащих исправление из апстрима.
  • Развернуть обновления пакетов ядра от вендора по всему парку и образам.
  • Рассмотреть временные меры ужесточения (например, ограничения политик на использование AF_ALG, где это операционно возможно).
  • Проверить устранение с помощью проверок во время выполнения, а не только рабочих процессов контрольных сумм на диске.

Хронология раскрытия

На основе публичного описания:

ДатаСобытие
2026-03-23Отчёт отправлен команде безопасности ядра Linux
2026-03-24Первоначальное подтверждение
2026-03-25Обсуждение/рецензирование патча
2026-04-01Исправление закоммичено в mainline
2026-04-22Присвоен CVE-2026-31431
2026-04-29Публичное раскрытие

Как это было найдено

Опубликованное исследование приписывает обнаружение анализу подсистем с участием человека и помощью ИИ, сосредоточенному на достижимых из пользовательского пространства путях криптокода и происхождении scatterlist/страниц при splice().

Структура репозитория

  • main.go: Go-порт PoC.
  • Makefile: детерминированные цели сборки для нескольких архитектур Linux.
  • .github/workflows/build.yml: рабочий процесс CI для сборки и артефактов релизов.

GitHub Actions

Файл рабочего процесса: .github/workflows/build.yml

Триггеры:

  • Pull request'ы
  • Push в main
  • Push тега, соответствующего v*
  • Ручной workflow_dispatch

Поведение:

  1. Собирает все Linux-бинарники с контрольными суммами через make clean checksums.
  2. Загружает артефакты CI, названные с ref + SHA коммита.
  3. Автоматически публикует ассеты релизов для тегов, соответствующих v*.

Предлагаемый поток релиза:

root@kitploit:~
git tag v1.0.0
git push origin v1.0.0

Протестированные дистрибутивы

ДистрибутивВерсия ядра
Ubuntu 24.04 LTS6.17.0-1007-aws
Amazon Linux 20236.18.8-9.213.amzn2023
RHEL 10.16.12.0-124.45.1.el10_1
SUSE 166.12.0-160000.9-default

Ссылки

  • Оригинальная публичная статья: https://xint.io/blog/copy-fail-linux-distributions
  • Запись CVE: CVE-2026-31431
Скачать инструмент