Cloudanix VulnDB

CVE-2026-43054

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

May 1, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

A local user may be able to make certain Linux storage-management operations hang until administrators intervene or reboot the system.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Denial of service
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a local denial-of-service flaw in the Linux kernel SCSI target loopback driver, tcm_loop. During SCSI error handling, tcm_loop_target_reset() can incorrectly report a successful target reset without draining in-flight SCSI commands. The kernel may then reuse scsi_cmnd structures while asynchronous target-core completion work for older commands is still pending. This race can corrupt command/LUN reference accounting, leak a LUN reference, and cause configfs LUN removal to hang indefinitely in uninterruptible sleep state. The practical technical result is a kernel-level availability failure affecting systems using the SCSI target subsystem and tcm_loop, especially during reset/error-recovery and LUN unlink operations.

Why it matters to the business

An attacker or local user with the ability to exercise affected SCSI target-loop functionality can cause storage management operations to hang and may require administrative intervention or a system reboot to recover. The most likely operational impact is loss of availability for storage target administration, blocked cleanup or reconfiguration workflows, and possible disruption to hosts relying on kernel SCSI target services. This issue is not known to be exploited in the wild, is not listed in CISA KEV, has very low EPSS, and requires local privileges, so broad internet-scale exploitation risk is low; however, the availability impact can still be significant on systems that depend on Linux kernel target storage functionality.

How an attack unfolds

Exploitation requires local access and the ability to interact with or influence the affected Linux SCSI target loopback path. An attacker triggers conditions that cause SCSI command timeout/error handling and a target reset through tcm_loop. Because the vulnerable reset handler returns success without fully draining outstanding commands and deferred completion work, the SCSI error handler may reuse command structures while target-core work still references the previous command state. This can lead to a leaked LUN reference. When an administrator or process later attempts to remove or unlink the affected LUN through configfs, the operation can block forever in transport_clear_lun_ref(), leaving processes stuck in D-state and degrading storage management availability. No public exploit maturity is indicated, and exploitation is constrained by the need for local privileges and a relevant SCSI target/tcm_loop configuration.

How to fix it

Upgrade to a Linux kernel version that includes the fix for tcm_loop_target_reset() draining outstanding commands during target reset. Because no fixed versions were provided in the input, obtain the corrected kernel from the relevant Linux distribution vendor, long-term-stable kernel branch, or upstream stable release once available. Prioritize systems that load or use target_core_mod, tcm_loop, configfs-based SCSI target configuration, LIO, loopback SCSI targets, storage test harnesses, or virtualization/storage stacks depending on the kernel target subsystem. If immediate patching is not possible, reduce exposure by disabling or unloading unused SCSI target loopback functionality, restricting local shell access, limiting permissions for storage-target administration, avoiding untrusted workloads on hosts using tcm_loop, and scheduling maintenance windows for systems where a reboot may be required if the hang occurs.

How to confirm the fix worked

Confirm the running kernel includes the vendor fix for the SCSI target tcm_loop reset-drain behavior. Validate package status using the distribution package manager and compare the installed kernel build against vendor advisories or upstream stable release notes. Check whether affected modules are present or loaded with commands such as lsmod for tcm_loop, target_core_mod, and configfs-related target modules. On test systems only, validate that SCSI target reset and LUN unlink workflows complete normally and do not leave rm, rmdir, target management tools, or kernel worker threads stuck in D-state. Review dmesg or journal logs for blocked-task messages referencing transport_clear_lun_ref, core_tpg_remove_lun, target_fabric_port_unlink, configfs_unlink, or tcm_loop_target_reset. A patched system should not reproduce indefinite hangs during target reset and LUN removal under error-handling conditions.

Typical attack path

  1. Obtain local access to a Linux system using the affected kernel SCSI target loopback driver.
  2. Exercise tcm_loop/SCSI target functionality in a way that creates in-flight commands and triggers SCSI error handling or timeout recovery.
  3. Cause or wait for tcm_loop_target_reset() to return success without draining outstanding commands.
  4. Allow asynchronous target-core completion work to race with reused SCSI command structures, causing incorrect LUN reference handling.
  5. Trigger LUN removal or configfs unlink of the affected target/LUN.
  6. The unlink/removal operation hangs in uninterruptible sleep, causing a local denial of service for storage target management and potentially requiring reboot or service disruption to recover.

How to detect it

