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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/ikow/cve-2026-31431-live-code-corruption
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияЭксплуатация Бинарных Файлов
GitHubikow/cve-2026-31431-live-code-corruption

CVE-2026-31431-live-code-corruption

CVE-2026-31431 (Copy Fail) — новая эксплуатация: повреждение живого кода через page cache. Перезаписывает код libc exit() через совместное использование страниц MAP_PRIVATE — затрагивает ВСЕ запущенные процессы.

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Репозиторий
13 месяцев назадЕщё не проверено

CVE-2026-31431 — Повреждение живого кода через page cache

Новая техника эксплуатации CVE-2026-31431 («Copy Fail»), которая повреждает исполняемый код запущенных процессов через page cache ядра Linux, обеспечивая повышение привилегий до root.

Что здесь нового

Все опубликованные эксплойты для этой CVE повреждают файлы данных — изменяя /etc/passwd для смены UID root или патча setuid-бинарников на диске. Этот эксплойт делает принципиально иное: он повреждает живой исполняемый код в памяти через механизм page cache ядра.

Опубликованные эксплойтыЭтот эксплойт
ЦельФайлы данных (/etc/passwd, /usr/bin/su)Исполняемый код (секция .text libc)
МеханизмСодержимое файла, разбираемое программамиКодовые страницы, исполняемые напрямую CPU
ОхватОдин файлВСЕ процессы, отображающие libc
Изменение на дискеДа (изменяется содержимое файла)Нет (только page cache в памяти)
ОбнаружениеМониторинг целостности файловНевидимо для проверок файловой системы

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

Понимание page cache

Когда Linux отображает общую библиотеку с MAP_PRIVATE, он не копирует страницы файла немедленно. Вместо этого записи таблицы страниц процесса указывают напрямую на физические страницы page cache. Копирование происходит только при записи (copy-on-write). Для кодовых страниц (.text) процессы никогда не пишут в них — поэтому они остаются общими с page cache навсегда.

root@kitploit:~
Process A (bash)     Process B (su)      Page Cache (libc)
  ┌──────┐            ┌──────┐            ┌──────────┐
  │ PTE  │───────────>│      │            │ exit():  │
  │      │            │ PTE  │───────────>│ endbr64  │
  └──────┘            └──────┘            │ push rax │
    MAP_PRIVATE         MAP_PRIVATE       │ ...      │
    (clean page)        (clean page)      └──────────┘
                                               ↑
                                    Copy Fail пишет сюда!

CVE-2026-31431 даёт нам контролируемую запись 4 байт в page cache любого читаемого файла. Повреждая кодовые страницы libc, мы изменяем инструкции, которые исполняет каждый процесс.

Эксплойт

  1. Записать шеллкод (39 байт) в расположение функции on_exit() в page cache libc — 10 записей по 4 байта
  2. Пропатчить exit() для перехода на наш шеллкод — 1 запись в 4 байта
  3. Триггер: любая программа, вызывающая exit() (практически любая программа), исполняет наш шеллкод

Шеллкод выполняет setuid(0) → setgid(0) → execve("/bin/sh"), давая root-оболочку.

Обзор CVE-2026-31431

  • Ошибка: Логическая ошибка в crypto/algif_aead.c — оптимизация на месте 2017 года (72548b093ee3) позволяет splice() подавать страницы page cache в дешифрование AEAD. Перестановка ESN в алгоритме authencesn записывает 4 служебных байта обратно в исходный scatterlist, повреждая page cache сцеплённого файла.
  • Примитив: Детерминированная запись 4 байт в page cache любого читаемого файла
  • Требования: Отсутствуют — сокеты AF_ALG доступны непривилегированным пользователям
  • Исправление: Копирование во внешний буфер перед криптооперацией (ядро 6.12.85+, 6.15+)

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

root@kitploit:~
# Компиляция
gcc -o exploit exploit.c

# Запуск от непривилегированного пользователя
./exploit /lib/x86_64-linux-gnu/libc-2.31.so

# Триггер — запустите любую программу (она вызовет exit())
su -c id
# uid=0(root) gid=0(root) groups=0(root)

Протестировано на

  • Ядро: 6.12.79 (Ubuntu/Debian, до исправления в 6.12.85)
  • glibc: 2.31-0ubuntu9.7
  • Результат: Полная root-оболочка, подтверждено журналом ядра: process 'id' launched '/bin/sh'

Файлы

  • exploit.c — Полный эксплойт с инъекцией шеллкода
  • copyfail_test.c — Проверка примитива (тест записи 4 байт)

Хронология

  • 2017: Введена оптимизация на месте (72548b093ee3)
  • 2026-04-29: Раскрыта CVE-2026-31431
  • 2026-04-30: Исправление выпущено в ядре 6.12.85
  • 2026-05-06: Разработан этот эксплойт (новая техника повреждения живого кода)

Ссылки

  • NVD — CVE-2026-31431
  • Коммит с исправлением
  • Анализ Copy Fail (Xint)

Отказ от ответственности

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

Связано: Dirty Frag (7 мая 2026)

Dirty Frag раскрыл ещё два варианта записи в page cache в том же классе ошибок:

  • Путь ESP (esp4/esp6): Тот же приёмник authencesn, что и в Copy Fail, достигается через IPsec ESP-in-UDP. Требует пользовательских пространств имён. Запись 4 байт.
  • Путь RxRPC (rxrpc/rxkad): Дешифрование на месте pcbc(fcrypt) на странице, закреплённой через splice. Пространства имён не требуются. Запись 8 байт.

Техника повреждения живого кода из этого репозитория работает с любым из этих примитивов записи в page cache — просто замените функцию write4() на триггер ESP или RxRPC. Техника не зависит от конкретного примитива.

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