CVE-2026-31716Linux内核的fs/ntfs3模块在处理日志重放时存在安全漏洞。check_file_record()函数仅验证了rec->total字段,而忽略了对rec->used字段的验证。当处理损坏的文件系统时,攻击者可利用此缺陷,使rec->used值异常。在DeleteAttribute和CreateAttribute等处理函数中,使用该未经验证的值进行memmove长度计算,可能导致整数下溢,进而向4kb缓冲区写入大量内存,引发越界写入漏洞,可能导致系统崩溃或权限提升。
该漏洞发生在Linux内核NTFS3文件系统驱动的日志恢复机制中。核心问题在于check_file_record()函数的校验逻辑不完整。虽然它检查了rec->total以确保不超出记录大小,但未检查rec->used的有效性。在日志重放阶段,do_action()函数调用的多个处理程序(如DeleteAttribute、CreateAttribute和change_attr_size)直接从磁盘读取rec->used,并利用它计算memmove操作的长度参数。利用该漏洞需要本地访问权限并能够提供特制的损坏文件系统镜像。如果rec->used被设置为小于属性偏移量或大于记录大小的值,减法操作将触发无符号整数下溢,导致计算出极大的长度值。随后的memmove操作将尝试将大量数据拷贝到仅4KB的栈或堆缓冲区中,造成严重的内存破坏。尽管这通常需要物理接触或文件系统损坏的前提,但在多租户环境或容器场景中可能被利用。