
CVE-2026-43494
Local Privilege Escalation in Linux Kernel via RDS + io_uring Page Cache Overwrite
PinTheft is a sophisticated local root exploit for CVE-2026-43494, a reference-counting bug in the Linux kernel's Reliable Datagram Sockets (RDS) subsystem.
By combining a double-free in RDS zero-copy path with io_uring's fixed buffers, the exploit achieves reliable page cache overwrite of SUID-root binaries, resulting in local privilege escalation to root.
A small accounting error in an obscure networking path becomes a reliable LPE when mixed with modern io_uring features.
net/rdsrds_message_zcopy_from_user() → incorrect op_nents handlingput_page() after failed iov_iter_get_pages2()CVSS Score: ~7.8 (High)
io_uring REGISTER_BUFFERS (+1024 FOLL_PIN references)sendmsgmunmap() → clean free to PCP (LIFO)IORING_OP_READ_FIXED via dangling struct page*Bypasses:
CONFIG_INIT_ON_ALLOC_DEFAULT_ONbad_page() checksCONFIG_RDS and CONFIG_RDS_TCP enabledio_uring enabled (kernel.io_uring_disabled=0)Not vulnerable by default on most distros (RDS is rarely enabled).
# 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 — Full exploit source (PinTheft)README.md — This documentbackup/ — Automatic backups of overwritten SUID binaries# 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
Update your kernel as soon as patches are available.
# Check if vulnerable
modprobe -n rds_tcp && echo "RDS: Vulnerable"
cat /proc/sys/kernel/io_uring_disabled
uname -r
Made with ❤️ for the security research community
Stay curious. Stay safe.