CVE-2026-43364Linux内核ublk子系统存在空指针解引用漏洞。`ublk_ctrl_set_size()`函数在处理`UBLK_CMD_UPDATE_SIZE`命令时,未对`ub->ub_disk`指针进行有效性检查。由于该指针在设备未启动或已停止时为NULL,本地低权限攻击者可通过发送UPDATE_SIZE命令触发内核崩溃,从而导致系统拒绝服务。
该漏洞源于Linux内核`drivers/block/ublk_drv.c`文件中的`ublk_ctrl_set_size()`函数。该函数旨在处理用户空间发送的更新设备大小请求,通过调用`set_capacity_and_notify(ub->ub_disk)`来更新磁盘容量。然而,代码在调用该函数前未对`ub->ub_disk`指针进行非空校验。根据ublk驱动的状态机逻辑,`ub->ub_disk`仅在`ublk_ctrl_start_dev()`执行成功后被赋值,而在`ublk_ctrl_stop_dev()`执行后(具体为`ublk_detach_disk()`)会被置为NULL。因此,当设备处于“已添加但未启动”或“已停止”等中间状态时,该指针为空。`UBLK_CMD_UPDATE_SIZE`命令的处理逻辑中缺乏针对设备当前状态的验证。本地低权限攻击者可利用这一逻辑缺陷,向处于上述无效状态的设备发送`UBLK_CMD_UPDATE_SIZE`命令,从而触发内核空指针解引用异常。这将导致内核恐慌(Kernel Panic),进而引发系统崩溃或拒绝服务。