IPBUF安全漏洞报告
English
CVE-2025-71107 CVSS 5.5 中危

CVE-2025-71107 Linux内核f2fs文件系统umount时竞态条件漏洞

披露日期: 2026-01-14
来源: 416baaa9-dc9f-4396-8d5f-8c081fb06d67

漏洞信息

漏洞编号
CVE-2025-71107
漏洞类型
竞态条件/资源泄露
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux kernel f2fs文件系统

相关标签

CVE-2025-71107Linux内核f2fs竞态条件资源泄露本地提权内核崩溃文件系统漏洞MEDIUMCVSS 5.5

漏洞概述

CVE-2025-71107是Linux内核f2fs(Flash-Friendly File System)文件系统中的一个竞态条件漏洞。该漏洞存在于f2fs_put_super()函数中,当系统执行umount操作时,可能在所有node page读取完成前就调用f2fs_put_super(),导致文件系统引用计数泄露。攻击者可通过触发特定的umount操作序列,利用此竞态条件造成内核崩溃(BUG at fs/f2fs/super.c:1939!),表现为Oops: invalid opcode错误。此问题在xfstests的generic/335和generic/336测试中偶尔复现,表明这是一个时序相关的并发问题。CVSS评分5.5,属于中等严重级别,本地低权限攻击者即可利用,无需用户交互。

技术细节

漏洞核心在于f2fs文件系统卸载流程中的同步问题。当执行umount时,f2fs_put_super()会被调用以清理文件系统资源。问题在于某些情况下,node page的异步读取操作可能尚未完成,但f2fs_put_super()已经开始执行。这导致F2FS_RD_NODE类型的页面引用未被正确释放,文件系统引用计数泄露。内核在umount结束时检测到泄漏,输出'detect filesystem reference count leak during umount, type: 9, count: 1',随后触发BUG_ON()导致内核崩溃。栈追踪显示崩溃发生在f2fs_put_super+0x3b3/0x3c0。修复方案是在f2fs_put_super()中添加f2fs_wait_on_all_pages()调用,等待所有F2FS_RD_NODE页面读取完成后再继续卸载流程。这确保了在superblock清理前,所有页面引用都被正确释放。

攻击链分析

STEP 1
步骤1
攻击者本地访问系统,权限要求低(PR:L),无需特殊权限即可操作
STEP 2
步骤2
挂载f2fs文件系统(AV:L本地攻击向量),在文件系统上执行文件操作触发node page读取
STEP 3
步骤3
在node page异步读取操作进行中时,快速执行umount命令触发竞态条件
STEP 4
步骤4
f2fs_put_super()在部分node page读取未完成时被调用,导致引用计数泄露
STEP 5
步骤5
内核检测到文件系统引用计数泄漏,触发BUG_ON()导致内核崩溃(Oops: invalid opcode)

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// This is a kernel-level race condition that can be triggered via xfstests // The following is a conceptual PoC based on xfstests generic/335 and generic/336 // Trigger conditions: // 1. Mount f2fs filesystem // 2. Perform concurrent read operations on node pages // 3. Rapidly execute umount while node page reads are pending // Example test script (requires root): /* #!/bin/bash mkfs.f2fs /dev/loop0 100M mkdir -p /mnt/f2fs mount -o loop /dev/loop0 /mnt/f2fs # Create concurrent I/O to trigger node page reads for i in {1..100}; do dd if=/dev/urandom of=/mnt/f2fs/file_$i bs=4K count=100 & done # Immediately unmount while I/O is pending sleep 0.01 umount /mnt/f2fs */ // Kernel fix (already applied in stable trees): // In fs/f2fs/super.c f2fs_put_super(): // + f2fs_wait_on_all_pages(F2FS_I_SB(sb), F2FS_RD_NODE); // This ensures all node page reads complete before superblock cleanup.

影响范围

Linux kernel f2fs < 6.17.0-rc5 (with specific patches required)
需要内核补丁: 0b36fae23621a09e772c8adf918b9011158f8511
需要内核补丁: 297baa4aa263ff8f5b3d246ee16a660d76aa82c4
需要内核补丁: 3b15d5f12935e9e25f9a571e680716bc9ee61025
需要内核补丁: c3031cf2b61f1508662fc95ef9ad505cb0882a5f

防御指南

临时缓解措施
在官方补丁发布前,可通过以下措施缓解风险:1) 避免在f2fs文件系统上进行高频的mount/umount操作;2) 在执行umount前确保所有文件操作已完成;3) 使用sync命令强制同步文件系统缓存后再umount;4) 监控系统日志中的'filesystem reference count leak'警告信息;5) 考虑使用其他经过充分测试的文件系统作为替代方案。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表