CVE-2026-31434Linux内核中的BTRFS文件系统在处理空间信息子组时存在内存泄漏漏洞。在`create_space_info_sub_group`函数分配元素时调用了`kobject_init_and_add`,但在`check_removing_space_info`释放这些元素时未调用对应的清理函数`btrfs_sysfs_remove_space_info`。这导致`kobject_put`未被调用,进而造成关联的`kobj->name`对象内存泄漏。本地低权限用户可利用此漏洞耗尽系统内存,导致拒绝服务。
该漏洞位于Linux内核BTRFS子系统的sysfs管理代码中。正常流程下,当通过`btrfs_sysfs_add_space_info_type`添加kobject时,内核会分配内存存储kobject的名称(`kobj->name`)。在对象生命周期结束时,必须调用`kobject_put`来释放这些资源。然而,漏洞代码在清理`space_info->sub_group`数组时,仅释放了结构体内存,未执行sysfs的移除操作。通过反复执行BTRFS挂载、卸载或触发特定空间信息操作(如blktests测试用例zbd/009),攻击者可导致内核不断分配且不释放内存。随着时间推移,这种泄漏会累积大量不可回收的内核内存,最终导致系统内存耗尽,影响系统可用性。