CVE-2026-43076Linux内核中的ocfs2文件系统存在一个安全漏洞。在从磁盘读取inode时,`ocfs2_validate_inode_block`函数未对内联数据的`i_size`进行有效性验证。如果文件系统损坏,inode的`i_size`可能会超过实际的内联数据容量(`id_count`)。这种情况会导致`ocfs2_dir_foreach_blk_id`在迭代时越界访问内联数据缓冲区,进而在`ocfs2_check_dir_entry`中触发释放后重用(UAF)漏洞,可能造成系统崩溃或权限提升。
该漏洞源于Linux内核OCFS2集群文件系统的代码逻辑缺陷。具体而言,当系统从磁盘读取inode元数据时,`ocfs2_validate_inode_block`函数虽然执行了多种健全性检查,但遗漏了对内联数据大小(`i_size`)的验证。攻击者或恶意构造的损坏镜像可以将inode的`i_size`设置为一个异常大的值(例如syzbot报告中的约1TB),而实际的内联数据容量(`id_count`)通常很小(小于256字节)。当内核尝试遍历目录块时,由于`i_size`远超缓冲区边界,且可能包含恶意的`rec_len`值,导致上下文位置指针(`ctx->pos`)跳转到有效范围之外。这使得代码尝试访问已释放的内存区域,从而在`ocfs2_check_dir_entry`函数中触发释放后重用(UAF)。利用此漏洞可能导致内核崩溃、拒绝服务,或在特定条件下实现本地权限提升。修复方案是在读取inode阶段增加校验逻辑,强制要求`i_size <= id_count`,从而在早期拦截corrupted数据。