CVE-2026-53283
Medium · 5.5CVSS
5.5
EPSS
0.2%
Published
Jun 26, 2026
CISA due date
—
Cloudanix analysis
Some Linux systems can crash while starting if the kernel mishandles certain hardware device information.
- Exploitation
- Local Privilege
- Attacker needs
- High Privilege
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- OS kernel
- Class
- Memory Corruption
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
The flaw is an out-of-bounds read in the Linux kernel AMD IOMMU device lookup path. During PCI/IOMMU initialization, the kernel computes a PCI device identifier and indexes the AMD IOMMU reverse-lookup table before confirming that the identifier is within the table bounds. If a PCI device is present whose BDF is not covered by the IVRS/IOMMU description, the kernel may read adjacent slab memory and treat that data as a struct amd_iommu pointer. In observed cases this causes a general protection fault during boot, resulting in a denial of service. Practical exploitation requires influence over the platform’s PCI/firmware/virtual hardware presentation rather than ordinary network access.
Why it matters to the business
Affected systems can fail to boot or crash during early kernel initialization when specific AMD IOMMU and PCI topology conditions are present. The most likely operational impact is service outage for Linux hosts or virtual machines after deploying an affected kernel, especially in virtualized or cloud environments where firmware tables and virtual PCI devices may not align. EPSS is very low, it is not in CISA KEV, and there is no public exploit maturity indicated, so urgency is primarily driven by exposure to AMD IOMMU-enabled systems and kernel rollout risk rather than active mass exploitation.
How an attack unfolds
An attacker or operator with control over virtual hardware, firmware tables, ACPI IVRS contents, or PCI device presentation can create a mismatch where a PCI device exists at a BDF value outside the range described by the AMD IOMMU IVRS data. During boot, the kernel registers the IOMMU and walks PCI devices. For each device, the AMD IOMMU probe path attempts to look up the owning IOMMU using the computed device identifier. Because the reverse-lookup helper does not validate the identifier before indexing the table, the lookup reads beyond the allocated table. The resulting adjacent memory is interpreted as an IOMMU structure pointer and dereferenced, commonly causing a boot-time general protection fault. In most realistic scenarios this is a denial-of-service condition caused by malicious or malformed platform configuration, not a remotely exploitable application-layer vulnerability.
How to fix it
Upgrade to a Linux kernel build that includes the upstream fix adding a bounds check in __rlookup_amd_iommu() before indexing the AMD IOMMU reverse-lookup table. If exact vendor fixed versions are not available, obtain the latest kernel security update from the operating system, distribution, cloud image, or appliance vendor. For systems that cannot be immediately patched, mitigations may include avoiding affected kernel versions, booting a known-good previous kernel, disabling AMD IOMMU only where operationally safe and acceptable, or correcting virtual hardware/firmware/IVRS configuration so all exposed PCI devices are properly described. Validate mitigation carefully because disabling IOMMU can reduce DMA isolation and may affect virtualization, passthrough, and device security features.
How to confirm the fix worked
Confirm the running kernel includes the fix from the vendor or upstream stable branch. Reboot affected hardware or VM profiles after patching and verify that PCI/IOMMU initialization completes without a general protection fault. Review boot logs for successful AMD IOMMU initialization and absence of crashes in amd_iommu_probe_device, __iommu_probe_device, iommu_device_register, amd_iommu_init, or pci_iommu_init. On virtualized platforms, compare PCI devices exposed to the guest with firmware/IVRS descriptions to ensure the topology is consistent. Where kernel package metadata is available, verify the installed kernel version is at or above the distribution’s fixed release.
Typical attack path
- Gain the ability to influence platform hardware description, hypervisor device model, firmware/ACPI IVRS data, or PCI device exposure.
- Present a PCI device whose BDF is not represented within the AMD IOMMU IVRS-described lookup range.
- Boot an affected Linux kernel with AMD IOMMU initialization enabled.
- Allow kernel PCI/IOMMU initialization to enumerate the malformed or mismatched device topology.
- Trigger an out-of-bounds reverse-lookup table access in the AMD IOMMU driver.
- Cause a kernel general protection fault during boot, preventing the system or VM from starting normally.
How to detect it
This issue is primarily detected through boot-time failure evidence rather than post-compromise artifacts. Review kernel ring buffers, persistent journal logs, serial console output, hypervisor console logs, crash dumps, and remote management console logs for general protection faults during early boot involving AMD IOMMU initialization. Key artifacts include stack traces referencing amd_iommu_probe_device, __iommu_probe_device, iommu_device_register, amd_iommu_init, pci_iommu_init, or messages showing PCI devices being added to IOMMU groups immediately before an Oops. Because successful exploitation normally results in a crash before normal services start, also check failed boot records, watchdog resets, crashkernel/kdump outputs, and cloud instance serial console logs. There are no reliable network indicators for this vulnerability, and evidence of exploitation will usually appear as a kernel boot crash correlated with malformed or mismatched PCI/IVRS device topology.
- Oops: general protection fault
- probably for non-canonical address
- RIP: 0010:amd_iommu_probe_device
- amd_iommu_probe_device+0x54/0x3a0
- __iommu_probe_device
- probe_iommu_group
- bus_for_each_dev
- iommu_device_register
- iommu_go_to_state
- amd_iommu_init
- pci_iommu_init
- Adding to iommu group
- gVNIC at 00:08.0
- devid 0x40
- IVRS
- rlookup_table
What your security team should do
- Inventory Linux systems running affected kernel builds on AMD IOMMU-enabled hosts or VM types, prioritizing systems that recently adopted kernels around the affected AMD IOMMU changes.
- Apply vendor kernel updates or move to a fixed kernel as part of normal emergency change processes for systems that fail to boot or that rely on virtualized PCI device presentation.
- For cloud or hypervisor-managed environments, validate VM instance families and images against provider advisories, especially where unusual PCI devices or accelerator endpoints are exposed.
- Retain at least one known-good bootable kernel entry during rollout so systems can recover if the affected kernel crashes during initialization.
- Monitor boot, console, kernel, and crash logs for AMD IOMMU general protection faults after kernel upgrades.
- Do not rely on disabling IOMMU as a broad workaround unless the security and operational consequences have been reviewed.
The record
In the Linux kernel, the following vulnerability has been resolved: iommu/amd: Bounds-check devid in __rlookup_amd_iommu() iommu_device_register() walks every device on the PCI bus via bus_for_each_dev() and calls amd_iommu_probe_device() for each. The inlined check_device() path computes the device's sbdf, calls rlookup_amd_iommu() to find the owning IOMMU, and only afterwards verifies devid <= pci_seg->last_bdf. __rlookup_amd_iommu() indexes rlookup_table[devid] with no bounds check of its own, so for a PCI device whose BDF is not described by the IVRS, the lookup reads past the end of the allocation before the caller's bounds check can run. This was harmless before commit e874c666b15b ("iommu/amd: Change rlookup, irq_lookup, and alias to use kvalloc()"): the table was a zeroed page-order allocation, so the over-read returned NULL and the caller's NULL check skipped the device. After that commit the table is a tight kvcalloc() and the over-read returns adjacent slab contents, which check_device() then dereferences as a struct amd_iommu *, causing a boot-time GPF. Seen on Google Compute Engine ct6e VMs, where the virtualized IVRS describes only the four TPU endpoints 00:04.0-07.0; the gVNIC at 00:08.0 (devid 0x40) indexes 56 bytes past the 456-byte allocation, into the adjacent kmalloc-512 slab object: pci 0000:00:04.0: Adding to iommu group 0 pci 0000:00:05.0: Adding to iommu group 1 pci 0000:00:06.0: Adding to iommu group 2 pci 0000:00:07.0: Adding to iommu group 3 Oops: general protection fault, probably for non-canonical address 0x3a64695f78746382: 0000 [#1] SMP NOPTI CPU: 0 UID: 0 PID: 1 Comm: swapper/0 Not tainted 6.18.22 #1 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 12/06/2025 RIP: 0010:amd_iommu_probe_device+0x54/0x3a0 Call Trace: __iommu_probe_device+0x107/0x520 probe_iommu_group+0x29/0x50 bus_for_each_dev+0x7e/0xe0 iommu_device_register+0xc9/0x240 iommu_go_to_state+0x9c0/0x1c60 amd_iommu_init+0x14/0x40 pci_iommu_init+0x16/0x60 do_one_initcall+0x47/0x2f0 Guard the array access in __rlookup_amd_iommu(). With the fix applied on 6.18.22, the gVNIC at 00:08.0 is skipped cleanly and the VM boots.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-112405 Pillow is a Python imaging library. CWE-476
- CVE-2026-112392 Pillow is a Python imaging library. CWE-476
- CVE-2026-100348 kin-openapi is a Go project for handling OpenAPI files. CWE-476
- CVE-2026-100349 kin-openapi is a Go project for handling OpenAPI files. CWE-476
- CVE-2026-109280 ImageMagick 7.1.0-20 before 7.1.2-32 contains a use after free vulnerability in the -fx… CWE-476
- CVE-2026-109272 ImageMagick 7.1.1-31 before 7.1.2-32 contains a NULL pointer dereference in the… CWE-476
- CVE-2026-109258 ImageMagick 7.1.0-20 before 7.1.2-32 contains an invalid memory free vulnerability in the… CWE-476
- CVE-2026-107655 A flaw was found in CUPS. CWE-476