PinTheft Linux Flaw Gets Public PoC for Local Root Access


A proof-of-concept exploit is now public for PinTheft, a recently patched Linux local privilege escalation flaw that can let a local attacker gain root access on exposed systems.

The vulnerability sits in the Linux kernel’s Reliable Datagram Sockets zerocopy send path. Researchers at V12 Security said the bug can turn an RDS double-free into a page-cache overwrite through io_uring fixed buffers.

The risk is highest on systems where RDS and RDS_TCP are available, io_uring is enabled, and a local user can run code. Researchers said default exposure appears limited across major distributions, with Arch Linux standing out among the common distributions they tested.

What is PinTheft?

PinTheft is a Linux local privilege escalation exploit discovered by Aaron Esau of the V12 security team. It targets a refcount bug in the RDS zerocopy send path and uses io_uring to make that bug useful for privilege escalation.

The name comes from the exploit’s method. It “steals” FOLL_PIN references until io_uring still holds a stale page pointer that the kernel believes it can reuse.

That stale pointer can then point to the page cache of a SUID-root binary. If the exploit overwrites that cached page with a small payload, running the SUID binary can drop the attacker into a root shell.

PinTheft at a glance

DetailInformation
Vulnerability namePinTheft
TypeLinux local privilege escalation
Main bug classRDS zerocopy double-free and reference count handling issue
Exploit primitivePage-cache overwrite through io_uring fixed buffers
ImpactRoot access from a local unprivileged account on exposed systems
PoC statusPublic proof-of-concept released
CVE statusNo CVE assigned at the time of the latest public reports

How the bug works

RDS supports zerocopy sending, a performance feature that lets the kernel pin user memory pages rather than copying data through a separate buffer.

The bug happens when rds_message_zcopy_from_user() pins pages one by one and a later page faults. The error path drops pages it already pinned, but later cleanup can drop those same pages again because some scatterlist state remains live.

Each failed zerocopy send can remove one reference from the first page. By itself, that sounds like a narrow kernel bookkeeping issue. PinTheft turns it into a root exploit by pairing it with io_uring fixed buffers.

How the PoC turns the bug into root access

The public PoC registers an anonymous page as an io_uring fixed buffer. That gives the page a FOLL_PIN bias of 1,024 references.

The exploit then runs failing RDS zerocopy sends repeatedly until those references are drained. At that point, io_uring still holds a stale pointer, while the kernel can reclaim and reuse the page.

The PoC then tries to reclaim that page as the page cache for a readable SUID-root binary. A fixed-buffer write overwrites the cached binary page in memory with a small ELF payload. When the SUID binary runs, it executes the payload with root privileges.

Exploit requirements

  • CONFIG_RDS must be enabled.
  • CONFIG_RDS_TCP must be enabled.
  • CONFIG_IO_URING must be enabled.
  • io_uring must not be disabled through system policy.
  • The system must allow the RDS TCP transport to load.
  • A readable SUID-root binary must be available.
  • The included PoC payload targets x86_64 systems.

V12 noted that the exploitation method is architecture-independent, but the embedded shell ELF in the released PoC is x86_64. That means the public exploit is more limited than the underlying technique.

Why Arch Linux gets the most attention

The attack surface depends heavily on distribution configuration. The key question is not whether a system runs Linux, but whether it can load the RDS modules and use io_uring in the way the exploit needs.

V12 said the required RDS kernel module was enabled by default only on Arch Linux among the common distributions it tested. Other distributions may ship RDS differently, block module autoloading, or omit the required configuration.

Administrators should still check their own systems instead of relying only on distribution names. Custom kernels, hosting environments, appliances, and older system images can differ from stock distribution defaults.

Why the page-cache overwrite matters

PinTheft does not need to change the SUID binary on disk. The PoC overwrites the binary’s in-memory page-cache copy instead.

This matters for both impact and cleanup. A reboot or cache drop can clear the in-memory overwrite, but an exploited system should still be treated seriously because the attacker may already have gained root access.

V12 warns that testing the exploit on disposable systems can leave common SUID programs such as su, mount, or passwd executing the payload from cache until cleanup happens.

What administrators should do now

  • Install the latest kernel updates from the distribution maintainer.
  • Check whether RDS and RDS_TCP are available and loadable.
  • Disable RDS modules if the system does not need them.
  • Review whether io_uring is required on exposed multi-user systems.
  • Prioritize shared servers, CI runners, hosting systems, and container hosts.
  • Reboot or drop caches after any controlled testing on disposable systems.

Systems that do not use RDS can reduce exposure by unloading and blocking the rds and rds_tcp modules. Administrators should test any mitigation in staging first, especially on production servers with specialized workloads.

Mitigation commands

ActionCommand
Remove active RDS modulessudo rmmod rds_tcp rds
Block module loading on rebootprintf ‘install rds /bin/false\ninstall rds_tcp /bin/false\n’ | sudo tee /etc/modprobe.d/pintheft.conf
Check io_uring policycat /proc/sys/kernel/io_uring_disabled
Check kernel configurationgrep -E ‘CONFIG_(RDS|RDS_TCP|IO_URING)’ /boot/config-$(uname -r)

If a system needs RDS, the safer long-term fix is to apply a patched kernel. Blocking the module can break legitimate workloads that depend on Reliable Datagram Sockets.

Why shared Linux systems face higher risk

PinTheft requires local code execution, so it does not let a remote attacker compromise a machine by itself. The practical concern is privilege escalation after an attacker already has a low-privilege account or code execution foothold.

PinTheft Linux Vulnerability

That makes the flaw more important for shared systems. Multi-user servers, build machines, CI runners, research clusters, and container hosts can all expose local privilege escalation paths if untrusted users can run code.

Attackers often chain bugs like this with phishing, exposed web apps, stolen credentials, or sandbox escapes. Once they reach a low-privilege shell, a working LPE can turn that access into root.

PinTheft joins a busy Linux LPE wave

The PinTheft PoC arrived during a busy period for Linux kernel privilege escalation research and public exploit releases.

Recent disclosures have included flaws such as Copy Fail, DirtyDecrypt, DirtyCBC, Dirty Frag, and Fragnesia. Several of these issues involve complex kernel memory behavior, page-cache manipulation, or subsystem interactions that make patching and detection difficult.

The pattern is clear: administrators should not wait for every issue to receive a CVE before acting. Kernel update discipline, module hardening, and exposure checks remain critical parts of Linux security.

FAQ

What is the PinTheft Linux vulnerability?

PinTheft is a Linux local privilege escalation flaw involving the RDS zerocopy send path. A public PoC uses io_uring fixed buffers to turn the bug into a page-cache overwrite and gain root access on exposed systems.

Does PinTheft have a CVE?

No CVE had been assigned at the time of the latest public reports. Administrators should still treat the issue as serious because a public proof-of-concept exploit is available.

Which Linux systems are most exposed to PinTheft?

Systems are most exposed when RDS and RDS_TCP are available and loadable, io_uring is enabled, and a local user can run code. V12 said Arch Linux was the only common distribution it tested where the required RDS module was enabled by default.

Can PinTheft be exploited remotely?

PinTheft is a local privilege escalation issue. An attacker must already have a way to run code on the target system before using it to gain root access.

How can administrators mitigate PinTheft?

Administrators should install patched kernels, unload and block the rds and rds_tcp modules when RDS is not needed, verify io_uring exposure, and prioritize shared Linux systems where untrusted users can run code.

Readers help support VPNCentral. We may get a commission if you buy through our links. Tooltip Icon

Read our disclosure page to find out how can you help VPNCentral sustain the editorial team Read more

User forum

0 messages