关键函数 rds_message_zcopy_from_user() 在发送数据时会 逐页(page)固定用户内存,确保数据在发送期间不会被移动。但如果在后续过程中发生 page fault(页错误),错误处理路径会尝试释放之前固定的页面。
研究人员展示了如何将这个看似普通的内存错误,结合 Linux 的其他机制转变为稳定的提权攻击。
随后攻击者利用 io_uring(Linux 的高性能异步 I/O 框架)中的 fixed buffers 功能。
这些被操控的页面有可能属于 页缓存(page cache)——也就是内核用于缓存文件内容的内存区域。
公开的利用链中,攻击者会针对 SUID‑root 可执行文件 的页缓存进行修改。
漏洞是否容易被利用,取决于系统配置。
目前公开的 PoC 在 Arch Linux 上成功演示,因此该发行版被认为风险较高,原因包括:
理论上,任何 Linux 发行版如果满足以下条件都可能受到影响:
部分报道指出,Ubuntu、Debian、RHEL 和 AlmaLinux 的默认安装通常不会启用 RDS 模块,因此在默认配置下可能风险较低。不过管理员仍然需要检查具体内核配置,而不能完全依赖默认假设。
CloudLinux 官方表示,他们在多个平台版本上测试了公开的 PoC,包括 CL7、CL8、CL9、CL10 以及 Ubuntu 22.04 版本的 CloudLinux,结果显示 这些系统未受影响。
PinTheft 并不是“开箱即用”的远程攻击。通常需要满足多个前提条件:
如果缺少其中关键条件,攻击难度会大幅增加,甚至无法利用。
系统管理员可以通过以下措施显著降低风险。
更新后需要 重启系统 才能让修复生效。
如果你的系统不使用 RDS 网络功能,可以通过以下方式减少攻击面:
rds 模块加入黑名单攻击最终依赖 SUID 可执行文件进行提权,因此建议:
PinTheft 需要本地执行权限,因此以下环境应优先更新:
PinTheft 再次说明:现代 Linux 内核攻击往往并不是单一漏洞,而是 多个子系统协同利用。在这个案例中,攻击链结合了 RDS 网络子系统 与 io_uring 高性能 I/O 框架,把一个内存管理错误转化为可靠的提权路径。
即使是较少使用的内核模块,也可能在复杂系统中成为高价值攻击面。因此,及时更新内核、关闭不必要模块、最小化系统权限,仍然是防御此类漏洞最有效的基本策略。