Skip to main content

Linux Kernel EUVDEUVD-2026-39888

| CVE-2026-53283 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-06-26 Linux GHSA-gv9j-3945-3x3r
5.5
CVSS 3.1 · NVD
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Boot kernel with AMD IOMMU enabled
  2. Delivery
    PCI bus enumeration calls iommu_device_register()
  3. Exploit
    iommu probe walks device with BDF absent from IVRS
  4. Execution
    __rlookup_amd_iommu() indexes past end of kvcalloc rlookup_table
  5. Persist
    Adjacent slab object contents cast as struct amd_iommu *
  6. Impact
    GPF on dereference halts boot

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

This vulnerability requires three concurrent conditions: (1) the system must use AMD IOMMU, meaning the CPU and platform must be AMD-based and the kernel must have booted with AMD IOMMU enabled (the default when IVRS is present in ACPI tables); (2) the running kernel must be at or after commit e874c666b15b but before the fix commits, corresponding to versions 6.16 through 6.18.32 or 7.0.x prior to 7.0.10; and (3) at least one PCI device must be present whose BDF (Bus:Device.Function) produces a devid value exceeding the bounds of the rlookup_table, which occurs when the ACPI IVRS table describes fewer devices than the number physically or virtually present. This last condition is typical of virtualized environments where the hypervisor synthesizes a minimal IVRS covering only IOMMU-managed endpoints. Exploitation is constrained by the purely local-hardware nature: no network reachability, no user credentials, and no attacker-controlled input are involved - the crash is triggered automatically by kernel boot-time PCI enumeration. The impact is limited entirely to availability (system fails to boot); there is no confidentiality or integrity impact confirmed.

Impact

The NVD CVSS 3.1 score of 5.5 (AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H) accurately captures the local-only, availability-only nature of this bug. The EPSS score of 0.17% (6th percentile) reflects the extremely low probability of traditional exploitation - this is a hardware/configuration-triggered regression rather than an attacker-weaponizable flaw. There is no CISA KEV listing and no known public exploit. However, the practical severity in affected environments is higher than the base score implies: the crash occurs during kernel initialization before any user-space process runs, meaning affected VMs simply fail to boot - a complete availability loss. In cloud environments like GCE where virtualized IVRS tables omit non-IOMMU-managed devices, this bug is triggered deterministically on every boot of an affected kernel version. The signal mismatch - modest CVSS but severe operational impact in specific cloud configurations - warrants elevated priority for operators running AMD IOMMU with partial IVRS coverage on kernels 6.16 through 6.18.32 or 7.0.x before 7.0.10. No conflicting data between sources was identified.

Exploit ScenarioDerived

A virtual machine running Linux 6.16 through 6.18.32 on a hypervisor that exposes an AMD IOMMU with a partial IVRS table - such as a Google Compute Engine ct6e instance whose IVRS covers only TPU endpoints 00:04.0-07.0 while a gVNIC adapter sits at 00:08.0 - triggers the bug automatically at boot. During iommu_device_register(), the gVNIC's devid 0x40 indexes 56 bytes past the 456-byte rlookup_table allocation into an adjacent kmalloc-512 slab object, whose contents are dereferenced as a struct amd_iommu pointer, producing a non-canonical address GPF and halting the boot sequence. No attacker input or privileged user action is required; the crash is fully deterministic given the hardware and kernel version combination. No public proof-of-concept code exists.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Jul 08, 2026

Boot-time kernel crash in Linux 6.16+ on AMD IOMMU-equipped systems causes a General Protection Fault when a PCI device whose Bus:Device.Function address is absent from the ACPI IVRS table is encountered during IOMMU initialization. The root cause is a missing bounds check in __rlookup_amd_iommu() that was latent until commit e874c666b15b changed the rlookup_table allocation from a zeroed page-order block (which returned NULL on overrun) to a tight kvcalloc(), causing adjacent slab contents to be dereferenced as a valid struct amd_iommu pointer. The result is a non-recoverable GPF at boot time, confirmed in production on Google Compute Engine ct6e VMs; no public exploit code and no CISA KEV listing exist at time of analysis.

RemediationAI

