CVE-2026-72085 in Linux
摘要
由 VulDB • 2026-08-15
在 Linux 内核中,已修复以下漏洞:
scsi: xen: scsiback: 释放未提交的命令,而不是重复执行 put 操作
`scsiback_get_pend_req()` 获取一个命令标签(command tag),并返回一个 `vscsibk_pend`,其嵌入的 `se_cmd` 仅通过 `memset` 清零,因此其 `cmd_kref` 为 0;该 `se_cmd` 仅在稍后的 `scsiback_cmd_exec()` 中、在成功的 `VSCSIIF_ACT_SCSI_CDB` 路径上被初始化(通过 `target_init_cmd()` 调用 `kref_init()`)。在命令提交之前,`scsiback_do_cmd_fn()` 中的两条错误处理路径——即失败的 `scsiback_gnttab_data_map()` 和未知的 `ring_req.act` ——会调用 `transport_generic_free_cmd(&pending_req->se_cmd, 0)`,该函数会对引用计数为 0 的值执行 `kref_put()`。这导致下溢(“refcount_t: underflow; use-after-free”),并且由于未运行释放函数,会导致命令标签泄漏。
影响:pvSCSI 客户机可以通过提交带有错误 grant 引用或未知请求类型的请求,泄露 LUN 会话的所有命令标签,从而停止该 LUN;在启用 `panic_on_warn` 的情况下,引用计数下溢将导致主机 panic(崩溃)。
添加一个辅助函数,仅通过 `target_free_tag()` 返回标签并发送错误响应。它在 v2p 引用仍锁定会话时释放标签,并在之前快照响应字段,因为释放标签可能导致另一个 ring 重用 pending_req 槽位。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.