HIGH 8.8

CVE-2026-52952: Linux Kernel IOMMU Use-After-Free in Domain Attachment

A flaw in the Linux kernel's IOMMU (Input/Output Memory Management Unit) subsystem can cause a use-after-free condition when multiple devices in the same group undergo concurrent domain attachment operations during device recovery. The vulnerability arises from overly strict rejection of domain attachments while a device is resetting, which prevents necessary cleanup operations from completing and leaves dangling pointers to freed memory. A local attacker with sufficient privileges can exploit this to cause a kernel crash or potentially execute arbitrary code.

Source data · NVD / CISA · public domain

CVSS
3.1 · 8.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Weaknesses (CWE)
CWE-617, CWE-825
Affected products
4 configuration(s)
Published / Modified
2026-06-24 / 2026-07-15

NVD description (verbatim)

In the Linux kernel, the following vulnerability has been resolved: iommu: Fix WARN_ON in __iommu_group_set_domain_nofail() due to reset In __iommu_group_set_domain_internal(), concurrent domain attachments are rejected when any device in the group is recovering. This is necessary to fence concurrent attachments to a multi-device group where devices might share the same RID due to PCI DMA alias quirks, but triggers the WARN_ON in __iommu_group_set_domain_nofail(). Other IOMMU_SET_DOMAIN_MUST_SUCCEED callers in detach/teardown paths, such as __iommu_group_set_core_domain and __iommu_release_dma_ownership, should not be rejected, as the domain would be freed anyway in these nofail paths while group->domain is still pointing to it. So pci_dev_reset_iommu_done() could trigger a UAF when re-attaching group->domain. Honor the IOMMU_SET_DOMAIN_MUST_SUCCEED flag, allowing the callers through the group->recovery_cnt fence, so as to update the group->domain pointer. Instead add a gdev->blocked check in the device iteration loop, to prevent any concurrent per-device detachment.

5 reference(s) · View on NVD →

SEC.co analysis · AI-assisted, reviewed against source

Technical summary

The vulnerability exists in __iommu_group_set_domain_internal() within the Linux kernel's IOMMU subsystem. During device recovery (indicated by recovery_cnt > 0), the function rejects all concurrent domain attachments to prevent race conditions in multi-device groups with shared Request IDs (RID) due to PCI DMA alias quirks. However, this blanket rejection blocks critical teardown and cleanup paths that must succeed, including __iommu_group_set_core_domain() and __iommu_release_dma_ownership(). These nofail callers need to update group->domain pointers even during recovery, but are incorrectly rejected, leaving stale references to freed domain structures. When pci_dev_reset_iommu_done() attempts to re-attach the old group->domain reference, a use-after-free (UAF) condition occurs. The fix honors the IOMMU_SET_DOMAIN_MUST_SUCCEED flag to permit recovery-path callers through the recovery_cnt fence while adding a gdev->blocked check in the per-device loop to prevent other concurrent detachments.

Business impact

Organizations running Linux systems with IOMMU-capable hardware (common in servers, data centers, and virtualized environments) face kernel stability and availability risks. Exploitation can cause unplanned kernel panics, service interruptions, and potential guest VM isolation breaches in virtualized deployments. In high-availability environments, frequent crashes degrade system reliability and increase operational overhead. While privilege escalation to arbitrary code execution is possible, the primary business impact is denial of service and reduced trust in system stability.

Affected systems

This vulnerability affects the Linux kernel across all versions that contain the affected IOMMU code path. Systems with IOMMU hardware support enabled (particularly those using AMD IOMMU or Intel VT-d) and handling device hotplug, reset, or VM device assignment operations are at greatest risk. Cloud providers, virtualization platforms, and enterprises using PCIe device passthrough or live migration features should prioritize assessment. The vulnerability requires local access (privilege level: low user), so remote exploitation is not possible.

Exploitability

Exploitation requires local access with unprivileged user privileges (PR:L in the CVSS vector), making it a privilege-escalation vector rather than a remote threat. An attacker must trigger device reset or domain attachment operations, which can occur through legitimate operations like device unbind/rebind, VM device reassignment, or explicit reset commands. The timing-dependent nature of the race condition may require repeated attempts, but the condition is triggerable without needing root at the initial access point. The attack surface is moderately broad on systems supporting dynamic IOMMU domain management.

Remediation

