CVE-2026-43299Linux内核中的btrfs文件系统存在一个拒绝服务漏洞。当btrfs在关键路径遇到ENOSPC(无空间)错误时,会将文件系统切换为只读模式。若此时存在待处理的读取修复操作,btrfs_repair_io_failure函数中的断言会检测到只读状态并触发内核崩溃,导致系统拒绝服务。
该漏洞源于Linux内核fs/btrfs/bio.c模块中的逻辑缺陷。在特定场景下,如测试用例btrfs/124,当元数据被过度提交且无法正确满足分配请求时,btrfs会触发ENOSPC错误。为了保护数据一致性,内核会中止当前事务并将超级块标记为只读(SB_RDONLY)。然而,btrfs_repair_io_failure函数内部包含一个断言(ASSERT),强制要求文件系统不得为只读状态。竞态窗口出现在文件系统因ENOSPC转为只读的同时,若有IO读取修复请求正在执行,该断言将失败。这会导致内核触发kernel BUG并发生崩溃,从而造成拒绝服务。攻击者可通过触发磁盘空间耗尽并伴随IO错误来利用此漏洞。