
Доказательство концепции для CVE-2026-43494 (PinTheft): локальное повышение привилегий в ядре Linux, использующее ошибку подсчёта ссылок zerocopy в RDS с фиксированными буферами io_uring для перезаписи кэша страниц SUID-бинарника.
Концепт-эксплойт — uid=1000(raken) → uid=0(root) после ./sley на WSL2 (6.6.87.2-microsoft-standard-WSL2)
Однофайловый концепт-эксплойт для CVE-2026-43494 (PinTheft): локальное повышение привилегий в ядре Linux, объединяющее ошибку счётчика ссылок RDS zerocopy с фиксированными буферами io_uring для перезаписи страничного кэша SUID-root бинарного файла.
Отказ от ответственности: Этот репозиторий предназначен исключительно для авторизованных исследований в области безопасности, обучения и защитного тестирования. Использование его против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения, незаконно и неэтично. Авторы не несут ответственности за неправомерное использование.
Оригинальное публичное исследование и PoC были опубликованы командой V12 Security (Aaron Esau). SLEY — это независимая компактная переработка со стилизованным терминальным интерфейсом для использования в лабораторных условиях и обучения.
flowchart LR
A[mmap anonymous page] --> B[io_uring: register fixed buffer]
B --> C[Clone buffer table to 2nd ring]
C --> D[1024× failing RDS zerocopy sends]
D --> E[Drain FOLL_PIN bias / steal refs]
E --> F[munmap → page freed]
F --> G[SUID binary page reclaimed in page cache]
G --> H[Stale io_uring ptr writes ELF stub]
H --> I[exec SUID → root shell]su, mount, passwd, …).FOLL_PIN ≈ 1024).execve SUID-бинарника запускает внедрённую заглушку с правами root.CONFIG_RDS=y и CONFIG_RDS_TCP=yCONFIG_IO_URING=y и kernel.io_uring_disabled = 0rds / rds_tcp загружены (или могут быть автоматически загружены непривилегированными пользователями)IORING_REGISTER_CLONE_BUFFERS, используемого публичной цепочкой эксплойтаsudo apt install build-essential linux-libc-dev # Debian/Ubuntu
# or equivalent headers package on your distro
# Patched? (example — adjust for your distro)
uname -r
grep -r CVE-2026-43494 /usr/share/doc/linux* 2>/dev/null || true
# RDS available?
grep CONFIG_RDS /boot/config-$(uname -r) 2>/dev/null
lsmod | grep -E '^rds'
# io_uring enabled?
cat /proc/sys/kernel/io_uring_disabled # expect 0
gcc -O2 -Wall -Wextra -o sley sley.c
Статическая сборка (опционально, для минимальных лабораторных образов):
gcc -O2 -static -o sley sley.c
./sley
Весь вывод статуса идёт в stderr (ANSI 256-цветный интерфейс, прогресс-бар, поэтапное логирование). Убедитесь, что ваш терминал поддерживает UTF-8 и truecolor/256 цветов для интерфейса с псевдографикой.
Пример фаз:
PHASE 1 │ Reconnaissance
PHASE 2 │ Memory & io_uring setup
PHASE 3 │ Pin reference theft (RDS zerocopy)
PHASE 4 │ Page cache overwrite & privesc
При успешно эксплуатируемой конфигурации цепочка завершается и передаёт управление обнаруженному SUID-бинарнику с перезаписанной первой страницей, что даёт root-оболочку, если гонка и состояние ядра складываются удачно.
На пропатченных ядрах, укреплённых хостах или при отсутствии RDS/io_uring PoC завершится ошибкой на раннем этапе (нет SUID-цели, ошибки mmap/io_uring/socket и т. д.).
В бюллетенях безопасности вашего дистрибутива могут быть бэкпортированные исправления — следите за очередью обновлений безопасности ядра от вашего вендора.
.
├── README.md # This file
├── proof-of-concept.jpg # Screenshot: successful LPE (uid 1000 → root)
├── sley.c # Single-file PoC + terminal UI
└── .gitignore
Данное программное обеспечение предоставляется как есть для исследований и обучения. Вы несёте ответственность за соблюдение применимого законодательства и получение письменного разрешения перед тестированием любых систем, которые вам не принадлежат.
MIT — см. файл лицензии репозитория, если он добавлен. Используйте ответственно.
| Элемент | Описание |
|---|
| CVE | CVE-2026-43494 |
| Публичное название | PinTheft |
| Компонент | net/rds — путь zerocopy-отправки (rds_message_zcopy_from_user) |
| Примитив | Двойной put_page() при сбое закрепления страницы → кража ссылок FOLL_PIN |
| Механизм эксплуатации | Фиксированный буфер io_uring + сбойный zerocopy RDS → UAF-запись в страничном кэше |
| Воздействие | Локальный root на уязвимых конфигурациях |
| Исправление в апстриме | e17492979319 |
| Действие | Примечания |
|---|
| Обновить ядро | Примените стабильное исправление, содержащее коммит e17492979319 |
| Отключить RDS | modprobe -r rds_tcp rds (и заблокируйте автозагрузку), если модуль не требуется |
| Ограничить io_uring | kernel.io_uring_disabled=1 или 2 через sysctl |
| Минимум привилегий | Удалите ненужные SUID-бинарники; используйте контейнеры с усиленными профилями |
| Мониторинг | Срабатывание оповещений при всплеске сбойных RDS zerocopy-передач и паттернах регистрации буферов io_uring |