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

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

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

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

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

Категории

Все категории
Loading categories
CopyFail-Exploits-CVE-2026-31431 — Многоязычные учебные реализации эксплойтов для CVE-2026-31431, локального повышения привилегий в ядре Linux через модуль algif_aead, с безопасным детектором и руководством по использованию в CTF. | Kitploit
Инструменты/GitHubGitHub/shotafry/copyfail-exploits-cve-2026-31431
Повышение привилегийФреймворки для эксплойтовЭксплуатацияCTFОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubshotafry/copyfail-exploits-cve-2026-31431

Популярное

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

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

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

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

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

CopyFail-Exploits-CVE-2026-31431

Многоязычные учебные реализации эксплойтов для CVE-2026-31431, локального повышения привилегий в ядре Linux через модуль algif_aead, с безопасным детектором и руководством по использованию в CTF.

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

CVE-2026-31431 — Copy Fail

Образовательный репозиторий с реализациями эксплойта Copy Fail на нескольких языках.
Создан и поддерживается @shotafry — потому что читать CVE недостаточно. Нужно его воспроизвести.


📖 Read this in English


Содержание

  • Что такое Copy Fail?
  • Кто его обнаружил?
  • Серьёзность и CVSS
  • Как это работает?
  • Требования
  • Доступные реализации
  • Использование по языкам
  • Проверка системы
  • Что именно происходит при запуске?
  • Использование в CTF и тестовых средах
  • Обфускация — тихие варианты
  • Смягчение и патч
  • Структура репозитория
  • Правовое уведомление

Что такое Copy Fail?

Copy Fail — это уязвимость локального повышения привилегий (LPE) в ядре Linux, классифицированная как CVE-2026-31431. Она затрагивает криптографическую подсистему ядра, а именно модуль algif_aead, который управляет операциями аутентифицированного шифрования (AEAD) через сокеты AF_ALG.

Ошибка была внесена в 2017 году в ходе оптимизации модуля authencesn и оставалась незамеченной почти 9 лет, присутствуя практически во всех современных дистрибутивах Linux.

Что делает Copy Fail особенным по сравнению с другими историческими LPE:

ХарактеристикаCopy FailТипичный LPE
Требуется гонка (race condition)❌ Нет✅ Да
Требуется конкретное смещение в ядре❌ Нет✅ Да
Работает во всех дистрибутивах✅ Да❌ Обычно нет
Надёжность100% детерминированноПеременная
Изменяет диск❌ Нет (только RAM)Зависит

Кто его обнаружил?

Уязвимость была обнаружена Taeyang Lee из исследовательской команды Theori. Полная цепочка эксплойта была разработана командой Xint Code Research, которая задокументировала процесс, используя анализ с помощью ИИ подсистемы crypto/ ядра Linux.

Публичное раскрытие включает рабочий PoC, полный технический анализ и документацию на copy.fail.


Серьёзность и CVSS

CVE:       CVE-2026-31431
CVSS:      7.8 — ВЫСОКАЯ
Вектор:    Локальный
Воздействие: Полное повышение привилегий (root)
Дистрибутивы: Все дистрибутивы Linux с ядром >= 2017 без патча

CVSS равен 7.8 и не достигает критического (9+) только потому, что требует предварительного локального доступа — атакующий уже должен иметь сессию в системе. В облачных средах и с контейнерами Docker это требование выполнить значительно проще, чем кажется.


Как это работает?

Page cache ядра

Ядро Linux хранит в RAM файлы, которые недавно читались. Это называется page cache. Когда процесс читает /etc/passwd, ядро не обращается к диску — оно отдаёт копию из RAM. Это быстрее, но создаёт поверхность атаки: если можно изменить эту копию в RAM, не трогая диск, система увидит поддельные данные.

Баг в algif_aead

Модуль algif_aead позволяет выполнять операции AEAD из пользовательского пространства через сокеты AF_ALG. Баг находится в оптимизации, внесённой в 2017 году: когда splice() используется для передачи страниц файла в сокет, эти страницы page cache попадают в список рассеивания назначения (записываемый) криптографической операции.

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