Apply the Linux kernel patch that modifies __iommu_group_set_domain_internal() to respect the IOMMU_SET_DOMAIN_MUST_SUCCEED flag and bypass the recovery_cnt fence for critical nofail callers. The patch adds a gdev->blocked check to the device iteration loop as an alternative guard against concurrent per-device detachment. Verify the patch version against your vendor or Linux distribution's security advisories, as different vendors backport fixes to different kernel versions. Systems unable to patch immediately should disable IOMMU device hotplug and reset operations if operationally feasible, though this may limit functionality.

Patch guidance

Consult your Linux distribution's security advisory for the specific kernel version and patch release that addresses CVE-2026-52952. Upstream patches are typically available in linux-next or stable kernel branches following the published date. Priority should be given to production systems running virtualization hypervisors (KVM, Xen) or systems performing PCIe device assignment. Regression testing post-patch should focus on IOMMU domain attachment/detachment cycles and device reset scenarios to ensure the fix does not introduce new issues in your workload profile.

Detection guidance

Monitor kernel logs for WARN_ON messages originating from __iommu_group_set_domain_nofail() or use-after-free (UAF) detection mechanisms like KASAN (Kernel Address Sanitizer). In production systems without KASAN, look for unscheduled kernel panics with stack traces mentioning IOMMU group management functions, particularly during device reset or VM device hotplug events. Correlate system reboots with device lifecycle events (device bind/unbind operations, VM migrations, or explicit device resets). Systems with audit logging enabled may record BPF or LSM hooks if they instrument memory management; review for unexpected domain structure accesses.

Why prioritize this

The 8.8 HIGH CVSS score reflects the vulnerability's combination of local privilege escalation capability (leading to kernel code execution), broad impact scope across multiple security properties (confidentiality, integrity, availability via the S:C vector), and low attack complexity. Although it requires local access, the ability to crash the kernel or potentially achieve privilege escalation through UAF exploitation makes it a priority for Linux-based infrastructure. The absence from the CISA KEV catalog does not diminish its severity; it indicates limited active exploitation in the wild as of the publication date, which should not delay patching efforts.

Risk score, explained

The CVSS 3.1 score of 8.8 (HIGH) is derived from: Attack Vector: Local (AV:L) — no network reachability, but not purely local-only as IOMMU events can be triggered through unprivileged user operations; Attack Complexity: Low (AC:L) — the race condition is reproducible without exotic conditions; Privileges Required: Low (PR:L) — unprivileged user can trigger IOMMU operations; User Interaction: None (UI:N) — no user action required beyond issuing commands; Scope: Changed (S:C) — affects other security domains (kernel memory, other processes); Confidentiality, Integrity, Availability: All High (C:H/I:H/A:H) — UAF can lead to information disclosure, code execution, or crash. The score appropriately reflects the severity for infrastructure systems but is somewhat mitigated by the local-only attack vector.

Frequently asked questions

Can this vulnerability be exploited remotely?

No. The vulnerability requires local access to the system (AV:L in CVSS terms). However, in cloud or shared hosting environments, any tenant with local shell access could potentially trigger it. Remote exploitation is not possible without first gaining local code execution through an unrelated vulnerability.

Does this affect non-IOMMU systems or systems without device hotplug?

The vulnerability specifically requires IOMMU hardware support and the triggering of concurrent device domain attachments, often during reset or hotplug scenarios. Systems with IOMMU disabled or in environments without PCIe device assignment or dynamic reset operations may not be exposed, though patching is still recommended for defense in depth.

What is the difference between this issue and typical use-after-free vulnerabilities?

This UAF is subtle: it occurs in kernel cleanup paths that are supposed to always succeed. The race condition isn't just about accessing freed memory, but about a domain pointer being freed while cleanup code still needs to reference it. The fix preserves the 'must succeed' semantics while preventing the UAF by allowing proper pointer updates during recovery.

If I cannot patch immediately, what operational mitigations exist?

If kernel patching cannot be deployed immediately, consider disabling IOMMU device hotplug (unbind/rebind) operations and VM device passthrough if your workload allows. However, this may severely limit functionality. A safer interim measure is to avoid concurrent device reset operations and schedule maintenance windows for device changes. Upstream to patching as soon as feasible.

This analysis is provided for informational and defensive security purposes. The vulnerability details, affected versions, and patch guidance are based on publicly available source data and vendor advisories as of the publication date. Organizations should verify patch applicability, test in non-production environments before deployment, and consult their Linux distribution's official security advisories for authoritative guidance. SEC.co makes no warranty regarding the completeness or accuracy of remediation steps; consult your vendor for supported upgrade paths and regression testing procedures. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).