From mboxrd@z Thu Jan 1 00:00:00 1970 From: AL-KERNEL To: kernel-cve@kernelcve.org Subject: [CVE-2026-52953][MODERATE 7.0] iommu/vt-d: Fix oops due to out of scope access Date: Fri, 26 Jun 2026 13:53:53 -0400 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-AL-KERNEL-CVE: CVE-2026-52953 X-AL-KERNEL-Priority: MODERATE 7.0 X-AL-KERNEL-Severity: MODERATE 7.0 X-AL-KERNEL-Base-Severity: MODERATE X-AL-KERNEL-KPANIC: YES X-AL-KERNEL-ActionableScore: 6 X-AL-KERNEL-ActionableScore-Lower: 4 X-AL-KERNEL-Commit: 88397fad7914ee74a7880fa5ce01f9eb6bfe0743 List-Id: CVE: CVE-2026-52953 Priority: MODERATE 7.0 AL-KERNEL base severity: MODERATE KPANIC flag: YES Patch: iommu/vt-d: Fix oops due to out of scope access Commit: 88397fad7914ee74a7880fa5ce01f9eb6bfe0743 Upstream patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=88397fad7914ee74a7880fa5ce01f9eb6bfe0743 Original CVE announcement: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-52953 Analysis date: Fri, 26 Jun 2026 13:53:53 -0400 ActionableScore: 6 ActionableScore lower bound: 4 Actionable bucket: Actionable Moderate at minimum Manual review required: YES Summary: An invalid IOMMU VT-d domain downcast can treat the global blocked domain as a dmar_domain during VFIO PCI teardown, causing out of scope metadata access and a host kernel oops, with weak but defensible concern for memory corruption beyond DoS. ====================================================================== ABOUT THIS REPORT ====================================================================== The original Linux kernel CVE announcement for CVE-2026-52953 is available here: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-52953 The original announcement does not normally provide a security severity estimate, CVSS assessment, or enough information to determine whether the reported kernel bug represents a practically relevant security issue. This report was generated by AL-KERNEL, an AI-assisted Linux kernel vulnerability analysis system developed by Alexander Larkin. It combines an autonomous classifier with LLM-assisted technical analysis and a separate ActionableScore mechanism. The purpose of this report is to prioritize Linux kernel CVEs before manual review, identify cases that require prompt investigation, and support automatic closure of issues that are unlikely to have meaningful security impact. Published priority for this report: MODERATE 7.0 Manual review required: YES A detailed explanation of the methodology and priority rules is included at the end of this message. ====================================================================== AL-KERNEL CLASSIFICATION RESULT ====================================================================== CVE-2026-52953 MODERATE CHECK Maybe valid. Check manually. Hints by AL-KERNEL: The best (paranoid) CVSS is 'AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H';CWE-704;CWE-843;*CWE-787;Other CVSS 'AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H';BEST CVSS score: '7';DESCR 'IOMMU VT-d domain_remove_dev_pasid can incorrectly treat the global blocked domain as a dmar_domain even though that dummy domain has no dmar_domain metadata. During VFIO PCI teardown, for example when a QEMU process with a passed through device is killed, the reset path can call into intel_nested_set_dev_pasid and then access fields beyond the real iommu_domain object. This can trigger a host kernel oops or crash. For the CVSS the PR:L is used because practical triggering requires local ability to control or terminate a VM or process that has delegated VFIO or iommufd access, rather than full host administrator control in all deployments. The issue is not network reachable by packet traffic. Impact is at least local denial of service and the paranoid score treats the out-of-scope structure access as a memory corruption candidate requiring manual review.';YES REQUIRES MANUAL CHECK; ,and ActionableScore result is Actionable Moderate at minimum (with actual score 5) MAYBE OOB DMAorINTERRUPT HARDWARE KPANIC MEMORY - - checked ====================================================================== ACTIONABLESCORE ANALYSIS ====================================================================== ActionableScore=6 ActionableScoreLower=4 ## 1. ActionableScore * Conservative score: 4 * Paranoid score: 6 * Final recommended bucket: **Actionable Moderate at minimum** ## 2. Signal breakdown Conservative signals: * Local delegated trigger: +1 Triggering is local and tied to VFIO iommufd QEMU teardown with PCI passthrough. It does not require packet based remote reachability. * Memory corruption, Weak/indirect corruption candidate: +1 The blocked IOMMU domain is a dummy iommu_domain without embedded dmar_domain metadata, but the code still applies to_dmar_domain(). This is invalid struct interpretation and out of scope object access. * Reliable kernel crash / strong DoS: +1 The commit shows a concrete host kernel oops during QEMU process termination. * Privileged kernel/device-management memory corruption path: +1 The fault occurs in IOMMU VT-d, PASID, VFIO, PCI reset, and device teardown paths, which are highly trusted device-management contexts. Paranoid additional signals: * Weak LPE concern: +1 The invalid downcast can make later code operate on bogus fields such as locks or metadata. No controlled primitive is demonstrated, but this is more concerning than a simple NULL dereference. * Integrity impact plausible: +1 In the paranoid interpretation, out of scope access inside IOMMU metadata handling could become a limited corruption sink depending on object layout and call path. Not counted: * Remote reachable: +0 No realistic network packet trigger is shown. * Strong corruption primitive: +0 There is no demonstrated attacker-controlled overwrite, reclaim primitive, UAF, or arbitrary write. * Full admin penalty: +0 VFIO setup is privileged, but practical triggering may be by a reduced-privilege QEMU owner or service account with delegated VFIO or iommufd access, not necessarily full host root. ## 3. Reachability analysis The bug is triggered during VFIO PCI device teardown, for example when a QEMU process with a passed-through device is killed. The immediate caller chain goes through vfio_pci_core_close_device(), PCI FLR/reset, pci_dev_reset_iommu_done(), and intel_nested_set_dev_pasid(). In typical deployments, creating such a setup requires administrator involvement, but once VFIO or iommufd access is delegated, a lower-privileged VM process owner or service account may be able to trigger the teardown path. Containers and namespaces may reduce the effective privilege requirement if device access is delegated into a container or service environment. The path is not default exposed to ordinary users on most systems, but it is realistic on virtualization hosts using VFIO passthrough. ## 4. Severity interpretation This is stronger than an ordinary Moderate crash because the root cause is invalid interpretation of an IOMMU domain object and access beyond the real object layout. Realistically, the demonstrated impact is host kernel crash / DoS during VFIO teardown. Theoretical memory corruption impact is plausible enough for manual review, but the patch does not demonstrate a strong LPE primitive such as controlled overwrite, UAF reclaim, or arbitrary write. This should be treated as an Actionable Moderate at minimum, with Important-candidate review depending on whether further analysis shows controllable corruption through the bogus dmar_domain access. ## 5. One-sentence report phrase An invalid IOMMU VT-d domain downcast can treat the global blocked domain as a dmar_domain during VFIO PCI teardown, causing out of scope metadata access and a host kernel oops, with weak but defensible concern for memory corruption beyond DoS. ## 6. Manual review recommendation MANUAL CHECK REQUIRED The bug is not a simple NULL dereference or pure resource exhaustion issue. It involves invalid object interpretation in a privileged IOMMU/VFIO device-management path, and the crash site suggests access through bogus structure fields, so memory corruption and LPE feasibility should be reviewed manually. ====================================================================== UPSTREAM PATCH SUMMARY ====================================================================== Patch: iommu/vt-d: Fix oops due to out of scope access Commit: 88397fad7914ee74a7880fa5ce01f9eb6bfe0743 Upstream URL: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=88397fad7914ee74a7880fa5ce01f9eb6bfe0743 Commit description: Below oops triggers when kill QEMU process: Oops: general protection fault, probably for non-canonical address 0x7fffffff844eaaa7: 0000 [#1] SMP NOPTI Call Trace: do_raw_spin_lock+0xaa/0xc0 _raw_spin_lock_irqsave+0x21/0x40 domain_remove_dev_pasid+0x52/0x160 intel_nested_set_dev_pasid+0x1b9/0x1e0 __iommu_set_group_pasid+0x56/0x120 pci_dev_reset_iommu_done+0xe3/0x180 pcie_flr+0x65/0x160 __pci_reset_function_locked+0x5b/0x120 vfio_pci_core_close_device+0x63/0xe0 [vfio_pci_core] vfio_df_close+0x4f/0xa0 vfio_df_unbind_iommufd+0x2d/0x60 vfio_device_fops_release+0x3e/0x40 __fput+0xe5/0x2c0 task_work_run+0x58/0xa0 do_exit+0x2c8/0x600 do_group_exit+0x2f/0xa0 get_signal+0x863/0x8c0 arch_do_signal_or_restart+0x24/0x100 exit_to_user_mode_loop+0x87/0x380 do_syscall_64+0x2ff/0x11e0 entry_SYSCALL_64_after_hwframe+0x76/0x7e The global static blocked domain is a dummy domain without corresponding dmar_domain structure, accessing beyond iommu_domain structure triggers oops easily. Fix it by return early in domain_remove_dev_pasid() like identity domain. Fixes: 7d0c9da ("iommu/vt-d: Add set_dev_pasid callback for dma domain") Cc: stable@vger.kernel.org Signed-off-by: Zhenzhong Duan Reviewed-by: Kevin Tian Link: https://lore.kernel.org/r/20260421031347.1408890-1-zhenzhong.duan@intel.com Signed-off-by: Lu Baolu Signed-off-by: Joerg Roedel Signed-off-by: Greg Kroah-Hartman Changed files: drivers/iommu/intel/iommu.c Diff excerpt: Not included in this email. See the upstream URL for the full patch. Full patch: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=88397fad7914ee74a7880fa5ce01f9eb6bfe0743 ====================================================================== DETAILED REPORT METHODOLOGY ====================================================================== The original Linux kernel CVE announcement for CVE-2026-52953 can be found here: https://lore.kernel.org/linux-cve-announce/?q=CVE-2026-52953 The original CVE announcement normally does not include a security-level estimate. In particular, it may not contain a CVSS assessment, an impact level, or enough information to determine whether the reported bug is a practically relevant security issue. One purpose of this parallel CVE list is to provide that missing technical and prioritization information. The original goal of the AL-KERNEL project was to prioritize Linux kernel CVE analysis automatically before manual review. The system can also help identify non-security issues that may be suitable for automatic closure. This report was generated by AL-KERNEL, an AI-assisted Linux kernel vulnerability analysis system developed by Alexander Larkin. The first analysis stage combines an autonomous classifier with additional LLM-based analysis. The autonomous classifier runs locally on a CPU and is based on a backpropagation neural network. Together, these mechanisms produce a technical vulnerability description, identify likely weakness types, estimate CVSS severity, and provide input for ActionableScore. Two CVSS estimates are retained because incomplete kernel vulnerability information often permits more than one defensible interpretation: Conservative CVSS vector: AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H The Best / paranoid CVSS vector: AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H The Best / paranoid CVSS score: 7 The conservative vector represents a lower-impact interpretation. The Best/paranoid vector intentionally represents a plausible upper-bound interpretation and should not automatically be treated as demonstrated real-world impact. CVSS may also need to be adjusted for a particular Linux deployment, because actual reachability, privileges, enabled kernel configuration, hardware, namespaces, exposed device nodes, and other environmental conditions can differ significantly between systems. A separate ActionableScore mechanism evaluates practical remediation urgency. Its analysis may include reachability, attack prerequisites, subsystem exposure, memory-corruption characteristics, denial-of-service reliability, and possible confidentiality, integrity, or privilege-escalation impact. Conservative ActionableScore: 4 Paranoid ActionableScore: 6 The final base severity is taken directly from the second tab-separated field of the AL-KERNEL classification result. ActionableScore does not replace or independently override that final AL-KERNEL decision, and if ActionableScore adjusted impact level of ALKERNEL, then you would see self-readable flags above like INCREASED_TO_HIGH_BASED_ON_ACTIONABLESCOREHIGHEREQTHAN7. For an AL-KERNEL result of MODERATE, this report uses the following additional presentation split: ActionableScore below 5 -> MODERATE REGULAR ActionableScore 5 or more -> MODERATE 7.0 The distinction between MODERATE REGULAR and MODERATE 7.0 makes it possible to identify Moderate issues that should receive manual analysis and fixes before lower-priority MODERATE REGULAR issues. In many cases, MODERATE REGULAR fixes may wait for a later rebase or routine update. There is one override in which MODERATE REGULAR becomes MODERATE 7.0 even when the ActionableScore is below 5. When the AL-KERNEL result contains the KPANIC flag, a MODERATE result is always presented as MODERATE 7.0. The KPANIC flag selected with few regexps without usage of AI at all, so it helps to detect cases when Kernel Crash happens and similar (to filter False-Negative results from the LLM usage). KPANIC indicates that a reliable kernel crash, kernel panic, or similarly serious kernel availability impact was identified by the classification workflow. AL-KERNEL base severity for this report: MODERATE KPANIC detected for this report: YES Published priority for this report (same as in Subject): MODERATE 7.0 These results are intended to support engineering triage. They are machine-generated estimates, and cases marked for manual review should be validated by a human security engineer before final disposition. For more info read docs linked from here: https://kernelcve.org/ (and you can submit you own patch there to generate such a report for non-existant CVE-id yet). Note that in many cases this AI tool selects higher severity, than real is (means you can expect Importants instead of Moderate 7.0 or Moderates 7.0 instead of regular Moderates). If you see such cases, please use reply email interface to add additional manual analyses info to this particular CVE. And please, please, let me know when you see Lows instead of Importants or Important instead of Low (because particular for such cases I need to tune this AI tool to make it better for this one and next similar). My contact email for such notifications is alexanjelausa@gmail.com (and both send reply to CVE record itself too and see "reply" button below for howto reply).