Поток эксплуатации

Пользователь без привилегий
        │
        ▼
  Открывает сокет AF_ALG (authencesn)
        │
        ▼
  sendmsg() — параметры AEAD с нашими 4 байтами в seqno_lo
        │
        ▼
  splice() — файл → pipe → сокет op
  [БАГ] Page cache файла попадает в scatterlist назначения
        │
        ▼
  recv() запускает операцию AEAD
  Аутентификация не проходит (EBADMSG), но scratch-write уже произошёл
        │
        ▼
  /etc/passwd (page cache) теперь показывает: пользователь → UID 0
        │
        ▼
  su <пользователь> → PAM проверяет реальный пароль → setuid(0) → ROOT

Простая аналогия

Представь, что у ядра есть книга регистрации замка (/etc/passwd). Copy Fail — это как обнаружить, что если открыть магическую мастерскую замка в очень конкретном порядке, книга регистрации случайно остаётся на твоём рабочем столе — и ты можешь изменить своё звание с «рядового солдата» на «короля» одной ручкой. Архивариус (PAM) проверяет твой пароль, но не проверяет оригинальную книгу, только копию, которая перед ним. Ты король.

Что именно происходит при запуске?

passwd меняется в реальном времени

Доступные реализации


Требования

К целевой системе

  • Ядро Linux >= ~2017 без патча CVE-2026-31431
  • Модуль algif_aead доступен и загружаем
  • UID из 4 цифр (1000–9999) — стандарт во всех дистрибутивах

Быстрая проверка

Это можно пропустить и сразу попробовать один из эксплойтов, но это также допустимо, если мы не хотим рисковать загрузкой или созданием их и хотим просто посмотреть, работает ли это, но у эксплойтов есть своя функция для проверки, уязвима ли система.

# Посмотреть версию ядра
uname -a

# Проверить, доступен ли алгоритм
grep -i authencesn /proc/crypto

# Проверить, загружен ли модуль
lsmod | grep alg

Если grep -i authencesn /proc/crypto возвращает authencesn(hmac(sha256),cbc(aes)), система уязвима.

По языкам

ЯзыкТребование на целиПредварительная компиляция
CНет (статический бинарник)gcc на машине компиляции
PythonPython 3.10+Нет
RustНет (статический бинарник)rustc на машине компиляции
GoНет (статический бинарник)go на машине компиляции
RubyRuby + gem fiddle (включён по умолчанию)Нет
PerlPerl 5 (включён практически во всех Linux)Нет

Доступные реализации

Этот репозиторий содержит эксплойт, реализованный на 6 языках, все функционально эквивалентны, с образовательными комментариями на испанском.

copy_fail_exploit.c      → C         — статический бинарник, ноль зависимостей
copy_fail_exploit.py     → Python    — более читаемый, идеален для изучения
copy_fail_exploit.rs     → Rust      — ирония: «безопасный» язык эксплуатирует ядро
copy_fail_exploit.go     → Go        — статический бинарник, очень портативный
copy_fail_exploit.rb     → Ruby      — повсеместно на серверах Rails
copy_fail_exploit.pl     → Perl      — самый тихий, есть в каждом Linux
test_cve_2026_31431.py   → Детектор  — проверяет уязвимость без эксплуатации

Использование по языкам

Детектор (всегда сначала это)

python3 test_cve_2026_31431.py
  • Exit 0 → НЕ уязвима
  • Exit 2 → УЯЗВИМА
  • Exit 1 → Ошибка в тесте

C

# Компиляция
gcc copy_fail_exploit.c -o copy_fail_c

# Dry-run (очищает при выходе, не оставляет следов)
./copy_fail_c

# Полный эксплойт
./copy_fail_c --shell

Python

# Dry-run
python3 copy_fail_exploit.py

# Полный эксплойт
python3 copy_fail_exploit.py --shell

Скачать инструмент