Linux内核FUSE漏洞可致攻击者获取Root权限

admin 2026-07-12 05:31:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Linux内核FUSE子系统存在CVE-2026-31694漏洞,本地攻击者可通过恶意FUSE服务器返回超大的目录条目,导致内存溢出并破坏SUID二进制文件,从而获取root权限。该漏洞影响使用4KiB页面大小的系统,攻击者需具备FUSE挂载能力。修复方法为拒绝超出单个页面大小的目录条目,建议管理员限制FUSE使用并移除fusermount3的setuid位以降低风险。 综合评分: 88 文章分类: 漏洞分析,威胁情报,应急响应,红队,内网渗透


cover_image

Linux内核FUSE漏洞可致攻击者获取Root权限

FreeBuf

2026年7月11日 18:00 上海

在小说阅读器读本章

去阅读

Linux内核FUSE(用户空间文件系统)子系统存在一处漏洞,本地攻击者可利用该漏洞,通过用攻击者控制的目录条目填满页缓存,从而获取root权限。

Part01

漏洞概述

该漏洞编号为CVE-2026-31694,影响内核缓存FUSE readdir结果时所使用的代码路径。FUSE允许用户空间文件系统通过/dev/fuse与内核通信,内核可缓存目录条目以加速后续读取操作。

Bynario的分析显示,漏洞位于fuse_add_dirent_to_cache()函数中。该函数根据服务器提供的文件名长度计算目录条目大小,然后将条目复制到单个缓存页面中,但并未事先检查该条目本身是否大于一个页面的大小。

问题的关键在于,恶意FUSE服务器可以返回一个序列化大小为4120字节的目录条目(在4KiB页面大小的系统上),这比单个页面多出24字节。当内核将偏移量重置为零并强行复制该记录时,额外的字节会溢出到下一个内存页面中。危险之处不仅在于内存损坏,更在于被破坏数据的具体位置。

Part02

漏洞技术细节

在已报告的验证中,攻击者利用该溢出破坏SUID二进制文件(例如/usr/bin/su)中的缓存字节,将可执行代码的开头替换为一个简短payload,该payload在正常流程继续前调用setuid(0)和setgid(0)。一旦这些身份更改系统调用在root所属的程序中成功执行,攻击者便可绕过常规身份验证检查,生成一个root shell。

Part03

攻击场景与影响

该攻击为本地攻击,因此攻击者需要具备挂载或运行FUSE文件系统的能力——这通常可通过无特权用户命名空间或fusermount3实现。据Bynario称,此漏洞可在具有较大readdir缓冲区的新内核上利用,且仅影响使用4KiB内存页面的系统。使用更大页面大小的系统不受此特定溢出大小的影响。

Part04

修复与缓解措施

修复方法很简单:在缓存任何目录条目之前,拒绝那些超出单个页面大小的条目。管理员还可以通过限制FUSE的使用、在不需要时移除fusermount3的setuid位,以及适当限制无特权命名空间来降低暴露风险。

参考来源:

Linux Kernel FUSE Vulnerability Lets Attackers Gain Root Privileges

Linux Kernel FUSE Vulnerability Lets Attackers Gain Root Privileges

推荐阅读

#

#

#

#

#

#

#

#

#

#

#

#

#

#

#

电报讨论


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:FreeBuf 《Linux内核FUSE漏洞可致攻击者获取Root权限》

评论:0   参与:  0