Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-52953

CVE-2026-52953: Linux Kernel IOMMU/VT-d Vulnerability

CVE-2026-52953 is an out-of-scope access flaw in the Linux kernel IOMMU/VT-d subsystem that causes kernel oops when terminating QEMU processes. This article covers the technical details, affected versions, and patches.

Published:

CVE-2026-52953 Overview

CVE-2026-52953 is a Linux kernel vulnerability in the Intel VT-d IOMMU driver (iommu/vt-d). The flaw causes a general protection fault when the kernel performs out-of-scope memory access on the global static blocked domain. The blocked domain is a dummy iommu_domain without a corresponding dmar_domain structure, so reading fields beyond iommu_domain produces a non-canonical address dereference. The oops triggers reliably when a QEMU process using VFIO passthrough is killed, during PCI function-level reset (FLR) and PASID teardown in domain_remove_dev_pasid().

Critical Impact

Local users with permission to run VFIO-backed virtual machines can crash the host kernel by terminating a QEMU process, resulting in denial of service.

Affected Products

  • Linux kernel builds containing the Intel VT-d nested PASID code path in domain_remove_dev_pasid()
  • Hosts using VFIO PCI passthrough with QEMU and Intel IOMMU
  • Stable kernel branches prior to the fix commits referenced in kernel.org

Discovery Timeline

  • 2026-06-24 - CVE-2026-52953 published to NVD
  • 2026-06-24 - Last updated in NVD database

Technical Details for CVE-2026-52953

Vulnerability Analysis

The vulnerability is a kernel out-of-bounds read in the Intel VT-d driver. The domain_remove_dev_pasid() function assumes the iommu_domain it receives is embedded in a larger dmar_domain structure and accesses fields past the end of iommu_domain. When the domain passed in is the global static blocked domain, no dmar_domain wrapper exists, so the access lands on unrelated memory. The reported oops shows a general protection fault at a non-canonical address 0x7fffffff844eaaa7 while taking a spinlock inside the bogus structure.

The call chain originates in userspace process exit. When QEMU is killed, vfio_device_fops_release() triggers vfio_df_unbind_iommufd() and vfio_pci_core_close_device(). The device reset path invokes pcie_flr() followed by pci_dev_reset_iommu_done(), which calls __iommu_set_group_pasid() and then intel_nested_set_dev_pasid(). That handler eventually calls domain_remove_dev_pasid() on the blocked domain, which dereferences out-of-scope memory and panics.

Root Cause

The root cause is missing type discrimination in domain_remove_dev_pasid(). The function already returns early for the identity domain but lacks an equivalent early return for the blocked domain. Because the blocked domain is a global static iommu_domain without an enclosing dmar_domain, any container-of style access produces an invalid pointer. The fix adds an early return for the blocked domain, matching the identity domain handling.

Attack Vector

The attack vector is local. A user able to launch and terminate a QEMU virtual machine that uses VFIO PCI passthrough with PASID can reach the vulnerable path by killing the QEMU process during device teardown. No remote interaction is required, and the resulting impact is a host kernel oops or panic.

No verified public exploit code is available. See the upstream commits for the corrected logic: Kernel commit 1e659db4, Kernel commit 88397fad, and Kernel commit a6dea58d.

Detection Methods for CVE-2026-52953

Indicators of Compromise

  • Kernel oops messages referencing domain_remove_dev_pasid, intel_nested_set_dev_pasid, or do_raw_spin_lock in the call trace.
  • General protection faults with non-canonical addresses logged immediately after a QEMU or VFIO-bound process exits.
  • Unexpected host reboots or hangs correlated with virtual machine shutdown events using PCI passthrough.

Detection Strategies

  • Parse dmesg and /var/log/kern.log for general protection fault entries whose stack includes vfio_pci_core_close_device and pcie_flr.
  • Track kernel version inventory across hypervisor hosts and flag systems running unpatched Intel VT-d code paths.
  • Correlate VM lifecycle events from libvirt or QEMU with kernel crash dumps to identify reproducible triggers.

Monitoring Recommendations

  • Enable kdump on hypervisor hosts to capture vmcores for any crash inside the IOMMU subsystem.
  • Alert on repeated host unavailability following VFIO device unbind operations.
  • Audit which local users and service accounts have permission to manage QEMU processes and VFIO device files.

How to Mitigate CVE-2026-52953

Immediate Actions Required

  • Apply the upstream kernel fixes from the stable trees referenced in the kernel.org commits to all affected hypervisor hosts.
  • Restrict access to /dev/vfio/* and QEMU management interfaces to trusted administrators only.
  • Schedule a controlled reboot after patching to ensure the corrected domain_remove_dev_pasid() logic is active.

Patch Information

The fix returns early in domain_remove_dev_pasid() when the incoming domain is the blocked domain, mirroring the existing identity domain handling. Patches are available in the stable kernel commits 1e659db4, 88397fad, and a6dea58d. Distribution kernels should pick up these commits in their next security update.

Workarounds

  • Avoid configuring nested PASID with VFIO PCI passthrough until the host kernel is patched.
  • Disable Intel VT-d nested translation in guest configurations on hosts that cannot be patched immediately.
  • Limit the ability to terminate QEMU processes to administrators, reducing accidental triggering of the teardown path.
bash
# Verify the running kernel and check for the fix
uname -r
# After updating, reboot and confirm Intel IOMMU is active
dmesg | grep -i "DMAR\|IOMMU enabled"
# Review VFIO device permissions
ls -l /dev/vfio/

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.