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

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

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

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

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

Категории

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

CVE-2026-31431

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

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

Популярное

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

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

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

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

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

Copy Fail - CVE-2026-31431

Этот репозиторий содержит небольшой PoC для локального повышения привилегий в Linux для CVE-2026-31431, также известной как "Copy Fail".

Эксплойт нацелен на путь algif_aead в пользовательском крипто-API AF_ALG ядра Linux. Он использует AF_ALG вместе с splice() для принуждения ядра к записи в page cache файла /usr/bin/su блоками по 4 байта, после чего выполняет su после изменения page cache.

Обзор исходного кода

PoC в copy_fail_exp.py делает четыре вещи:

  1. Открывает сокет AF_ALG для aead с преобразованием authencesn(hmac(sha256),cbc(aes)).
  2. Настраивает запрос с теми же значениями setsockopt(), которые использовались в оригинальной концепции.
  3. Использует два вызова splice() для перемещения данных из целевого файла в путь запроса AF_ALG, который и является уязвимым путём ядра.
  4. Распаковывает встроенную полезную нагрузку размером 160 байт и записывает её в целевой файл блоками по 4 байта. Полезная нагрузка представляет собой ELF-заглушку, включающую /bin/sh.

Блоб zlib — это не случайные данные. Это компактная полезная нагрузка, предназначенная для замены начала /usr/bin/su в page cache, чтобы следующее выполнение su запускало root-оболочку.

Затронутые версии

Уязвимый код был внедрён в изменениях algif_aead эпохи ядра Linux 4.14 и оставался до исправления в основной ветке, которое отменяет оптимизацию in-place.

Широкий охват

  • Ядра Linux, собранные с 2017 года, которые включают уязвимый путь in-place algif_aead.
  • Большинство массовых дистрибутивов, поставлявших ядра в этом окне и ещё не применивших бэкпорт исправления.
  • Системы, где включён крипто-API AF_ALG, что является значением по умолчанию в большинстве универсальных дистрибутивов Linux.

Протестировано / публично подтверждено

ДистрибутивЯдро
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

Исправленные точки в основной ветке

  • 6.18.22
  • 6.19.12
  • 7.0

Нисходящие ветки LTS безопасны только после того, как бэкпорт от вендора попадёт в пакет ядра, который вы фактически запускаете.

Воспроизведение

Используйте лабораторную ВМ или хост-контейнер, которым вы владеете. Не запускайте это на производственных системах.

  1. Загрузите систему с уязвимым ядром.
  2. Убедитесь, что /usr/bin/su существует и имеет setuid-root.
  3. Запустите PoC:
root@kitploit:~
python3 copy_fail_exp.py
  1. Если эксплойт сработает, скрипт пропатчит /usr/bin/su, а затем вызовет su. Вы должны оказаться в root-оболочке или увидеть root-приглашение, в зависимости от окружения.

Запуск

Скрипт не имеет дополнительных зависимостей, кроме стандартной библиотеки Python 3.

root@kitploit:~
python3 copy_fail_exp.py

Если вы хотите сначала проверить целевой файл, скрипт по умолчанию использует /usr/bin/su.

Применение исправления

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

  • Коммит исправления в основной ветке: a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5
  • Исправление в основном отменяет более раннее изменение in-place 72548b093ee3.

Рекомендуемый рабочий процесс для дерева нисходящего ядра:

root@kitploit:~
git cherry-pick a664bf3d603dc3bdcf9ae47cc21e0daec706d7a5
make olddefconfig
make -j"$(nproc)"
make modules_install
make install
reboot

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

Временное смягчение

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

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

Это смягчение, а не исправление.

Примечания

  • PoC намеренно небольшой и детерминированный.
  • Эксплойт работает только локально, но он оказывает сильное влияние на общие хосты, CI-раннеры, узлы Kubernetes и контейнерные платформы, поскольку page cache хоста является общим.
  • Ошибка ядра — это логическая ошибка, а не состояние гонки, поэтому путь эксплойта надёжен, если уязвимый код присутствует.
Скачать инструмент