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

CVE-2026-33179 libfuse空指针引用与内存泄漏漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33179
漏洞类型
空指针引用
CVSS评分
5.5 中危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
libfuse

相关标签

CVE-2026-33179libfuse空指针引用内存泄漏DoS本地漏洞

漏洞概述

libfuse是Linux FUSE的参考实现。在3.18.0至3.18.2之前的版本中,fuse_uring_init_queue函数存在空指针引用和内存泄漏漏洞。当numa_alloc_local在io_uring队列条目设置期间失败时,代码会继续使用空指针。此外,当fuse_uring_register_queue失败时,NUMA分配的内存被泄漏,且函数错误地返回成功。该问题仅影响io_uring传输,不影响传统的/dev/fuse路径。本地用户可利用此漏洞使FUSE守护进程崩溃或导致资源耗尽。

技术细节

该漏洞位于libfuse的io_uring传输初始化逻辑中。在`fuse_uring_init_queue`函数执行期间,代码调用`numa_alloc_local`分配内存。若该函数返回NULL(分配失败),代码缺乏有效的空值检查,继续执行后续操作导致空指针解引用,引发程序崩溃。此外,若`fuse_uring_register_queue`注册队列失败,此前分配的NUMA内存并未释放,造成内存泄漏。同时,该函数在失败时错误地返回了成功状态,掩盖了错误。攻击者需拥有本地低权限账户,通过恶意调用或耗尽系统内存条件触发该路径,导致拒绝服务或资源耗尽。传统/dev/fuse接口不受此漏洞影响。

攻击链分析

STEP 1
步骤1:获取本地访问权限
攻击者需要在目标系统上拥有低权限的用户账户,能够执行代码或调用FUSE相关的API。
STEP 2
步骤2:触发漏洞条件
攻击者运行恶意程序,利用io_uring接口初始化FUSE会话,并设法制造内存分配失败(如系统内存压力)或直接调用相关接口触发numa_alloc_local失败路径。
STEP 3
步骤3:利用漏洞
由于代码未检查空指针,程序发生空指针解引用导致FUSE守护进程崩溃;或者函数返回成功但内存泄漏,长期运行导致资源耗尽。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-33179 * Conceptual demonstration of triggering the vulnerable path. * Compile with: gcc -o poc_cve202633179 poc_cve202633179.c -lfuse3 * Note: Actual crash depends on memory pressure or numa_alloc_local failure simulation. */ #define FUSE_USE_VERSION 318 #include <fuse3/fuse.h> #include <stdio.h> #include <stdlib.h> #include <string.h> static int dummy_getattr(const char *path, struct stat *stbuf, struct fuse_file_info *fi) { (void) path; (void) stbuf; (void) fi; return -ENOSYS; } static struct fuse_operations dummy_oper = { .getattr = dummy_getattr, }; int main(int argc, char *argv[]) { struct fuse_args args = FUSE_ARGS_INIT(argc, argv); struct fuse_session *se; struct fuse_cmdline_opts opts; if (fuse_parse_cmdline(&args, &opts) != 0) { return 1; } // Attempt to create a new FUSE session. // If io_uring is enabled and memory allocation fails internally, // the NULL pointer dereference or leak may occur. se = fuse_session_new(&args, &dummy_oper, sizeof(dummy_oper), NULL); if (!se) { perror("fuse_session_new"); fprintf(stderr, "Potential trigger of CVE-2026-33179 if io_uring init failed silently.\n"); fuse_opt_free_args(&args); return 1; } // Clean up fuse_session_destroy(se); fuse_opt_free_args(&args); return 0; }

影响范围

libfuse 3.18.0
libfuse 3.18.1

防御指南

临时缓解措施
建议立即升级至libfuse 3.18.2或更高版本以修复此漏洞。如果无法立即升级,作为临时缓解措施,可以禁用io_uring传输机制,强制应用程序使用传统的/dev/fuse设备文件路径,从而规避受影响的代码路径。

参考链接

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