Look for evidence of prior exploitation or accidental triggering in kernel logs, system journals, storage-management logs, and process-state telemetry. Relevant artifacts include blocked-task warnings, processes stuck in uninterruptible sleep during configfs unlink/removal, stack traces involving transport_clear_lun_ref or target_fabric_port_unlink, and repeated SCSI error-handling or reset activity involving tcm_loop. Useful log sources include dmesg, /var/log/kern.log, /var/log/messages, journalctl -k, audit logs for configfs target deletion operations, and EDR/process telemetry showing rm, rmdir, targetcli, or storage-management commands stuck in D-state. There are no network indicators for this issue because exploitation is local and kernel/subsystem-specific. Correlate suspicious events with local user activity, recent storage target reconfiguration, SCSI timeouts, target resets, or failed LUN deletion attempts. Threat actor exploitation has not been reported in the provided data, so detection should focus on behavioral signs of the hang rather than known malicious infrastructure or payloads.

  • INFO: task rm:* blocked for more than 122 seconds
  • blocked for more than 122 seconds
  • transport_clear_lun_ref
  • core_tpg_remove_lun
  • target_fabric_port_unlink
  • configfs_unlink
  • vfs_unlink
  • do_unlinkat
  • target_core_mod
  • tcm_loop_target_reset
  • tcm_loop
  • TMR_LUN_RESET
  • CMD_T_COMPLETE
  • /sys/kernel/config/target/
  • process state D
  • rm D

What your security team should do

  • Inventory Linux systems using the kernel SCSI target subsystem, especially those with tcm_loop or target_core_mod loaded.
  • Prioritize patching storage infrastructure, virtualization hosts, CI/test systems, and appliances that expose or depend on Linux kernel target/LIO functionality.
  • Track Linux distribution advisories for the fixed kernel build and deploy the corrected kernel through normal kernel update processes.
  • Restrict local administrative and shell access on systems using SCSI target loopback functionality until patched.
  • Monitor for blocked-task kernel messages and D-state processes involving configfs LUN removal or target-core functions.
  • If symptoms are observed, treat the host as availability-impaired: preserve logs, avoid repeated destructive storage reconfiguration attempts, and plan controlled recovery such as service restart or reboot if required.
  • Because the vulnerability is local, low-EPSS, not KEV-listed, and has no known exploit maturity, prioritize based on use of affected SCSI target functionality rather than internet exposure alone.

The record

In the Linux kernel, the following vulnerability has been resolved: scsi: target: tcm_loop: Drain commands in target_reset handler tcm_loop_target_reset() violates the SCSI EH contract: it returns SUCCESS without draining any in-flight commands. The SCSI EH documentation (scsi_eh.rst) requires that when a reset handler returns SUCCESS the driver has made lower layers "forget about timed out scmds" and is ready for new commands. Every other SCSI LLD (virtio_scsi, mpt3sas, ipr, scsi_debug, mpi3mr) enforces this by draining or completing outstanding commands before returning SUCCESS. Because tcm_loop_target_reset() doesn't drain, the SCSI EH reuses in-flight scsi_cmnd structures for recovery commands (e.g. TUR) while the target core still has async completion work queued for the old se_cmd. The memset in queuecommand zeroes se_lun and lun_ref_active, causing transport_lun_remove_cmd() to skip its percpu_ref_put(). The leaked LUN reference prevents transport_clear_lun_ref() from completing, hanging configfs LUN unlink forever in D-state: INFO: task rm:264 blocked for more than 122 seconds. rm D 0 264 258 0x00004000 Call Trace: __schedule+0x3d0/0x8e0 schedule+0x36/0xf0 transport_clear_lun_ref+0x78/0x90 [target_core_mod] core_tpg_remove_lun+0x28/0xb0 [target_core_mod] target_fabric_port_unlink+0x50/0x60 [target_core_mod] configfs_unlink+0x156/0x1f0 [configfs] vfs_unlink+0x109/0x290 do_unlinkat+0x1d5/0x2d0 Fix this by making tcm_loop_target_reset() actually drain commands: 1. Issue TMR_LUN_RESET via tcm_loop_issue_tmr() to drain all commands that the target core knows about (those not yet CMD_T_COMPLETE). 2. Use blk_mq_tagset_busy_iter() to iterate all started requests and flush_work() on each se_cmd — this drains any deferred completion work for commands that already had CMD_T_COMPLETE set before the TMR (which the TMR skips via __target_check_io_state()). This is the same pattern used by mpi3mr, scsi_debug, and libsas to drain outstanding commands during reset.

Affected packages

Ecosystem Package Introduced Fixed

Related vulnerabilities