The primary fix is to upgrade to Linux 6.18.33, 7.0.10, or 7.1 (mainline), which introduce a bounds check in __rlookup_amd_iommu() before indexing rlookup_table[devid]. The upstream fix commits are available at https://git.kernel.org/stable/c/f0a0f01787ecece814414b0665df879b69849d09 (6.18 series), https://git.kernel.org/stable/c/07d0f496fe7ec5abe3bee7e38be709521567bb33 (7.0 series), and https://git.kernel.org/stable/c/79db4cbab81f07ce69a93d379ebd40d3709ecfb2. For systems that cannot be immediately patched, a targeted workaround is to disable AMD IOMMU at boot by passing the kernel parameter amd_iommu=off; this eliminates the crash but also disables IOMMU protections for DMA isolation, which may be unacceptable in security-sensitive environments. Alternatively, ensuring the ACPI IVRS table in the VM definition enumerates all PCI devices (so no devid exceeds the table bounds) prevents the overrun - cloud operators managing VM firmware or BIOS configurations may be able to apply this without a kernel upgrade. Distribution vendors including Canonical (Ubuntu) and Red Hat are expected to backport the fix; check vendor errata channels.

Affected VersionsENISA

Linux 6.16
Linux patch: 6.18.33
Linux patch: 7.0.10
Linux patch: 7.1
Linux e874c666b15bcb6280c4e747d8de3879bb728829 <f0a0f01787ecece814414b0665df879b69849d09
Linux e874c666b15bcb6280c4e747d8de3879bb728829 <07d0f496fe7ec5abe3bee7e38be709521567bb33
Linux patch: 0
Linux e874c666b15bcb6280c4e747d8de3879bb728829 <79db4cbab81f07ce69a93d379ebd40d3709ecfb2

Affected Packages

euvd linux no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The AMD IOMMU subsystem in the Linux kernel maintains a rlookup_table array indexed by PCI device ID (devid, derived from Bus:Device.Function). During iommu_device_register(), bus_for_each_dev() walks all PCI devices and calls amd_iommu_probe_device() for each; the inlined check_device() path calls __rlookup_amd_iommu() before performing the devid <= pci_seg->last_bdf bounds check. The function unconditionally returns rlookup_table[devid] with no length guard. Prior to commit e874c666b15b, the table was a zeroed page-order allocation so an overrun produced a NULL return, which the caller's NULL check handled safely. After that commit the allocation is a precise kvcalloc(), meaning out-of-bounds reads land in an adjacent kmalloc-512 slab object whose contents are then cast and dereferenced as struct amd_iommu *, triggering a General Protection Fault. The CWE-476 (NULL Pointer Dereference) classification is slightly imprecise; the root cause is more accurately an out-of-bounds array read (CWE-125) whose garbage result is subsequently dereferenced as a pointer. The affected CPE is cpe:2.3:a:linux:linux covering kernels from the introduction of commit e874c666b15b through the fix commits.

Know when Canonical gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

NVD PRIMARY 5.5 MEDIUM
AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 5.5 MEDIUM

Local vector confirmed; crash triggered at boot by hardware configuration with no confidentiality or integrity impact, only total availability loss.

3.1 AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
SUSE MEDIUM
Red Hat 5.5 MEDIUM

Primary rating from NVD.

CVSS VectorNVD

Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

4
CVSS changed
Jul 08, 2026 - 04:07 NVD
5.5 (MEDIUM)
Patch available
Jun 26, 2026 - 21:02 EUVD
CVE Published
Jun 26, 2026 - 19:40 nvd
MEDIUM 5.5
CVE Published
Jun 26, 2026 - 19:40 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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.

Threat Intelligence Overview

EPSS Score
0.2%
Top 94% exploitable
Prevalence
Ubiquitous
core OS kernel deployed across virtually all Linux cloud and server environments
Data Quality
5 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
High

Priority Score

28
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +28
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2019-11043 CRITICAL POC
9.8 Oct 28

In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it

CVE-2014-6271 CRITICAL POC
9.8 Sep 24

GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2016-3714 HIGH POC
8.4 May 05

The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.

CVE-2017-12617 HIGH POC
8.1 Oct 04

When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT

CVE-2016-8735 CRITICAL POC
9.8 Apr 06

Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8

CVE-2014-7169 CRITICAL POC
9.8 Sep 25

GNU Bash through 4.3 bash43-025 processes trailing strings after certain malformed function definitions in the values of

CVE-2014-0160 HIGH POC
7.5 Apr 07

The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe

CVE-2016-5195 HIGH POC
7.0 Nov 10

Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by lev

CVE-2013-2423 LOW POC
3.7 Apr 17

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 17 and earlier, and

CVE-2023-4911 HIGH POC
7.8 Oct 03

Local privilege escalation in the GNU C Library (glibc) dynamic loader ld.so allows unprivileged local users on affected

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 15 SP7 Not-Affected

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy