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

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

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

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

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

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/astounds/copy-fail-cve-2026-31431
Повышение привилегийФреймворки для эксплойтовАнализ уязвимостейЭксплуатацияОбучение и ОбразованиеЭксплуатация Бинарных ФайловЛаборатории и Практика
GitHubastounds/copy-fail-cve-2026-31431

Популярное

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

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

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

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

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

copy-fail-CVE-2026-31431

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

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

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 на диске, в обход механизмов целостности, которые полагаются исключительно на метаданные файла или контрольные суммы на уровне блоков.


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

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


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

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

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

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

root@kitploit:~
python3 exploit.py

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

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

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


Обнаружение

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

root@kitploit:~
sudo bpftrace detect.bt
# или
doas bpftrace detect.bt

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

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


Требования

exploit.py

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

detect.bt

  • bpftrace ≥ 0.12
  • Права root (требуются для BPF-трассировки)
root@kitploit:~
# 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 полностью переопределяет команду установки, заставляя каждую попытку загрузки завершаться неудачей:

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

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

Подсистемы в строке «Нет» используют криптографический API ядра напрямую — они никогда не проходят через AF_ALG. Производительность откатывается к обычным пользовательским криптобиблиотекам, которые и так использует почти всё остальное.

Чтобы проверить, использует ли что-либо на вашей системе AF_ALG активно перед его отключением:

root@kitploit:~
lsof | grep AF_ALG
ss -xa | grep alg

3. Блокировка через seccomp (контейнеры, песочницы, CI)

Запретите создание socket(AF_ALG, ...) для недоверенных рабочих нагрузок независимо от состояния патча. Добавьте AF_ALG (семейство 38) в ваш seccomp deny-list или используйте политику AppArmor/SELinux, ограничивающую вызовы socket для непривилегированных процессов.

4. Мониторинг с помощью detect.bt

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


Тестовая среда (необязательно)

run-vm.sh автоматизирует создание QEMU-виртуальной машины Ubuntu 24.04 для тестирования в контролируемой среде. exploit.py и detect.bt работают напрямую на любом уязвимом хосте — QEMU не требуется.

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

ЗависимостьПримечания
qemu-system-x86_64 + KVMСм. команды установки ниже
wget или curlЗагрузка cloud-образа
cloud-image-utilsГенерация seed-образа (Docker может заменить на не-Debian хостах)

Установка QEMU

root@kitploit:~
# Ubuntu/Debian
sudo apt install qemu-system-x86 cloud-image-utils wget

# Fedora/RHEL
sudo dnf install qemu-system-x86 wget

# Arch
sudo pacman -Sy qemu

# Alpine
sudo apk add qemu-system-x86 qemu-ui-gtk wget

Запуск

root@kitploit:~
sh run-vm.sh

Интерактивное меню

root@kitploit:~
1. Запустить/Создать ВМ
2. Подключиться по SSH
3. Загрузить файлы в ВМ  (exploit.py, detect.bt)
4. Запустить эксплойт внутри ВМ
5. Запустить detect.bt внутри ВМ
6. Проверить статус ВМ
7. Остановить ВМ
8. Очистить файлы ВМ
0. Выход

Учётные данные ВМ

ПолеЗначение
Пользовательubuntu
Парольcve123
SSH-порт2222

Ссылки

  • Технический разбор — xint.io
  • Анализ кодирования полезной нагрузки — разбор hex → zlib → ELF → shellcode
  • crypto/af_alg.c — исходный код ядра
  • mm/splice.c — исходный код ядра

Лицензия

Этот проект распространяется под лицензией GNU General Public License v3.0 или более поздней версии. Полный текст см. в LICENSE.

Отказ от ответственности: Этот репозиторий предоставлен только для авторизованных исследований безопасности, пентеста и образовательных целей. Авторы не несут ответственности за любое неправомерное использование или ущерб, причинённый этим программным обеспечением.

Скачать инструмент
ПолеЗначение
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
АрхитектураВарианты
x86_64—
aarch64—
riscv64—
ppc64le—
armarmv5l, armv6l, armv7l
x86 32-biti386, i486, i586, i686
MIPS 64-bitmips64, mips64el
LoongArchloong64, loongarch64
s390x—
БитСистемный вызовИндикатор
0x1socket(AF_ALG, SOCK_SEQPACKET)Создан сокет AF_ALG
0x2setsockopt(SOL_ALG, ...)Настроена криптооперация
0x4sendmsg(MSG_MORE) + splice()Попытка перезаписи page-cache
Затронуто?Подсистема/сценарий использования
Нетdm-crypt/LUKS, kTLS, IPsec/XFRM, TLS внутри ядра
НетСтандартные сборки OpenSSL, GnuTLS, NSS
НетSSH, криптография keyring ядра
ВозможноOpenSSL с явно включённым движком afalg
ВозможноПути аппаратного ускорения криптографии или приложения, напрямую привязывающие сокеты aead/skcipher/hash