当前位置:首页>Linux>漏洞预警 | Linux内核RDS零拷贝与io_uring组合本地提权漏洞(PinTheft)

漏洞预警 | Linux内核RDS零拷贝与io_uring组合本地提权漏洞(PinTheft)

  • 2026-10-11 08:01:53
漏洞预警 | Linux内核RDS零拷贝与io_uring组合本地提权漏洞(PinTheft)

一、漏洞概述

漏洞类型

本地权限提升(LPE)

漏洞等级

高危

漏洞编号

暂无CVE

_

漏洞评分

-

利用复杂度

中

影响版本

Linux内核(启用RDS、RDS_TCP、io_uring)

利用方式

本地

POC/EXP

已公开

近期,互联网上披露了PinTheft漏洞,该漏洞利用Linux内核RDS(Reliable Datagram Sockets)零拷贝发送路径中的双重释放(double-free)缺陷,结合io_uring固定缓冲区机制,可将引用计数漏洞转化为页缓存覆盖,最终实现本地普通用户到root的权限提升。为避免您的业务受影响,建议您及时开展安全风险自查。
Linux 内核(Linux Kernel)是 Linux 操作系统的核心与“大脑”。它负责管理系统的所有软硬件资源,确保各个程序能够公平、高效地共享 CPU、内存和硬盘等硬件资源。RDS(Reliable Datagram Sockets)是Linux内核提供的一种可靠数据报套接字协议,主要用于集群通信场景。io_uring是Linux内核的高性能异步I/O接口,广泛应用于现代Linux系统的高并发I/O处理。
据描述,该漏洞存在于rds_message_zcopy_from_user()函数中。该函数在RDS零拷贝发送路径中逐个固定(pin)用户页面,若后续页面发生缺页故障(page fault),错误处理路径会释放已固定的页面,而后续的RDS消息清理流程会再次释放这些页面,因为scatterlist条目和条目计数在zcopy通知器被清除后仍然有效。每次失败的零拷贝发送都可以从第一个页面窃取一个引用。攻击者利用io_uring注册固定缓冲区,给页面施加1024个FOLL_PIN引用,然后通过失败的RDS零拷贝发送窃取这些引用,释放页面后将其重新回收为SUID-root二进制文件的页缓存,再利用过时的io_uring固定缓冲区页面指针覆盖页缓存内容,执行被篡改的SUID二进制文件即可获得root权限。

漏洞影响的产品和版本:

  • 启用CONFIG_RDS、CONFIG_RDS_TCP、CONFIG_IO_URING的Linux内核
  • 需要io_uring_disabled=0
  • 需要系统上存在可读的SUID-root二进制文件
  • x86_64架构(PoC中嵌入的ELF载荷为x86_64)
  • 确认Arch Linux默认启用RDS模块,受影响最为直接;其他常见发行版默认未启用RDS模块

二、漏洞复现

三、资产测绘

据daydaymap数据显示互联网存在285,170,610个资产,国内风险资产分布情况如下。
全球分布:
国内分布:

四、解决方案

1、临时缓解措施

  • 如不需要RDS功能,立即卸载并禁用RDS模块:
rmmod rds_tcp rds printf 'install rds /bin/false\ninstall rds_tcp /bin/false\n' > /etc/modprobe.d/pintheft.conf
2、官方修复
  • 关注Linux内核官方补丁,补丁已由Aaron Esau提交至内核邮件列表:
https://lore.kernel.org/netdev/20260505234336.2132721-1-achender@kernel.org/
  • 建议及时更新内核至修复版本
3、自查建议
  • 检查系统是否加载了rds或rds_tcp内核模块:lsmod | grep rds
  • 检查是否启用了CONFIG_RDS、CONFIG_RDS_TCP、CONFIG_IO_URING
  • 检查系统SUID-root二进制文件的完整性,留意异常行为

五、参考链接

https://seclists.org/oss-sec/2026/q2/605https://lore.kernel.org/netdev/20260505234336.2132721-1-achender@kernel.org/https://www.ddpoc.com/DVB-2026-11231

最新文章

随机文章