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

CVE-2026-23376 Linux内核nvmet-fcloop逻辑错误漏洞

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

漏洞信息

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

相关标签

Linux Kernel逻辑错误拒绝服务nvmet-fcloop本地漏洞

漏洞概述

Linux内核中的nvmet-fcloop驱动程序存在一个逻辑错误漏洞。该漏洞源于在调用done回调函数之前,未正确检查remoteport的端口状态。当端口处于非在线状态时,错误的回调操作可能导致内核崩溃或内存访问违规,进而引发系统拒绝服务。

技术细节

该漏洞位于Linux内核的nvmet-fcloop驱动实现中。正常逻辑下,nvme_fc_handle_ls_rqst_work仅在remoteport->port_state为FC_OBJSTATE_ONLINE时设置lsrsp->done回调。若端口不在线,传输层期望LLDD(低级驱动程序)返回错误并自行清理资源。然而,fcloop_t2h_xmt_ls_rsp函数未检查端口状态即尝试执行回调。在特定状态下,这会导致空指针解引用或释放后使用,破坏内核稳定性。

攻击链分析

STEP 1
步骤1:获取访问权限
攻击者需要获取目标系统的本地低权限用户访问权限。
STEP 2
步骤2:加载漏洞模块
确保系统加载了包含漏洞的nvmet-fcloop内核模块。
STEP 3
步骤3:触发漏洞条件
通过特定的系统调用或操作,将remoteport状态设置为非在线(非FC_OBJSTATE_ONLINE),并触发Link Service响应处理。
STEP 4
步骤4:执行崩溃代码
fcloop驱动在未检查状态的情况下调用无效的done回调函数,导致内核空指针解引用。
STEP 5
步骤5:达成拒绝服务
内核崩溃导致系统重启或停止响应,实现拒绝服务攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * Conceptual PoC for CVE-2026-23376 * This requires a system with the nvmet-fcloop module loaded. * The PoC simulates the condition where a Link Service request * is processed while the remote port is not in the ONLINE state. */ #include <linux/module.h> #include <linux/init.h> // Mocking the structure to demonstrate the logic flaw struct fcloop_lsrsp { void (*done)(struct fcloop_lsrsp *lsrsp); }; struct fcloop_remoteport { int port_state; }; #define FC_OBJSTATE_ONLINE 1 void vulnerable_function(struct fcloop_remoteport *remoteport, struct fcloop_lsrsp *lsrsp) { // Vulnerability: Missing check for remoteport->port_state before calling lsrsp->done // In the exploit scenario, port_state is not ONLINE, so lsrsp->done might be NULL/invalid. if (lsrsp->done) { printk(KERN_INFO "Calling done callback\n"); lsrsp->done(lsrsp); // This triggers the crash if state was wrong } else { printk(KERN_INFO "Done callback is NULL\n"); } } static int __init poc_init(void) { struct fcloop_remoteport rp; struct fcloop_lsrsp ls; // Setup scenario where port is NOT online rp.port_state = 0; // Not FC_OBJSTATE_ONLINE ls.done = NULL; // Callback not set by transport layer printk(KERN_INFO "CVE-2026-23376 PoC loaded\n"); // Trigger the vulnerable path vulnerable_function(&rp, &ls); return 0; } static void __exit poc_exit(void) { printk(KERN_INFO "CVE-2026-23376 PoC unloaded\n"); } module_init(poc_init); module_exit(poc_exit); MODULE_LICENSE("GPL");

影响范围

Linux Kernel < 6.x (Specific versions depend on commit backports)

防御指南

临时缓解措施
如果不需要使用NVMe over Fabrics FC loop功能,建议禁用或卸载nvmet-fcloop内核模块以降低风险。限制非管理员用户对系统配置的访问权限也可以减少被利用的可能性。

参考链接

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