Ubuntu内核曝严重UAF漏洞,可致攻击者获取Root权限

Ubuntu Linux内核曝出高危漏洞,本地攻击者可利用该漏洞提升权限,最终在受影响系统上获取root访问权限。该漏洞在TyphoonPWN 2025安全会议上披露,源于af_unix子系统的引用计数失衡问题,导致释放后重用(UAF)漏洞。研究人员已提供完整的PoC利用代码进行验证。

此漏洞影响运行6.8.0-60-generic内核版本的Ubuntu 24.04.2系统,突显了主流Linux发行版在内核补丁管理方面面临的持续挑战。

漏洞根源分析

漏洞的根本原因在于Ubuntu对上游Linux内核补丁的部分实现存在缺陷。这些补丁原本旨在修复af_unix域套接字中的引用计数错误------该套接字通过允许进程相互发送文件描述符来实现进程间通信。

历史上,该子系统采用垃圾回收机制处理循环引用。但最近的上游变更改用新算法,同时调整了带外(OOB)套接字缓冲区内核(skb)引用的管理方式。

具体而言,补丁移除了af_unix.c文件中queue_oob函数内的skb_get()调用,以避免对u->oob_skb(通过MSG_OOB标志发送的OOB数据指针)进行不必要的引用计数增加,并相应地在垃圾回收中避免减少其计数。

Ubuntu内核提权机制

基于较旧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对象的UAF漏洞。

SSD Disclosure指出,虽然两个函数都可能释放该对象,但在实际利用中,总是先由unix_gc释放对象,再由unix_release_sock使用已释放的内存。

漏洞利用技术细节

要实现可靠的UAF利用,需要分离释放和使用阶段。攻击者通过在后续sendmsg调用期间触发高unix_tot_inflight计数(超过16,000)来立即触发垃圾回收,这会调用wait_for_unix_gc。

为了填补unix_release_sock作为TWA_RESUME工作项在系统调用后执行前的时间间隙,漏洞利用程序使用FUSE文件系统的mmap缓冲区暂停skb_copy_datagram_from_iter中的执行,通过自定义FUSE_read处理程序使内核线程休眠数秒。

随后发起跨缓存攻击释放专用slab,通过环回接口上的数据包套接字喷洒受控的pg_vec结构来回收页面。覆盖已释放的skb可控制其在skb_release_head_state中的析构函数调用,从而实现RIP和RDI劫持。

KASLR绕过采用Entrybleed的预取侧信道变体,在无KPTI的系统上通过统计时序分析实现100%成功率。最终,ROP链将modprobe_path覆盖为"/tmp/x",这是一个通过usermodehelper调用获取root权限的shell脚本。

漏洞修复建议

Canonical迅速做出响应,于2025年9月18日发布更新内核,完整合并上游修复以平衡两个修改文件中的引用计数。受影响版本用户应立即通过apt upgrade linux-generic命令更新至6.8.0-61或更高版本内核。

此事件凸显了发行版内核选择性回溯移植补丁的风险,敦促管理员密切关注安全公告。虽然尚未发现大规模利用,但公开的PoC提高了企业环境打补丁的紧迫性。

相关推荐
南棱笑笑生3 小时前
20251028在Ubuntu20.04.6上编译AIO-3576Q38开发板的Buildroot系统
大数据·linux·服务器·rockchip
Jason_zhao_MR3 小时前
RK3576机器人核心:三屏异显+八路摄像头,重塑机器人交互与感知
linux·人工智能·嵌入式硬件·计算机视觉·机器人·嵌入式·交互
☆璇3 小时前
【Linux】数据链路层
linux·服务器·网络
初学者_xuan4 小时前
零基础新手小白快速了解掌握服务集群与自动化运维(十六)集群部署模块——Keepalived双机热备
运维·自动化·github
行思理5 小时前
Dockerfile 各指令说明
运维·macos·docker·容器·php
阿巴~阿巴~5 小时前
线程局部存储(Thread-Local Storage, TLS)
linux·服务器·开发语言·c++·线程·虚拟地址空间·线程局部存储
BAGAE5 小时前
MQTT 与 HTTP 协议对比
java·linux·http·https·硬件工程
半梦半醒*6 小时前
k8s——资源管理
linux·运维·docker·容器·kubernetes·自动化
带土16 小时前
30. 文件IO (1)
linux·c语言