CVE-2026-31452Linux内核ext4文件系统中存在一个严重的逻辑缺陷,允许本地低权限用户触发系统崩溃。该漏洞发生在处理具有内联数据的文件时,当使用truncate操作将文件大小扩展超过内联容量限制,系统未能自动将存储模式转换为基于扩展区的模式。这种元数据的不一致性导致后续的写入操作在ext4_write_inline_data函数中触发断言失败(BUG_ON),进而引发内核恐慌。成功利用此漏洞可导致系统完全停止响应,造成拒绝服务。
漏洞核心位于Linux内核fs/ext4/inode.c的ext4_setattr函数。正常情况下,当文件大小增长超过内联数据容量时,内核应执行ext4_convert_inline_data_to_extent进行转换。然而,受影响版本在执行truncate(file, large_size)时,仅更新了inode的i_size字段,保留了内联标志。随后,当用户调用sendfile()尝试写入数据时,内核调用ext4_write_inline_data()。该函数检查write_size是否大于inline_capacity,由于此时i_size巨大且write_size与之相关,而inline_capacity仅约156字节,条件满足触发BUG_ON。这导致内核立即终止运行。攻击者只需拥有本地低权限账户,按顺序执行创建小文件、截断大文件、触发写入的操作,即可使系统崩溃。修复方案是在setattr阶段预判大小并强制转换存储格式。