
CVE-2026-43494
Локальное повышение привилегий в ядре Linux через RDS + io_uring: перезапись кэша страниц
PinTheft — это сложный локальный эксплойт для получения root-доступа, использующий уязвимость CVE-2026-43494, ошибку подсчёта ссылок в подсистеме Reliable Datagram Sockets (RDS) ядра Linux.
Сочетая double-free в пути zero-copy RDS с фиксированными буферами io_uring, эксплойт добивается надёжной перезаписи кэша страниц SUID-root-бинарников, что приводит к локальному повышению привилегий до root.
Небольшая ошибка бухгалтерского учёта в малоизвестном сетевом пути становится надёжным LPE в сочетании с современными возможностями io_uring.
net/rdsrds_message_zcopy_from_user() → неверная обработка op_nentsput_page() после неудачного iov_iter_get_pages2()Оценка CVSS: ~7.8 (Высокая)
io_uring REGISTER_BUFFERS (+1024 ссылок FOLL_PIN)sendmsgmunmap() → чистое освобождение в PCP (LIFO)IORING_OP_READ_FIXED через висячий struct page*Обходы:
CONFIG_INIT_ON_ALLOC_DEFAULT_ONbad_page()CONFIG_RDS и CONFIG_RDS_TCPio_uring включён (kernel.io_uring_disabled=0)По умолчанию не уязвимо в большинстве дистрибутивов (RDS редко включён).
# 1. Clone & Compile
git clone https://github.com/0xBlackash/CVE-2026-43494.git
cd CVE-2026-43494
gcc -O2 -static CVE-2026-43494.c -o pintheft
# 2. Run
sudo ./pintheft
CVE-2026-43494.c — Полный исходный код эксплойта (PinTheft)README.md — Этот документbackup/ — Автоматические резервные копии перезаписанных SUID-бинарников# Disable RDS
echo "install rds /bin/false" | sudo tee /etc/modprobe.d/disable-rds.conf
echo "install rds_tcp /bin/false" | sudo tee -a /etc/modprobe.d/disable-rds.conf
sudo modprobe -r rds_tcp rds
# Disable io_uring (if unused)
echo "kernel.io_uring_disabled=2" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
Обновите ядро, как только станут доступны патчи.
# Check if vulnerable
modprobe -n rds_tcp && echo "RDS: Vulnerable"
cat /proc/sys/kernel/io_uring_disabled
uname -r
Сделано с ❤️ для сообщества исследователей безопасности
Оставайтесь любопытными. Оставайтесь в безопасности.