LiveActive security incident?Get immediate response
CVE Record

CVE-2025-38209: nvme-tcp: remove tag set when second admin queue config fails

In the Linux kernel, the following vulnerability has been resolved: nvme-tcp: remove tag set when second admin queue config fails Commit 104d0e2f6222 ("nvme-fabrics: reset admin connection for secure concatenation") modified nvme_tcp_setup_ctrl() to call nvme_tcp_configure_admin_queue() twice. The first call prepares for DH-CHAP negotitation, and the second call is required for secure concatenation. However, this change triggered BUG KASAN slab-use-after- free in blk_mq_queue_tag_busy_iter(). This BUG can be recreated by repeating the blktests test case nvme/063 a few times [1]. When the BUG happens, nvme_tcp_create_ctrl() fails in the call chain below: nvme_tcp_create_ctrl() nvme_tcp_alloc_ctrl() new=true ... Alloc nvme_tcp_ctrl and admin_tag_set nvme_tcp_setup_ctrl() new=true nvme_tcp_configure_admin_queue() new=true ... Succeed nvme_alloc_admin_tag_set() ... Alloc the tag set for admin_tag_set nvme_stop_keep_alive() nvme_tcp_teardown_admin_queue() remove=false nvme_tcp_configure_admin_queue() new=false nvme_tcp_alloc_admin_queue() ... Fail, but do not call nvme_remove_admin_tag_set() nvme_uninit_ctrl() nvme_put_ctrl() ... Free up the nvme_tcp_ctrl and admin_tag_set The first call of nvme_tcp_configure_admin_queue() succeeds with new=true argument. The second call fails with new=false argument. This second call does not call nvme_remove_admin_tag_set() on failure, due to the new=false argument. Then the admin tag set is not removed. However, nvme_tcp_create_ctrl() assumes that nvme_tcp_setup_ctrl() would call nvme_remove_admin_tag_set(). Then it frees up struct nvme_tcp_ctrl which has admin_tag_set field. Later on, the timeout handler accesses the admin_tag_set field and causes the BUG KASAN slab-use-after-free. To not leave the admin tag set, call nvme_remove_admin_tag_set() when the second nvme_tcp_configure_admin_queue() call fails. Do not return from nvme_tcp_setup_ctrl() on failure. Instead, jump to "destroy_admin" go-to label to call nvme_tcp_teardown_admin_queue() which calls nvme_remove_admin_tag_set().

CriticalCVSS 9.8Not KEV-listedUpdated
Glexia's TakeAutomated analysiscritical

Security readout for executives and security teams

Plain-English summary

A Linux NVMe-over-TCP cleanup error can leave storage-management data pointing to freed memory when a second administrative queue setup fails. A later timeout can access that memory, producing a kernel bug and potentially disrupting affected storage hosts. The supplied record rates it critical, although the public evidence demonstrates a use-after-free rather than practical compromise.

Executive priority

Treat affected NVMe/TCP storage infrastructure as an urgent patching item because a kernel memory-safety failure could interrupt storage availability. Prioritize exposed and business-critical hosts, but do not infer confirmed remote takeover from the 9.8 score alone; the supplied evidence does not establish active exploitation or reliable attacker control.

Technical view

After the first administrative queue configuration succeeds, a second configuration attempt used for secure concatenation can fail without removing the administrative tag set. Controller cleanup then frees the containing nvme_tcp_ctrl. A later timeout handler accesses its stale admin_tag_set field, causing a KASAN-detected slab use-after-free. The fix routes failure through teardown that removes the tag set.

Likely exposure

Exposure is limited to Linux systems using the NVMe/TCP controller path containing introducing commit 104d0e2f6222, particularly where DH-CHAP and secure-concatenation queue reconfiguration occurs. The bundle lists Linux 6.15, 6.15.4, and 6.16, but packaged kernels may contain backports, so version numbers alone are insufficient.

Exploitation context

The bundle reports no CISA KEV listing and provides no evidence of active exploitation or a public weaponized exploit. The bug was reproduced by repeatedly running blktests nvme/063. Whether an unauthenticated network attacker can reliably trigger or control the freed memory is not established by these sources.

Researcher notes

The important precondition is failure of the second nvme_tcp_configure_admin_queue call with new=false after initial tag-set allocation. The missing removal leaves timeout processing with a dangling reference. Public evidence supports reproducible use-after-free and likely denial of service; confidentiality and integrity impact, trigger reachability from an untrusted network, and exploitation reliability remain unproven.

Mitigation direction

  • Apply a vendor kernel update containing one of the referenced stable fixes after confirming applicability.
  • Prioritize NVMe/TCP storage hosts whose kernels include introducing commit 104d0e2f6222.
  • Check distribution advisories for backported fixes; package versions may not match upstream numbering.
  • Follow vendor guidance if an updated kernel is not yet available.

Validation and detection

  • Inventory systems using NVMe/TCP and record their exact kernel builds.
  • Compare kernel source or backport history against the introducing and fixing commits.
  • Confirm the updated kernel contains teardown logic that removes the administrative tag set on second-configuration failure.
  • Review kernel logs for KASAN use-after-free reports, NVMe/TCP controller failures, or timeout-related crashes.
  • Regression-test NVMe/TCP authentication and reconnection failure handling in a controlled environment.
Prepared
Confidence
high
Sources
4

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2025-38209 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Critical
CVSS
9.8 (3.1)
Known Exploited
No
Published

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

1CVSS vectors
3Timeline events
0ADP providers
3Source links

CVSS vector scores

1 official score

We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.

ScoreVersionSeverityVectorExploitImpactSource
9.8CVSS 3.1CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H3.95.9Linux

Vulnerability scoring details

Base CVSS 3.1 score

9.8Critical
CVSS 3.1 vector shape for CVE-2025-38209Attack VectorAttack ComplexityPrivileges RequiredUser InteractionScopeConfidentiality ImpactIntegrity ImpactAvailability Impact

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Attack Vector
NetworkAdjacentLocalPhysical
Attack Complexity
LowHigh
Privileges Required
NoneLowHigh
User Interaction
NoneRequired
Scope
ChangedUnchanged
Confidentiality Impact
HighLowNone
Integrity Impact
HighLowNone
Availability Impact
HighLowNone

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinux104d0e2f622233477ef7e57e59e8a4c3bb062c82, 104d0e2f622233477ef7e57e59e8a4c3bb062c82unaffected
LinuxLinux6.15, 0, 6.15.4, 6.16affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.