Ubuntu内核曝严重UAF漏洞,可致攻击者获取Root权限
Ubuntu Linux内核近日曝出严重安全漏洞,允许本地攻击者提升权限,并可能获取受影响系统的根访问权限。该漏洞在TyphoonPWN 2025安全会议上披露,源于af_unix子系统中的引用计数失衡问题,会导致释放后使用(UAF)漏洞。研究人员已提供完整概念验证漏洞利用程序。
漏洞根源分析
该漏洞影响运行6.8.0-60-generic内核版本的Ubuntu 24.04.2系统,暴露出主流发行版在内核补丁管理方面持续面临的挑战。根本原因在于Ubuntu对上游Linux内核补丁的不完整实施——这些补丁旨在修复af_unix域套接字中的引用计数错误,该套接字通过允许进程相互发送文件描述符来实现进程间通信。
从历史来看,该子系统采用垃圾回收机制处理循环引用。但最近的上游变更使用新算法取代了原有机制,同时调整了带外(OOB)套接字缓冲区内核(skb)引用的管理方式。具体而言,补丁程序移除了af_unix.c文件中queue_oob函数内的skb_get()调用,以防止对u->oob_skb(通过MSG_OOB标志发送的OOB数据指针)产生不必要的引用计数,并相应避免在垃圾回收时对其进行递减操作。
Part02
漏洞利用机制
基于旧版6.8.12内核的Ubuntu系统保留了传统垃圾回收机制,但错误地仅应用了af_unix.c文件的修改,未同步更新garbage.c文件。这种不匹配导致oob_skb在分配时丢失一个引用计数,却在垃圾回收过程中经历两次递减:一次通过unix_gc中的kfree_skb,另一次在套接字关闭时通过unix_release_sock执行,最终触发对skbuff_head_cache slab中256字节struct sk_buff对象的释放后使用。
据SSD安全团队披露,虽然两个函数均可释放对象,但在实际利用中始终呈现先由unix_gc释放再由unix_release_sock使用的模式。稳定利用此漏洞需分离释放和使用阶段,通过在套接字关闭后立即触发垃圾回收实现——即在后续sendmsg调用期间使unix_tot_inflight计数超过16000,从而激活wait_for_unix_gc。
Part03
攻击链
为弥合unix_release_sock作为TWA_RESUME工作项在系统调用后执行的时间间隙,漏洞利用程序通过skb_copy_datagram_from_iter中的FUSE文件系统mmap缓冲区暂停执行,利用定制化的FUSE_read处理程序使内核线程休眠数秒。
随后发起的跨缓存攻击会释放专用slab,通过环回接口上的数据包套接字喷洒受控的pg_vec结构来重新占用页面。覆盖已释放的skb可控制skb_release_head_state中的析构函数调用,实现RIP和RDI劫持。KASLR绕过采用Entrybleed的预取侧信道变种,在无KPTI防护系统上通过统计时序分析实现100%成功率。最终,ROP链将modprobe_path覆盖为“/tmp/x”脚本,通过调用usermodehelper获取根权限。
Part04
影响与处置
这个荣获TyphoonPWN 2025 Linux类别一等奖的概念验证程序,是包含KASLR泄露、内存喷洒和载荷执行的完整权限提升漏洞利用方案,充分体现了发现者对内核内部机制的深入分析能力。
Canonical已迅速响应,于2025年9月18日发布更新内核,完整纳入上游修复方案以平衡两个修改文件中的引用计数。受影响版本用户应立即通过apt upgrade linux-generic命令升级至6.8.0-61或更高版本内核。此事件揭示了发行版内核选择性回溯移植补丁的风险,呼吁系统管理员密切关注安全公告。目前虽未发现大规模利用迹象,但公开的概念验证程序显著提升了企业环境打补丁的紧迫性。
参考来源:
Ubuntu’s Kernel Vulnerability Let Attackers Escalate Privileges and Gain Root Access
https://cybersecuritynews.com/ubuntus-kernel-vulnerability/
LPE via refcount imbalance in the af_unix of Ubuntu’s Kernel
https://ssd-disclosure.com/lpe-via-refcount-imbalance-in-the-af_unix-of-ubuntus-kernel/
文章来源:FreeBuf
华盟君