CVE-2026-22995CVE-2026-22995是Linux内核中ublk(userspace block device)驱动程序的一个高危安全漏洞,CVSS评分7.8,属于本地权限提升漏洞。该漏洞存在于ublk设备分区扫描工作与设备销毁之间的竞态条件中,攻击者可利用此漏洞在本地以低权限用户身份触发use-after-free条件,最终实现权限提升至root级别。漏洞的利用无需用户交互,攻击者可通过精心构造的时序触发设备销毁过程中的内存释放后访问,从而实现任意代码执行。由于攻击向量为本地(AV:L),需要攻击者已具备系统低权限账户,适合作为容器逃逸或沙箱突破的利用链中的一环。Linux内核安全团队已发布修复补丁,建议受影响的系统尽快更新至安全版本。
漏洞根源在于ublk驱动中分区扫描工作与设备销毁的同步机制缺失。具体攻击流程如下:首先,ublk_ctrl_start_dev()函数在add_disk()后调度partition_scan_work异步执行;随后,ublk_stop_dev()调用ublk_stop_dev_unlocked()执行设备清理,包括del_gendisk()、ublk_detach_disk()(设置ub->ub_disk=NULL)以及put_disk()(可能释放磁盘对象)。问题在于此时worker线程ublk_partition_scan_work()仍可能处于运行状态,其直接解引用ub->ub_disk导致UAF。修复方案采用ublk_get_disk()/ublk_put_disk()在worker中持有磁盘引用,spinlock同步确保worker获取有效引用或检测NULL后安全退出。同时将flush_work()改为cancel_work_sync()避免设备已分离时仍执行分区扫描。本地低权限攻击者可创建并快速销毁ublk设备触发此竞态条件,实现内核内存破坏和代码执行。