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

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

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

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

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

Категории

Все категории
Loading categories
copy-fail-CVE-2026-31431 — Локальный эксплойт для повышения привилегий для CVE-2026-31431, перезапись page-cache в Linux kernel AF_ALG + splice. Включает PoC, скрипт обнаружения BPFtrace и тестовую среду QEMU для авторизованных исследований в области безопасности. | Kitploit
Инструменты/GitHubGitHub/astounds/copy-fail-cve-2026-31431
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHub

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
astounds/copy-fail-cve-2026-31431

copy-fail-CVE-2026-31431

Локальный эксплойт для повышения привилегий для CVE-2026-31431, перезапись page-cache в Linux kernel AF_ALG + splice. Включает PoC, скрипт обнаружения BPFtrace и тестовую среду QEMU для авторизованных исследований в области безопасности.

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

CVE-2026-31431 — Copy Fail

Локальное повышение привилегий в ядре Linux через AF_ALG + перезапись page-cache через splice

CVE CVSS License

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

Технический разбор


Содержание

  • Описание
  • Детали уязвимости
  • Структура репозитория
  • Быстрый старт
  • Обнаружение
  • Требования
  • Меры по смягчению
  • Тестовая среда (необязательно)
  • Ссылки
  • Лицензия

Описание

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

Эксплойт перезаписывает бинарник su в page-cache без изменения inode на диске, в обход механизмов целостности, которые полагаются исключительно на метаданные файла или контрольные суммы на уровне блоков.


Детали уязвимости

ПолеЗначение
CVE IDCVE-2026-31431
ТипЛокальное повышение привилегий (LPE)
Оценка CVSS v3.17.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (источник: kernel.org)
Подсистемы ядраcrypto/af_alg.c, mm/splice.c
Вектор атакиЛокальный — требуется учётная запись непривилегированного пользователя
Корневая причинаalgif_aead принимает sendfile() через AEAD-сокет без обеспечения семантики copy-on-write для отображаемой страницы page-cache до завершения передачи через splice()

Затронутые окружения

ДистрибутивВерсия ядраАрхитектура
Ubuntu 24.04 LTS6.17.0-1007-awsx86_64
Amazon Linux 20236.18.8-9.213.amzn2023x86_64
RHEL 10.16.12.0-124.45.1.el10_1x86_64
SUSE 166.12.0-160000.9-defaultx86_64
Raspberry Pi OS (Pi 5)6.12.75+rpt-rpi-2712aarch64

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

.
├── exploit.py    # PoC — перезапись page-cache и повышение привилегий
├── detect.bt     # BPFtrace-скрипт для обнаружения в реальном времени
├── run-vm.sh     # Автоматизация тестовой среды QEMU (необязательно)
├── PAYLOAD.md    # Анализ кодирования полезной нагрузки (hex → zlib → ELF → shellcode)
└── LICENSE

Быстрый старт

Запустите exploit.py от имени непривилегированного локального пользователя на любой уязвимой системе — sudo не требуется:

python3 exploit.py

Скрипт выполняет следующие шаги:

  1. Проверяет поддержку ядром AF_ALG (algif_aead) и находит бинарник su.
  2. Выбирает и распаковывает полезную нагрузку, соответствующую архитектуре.
  3. Открывает бинарник su как сырой файловый дескриптор и перезаписывает его страницы page-cache через AF_ALG + sendfile.
  4. Проверяет повышение привилегий. В случае успеха открывает root-шелл.

Поддерживаемые архитектуры:

АрхитектураВарианты
x86_64—
aarch64—
riscv64—
ppc64le—
armarmv5l, armv6l, armv7l
x86 32-biti386, i486, i586, i686
MIPS 64-bitmips64, mips64el
LoongArchloong64, loongarch64
s390x—

Обнаружение

Отслеживайте попытки эксплуатации в реальном времени с помощью detect.bt. Требуется root:

sudo bpftrace detect.bt
# или
doas bpftrace detect.bt

Скрипт отслеживает три индикатора для каждого PID с помощью битовой маски в @suspect[pid]:

БитСистемный вызовИндикатор
0x1socket(AF_ALG, SOCK_SEQPACKET)Создан сокет AF_ALG
0x2setsockopt(SOL_ALG, ...)Настроена криптооперация
0x4sendmsg(MSG_MORE) + splice()Попытка перезаписи page-cache

Срабатывание сигнала происходит, когда все три бита установлены (@suspect[pid] == 0x7) для одного и того же PID.


Требования

exploit.py

  • Python 3.6+
  • Ядро Linux с загруженным модулем AF_ALG/algif_aead
  • Локальная учётная запись непривилегированного пользователя (root не требуется)

detect.bt

  • bpftrace ≥ 0.12
  • Права root (требуются для BPF-трассировки)
# Ubuntu/Debian
sudo apt install bpftrace

# RHEL/CentOS/Fedora
sudo dnf install bpftrace

# Amazon Linux
sudo yum install bpftrace

# SUSE
sudo zypper install bpftrace

# Alpine
sudo apk add bpftrace

Меры по смягчению

1. Патч (предпочтительно)

Обновите пакет ядра вашего дистрибутива до версии, включающей коммит из основной ветки a664bf3d603d, который отменяет оптимизацию algif_aead на месте 2017 года, чтобы страницы page-cache больше не могли попадать в записываемый scatterlist назначения. Большинство крупных дистрибутивов уже распространяют это исправление.

2. Отключение algif_aead (в ожидании патча)

blacklist можно обойти явным modprobe algif_aead. Директива install .../bin/false полностью переопределяет команду установки, заставляя каждую попытку загрузки завершаться неудачей:

echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead 2>/dev/null || true

Что это ломает — почти ничего

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