Skip to main content

Linux Kernel EUVDEUVD-2026-80298

| CVE-2026-89777 HIGH
2026-09-16 Linux GHSA-552v-qphj-5fjg
8.8
CVSS 3.1 · Vendor: Linux
View

Attack ChainAIDerived

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

  1. Access
    Access VFIO device as authorized operator
  2. Delivery
    Induce ENOMEM during MSI perm init
  3. Exploit
    Reopen device reusing freed msi_perm
  4. Execution
    Dereference freed function pointers via config read
  5. Impact
    Execute code in kernel context / escalate privileges

Vulnerability Assessment

Exploitation Conditions

Requires local access to a VFIO passthrough device node (typically /dev/vfio/*), i.e., a user or process granted PCI passthrough rights for VMs or userspace drivers - this is not present on default general-purpose systems. Exploitation further requires triggering the -ENOMEM error path in alloc_perm_bits()/init_pci_cap_msi_perm() during a failed device open (inducing a kernel allocation failure via memory pressure or fault injection), then re-opening the same persistent vfio_pci_core_device to hit the reuse UAF, or closing it to hit the double free. Limiting factors: no remote vector, requires the vfio-pci driver in use, requires device-open privileges, and requires the attacker to force an allocation failure - a non-trivial precondition that reduces reliability.

Impact

This is a genuine kernel memory-corruption bug (use-after-free plus double-free of vdev->msi_perm in the vfio-pci config path), not a paper-tiger high-CVSS issue, but its real-world priority is moderated by access prerequisites. The vendor CVSS of 8.8 (AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H) correctly captures a local, low-privilege attacker achieving full C/I/A impact with scope change - plausible because a UAF that dereferences freed perm->readfn/writefn function pointers can be steered toward arbitrary kernel code execution / privilege escalation. However, exploitation is not as easy as AC:L implies: the freed-then-reused state is only reached after init_pci_cap_msi_perm()->alloc_perm_bits() returns -ENOMEM, so an attacker must reliably induce a kernel allocation failure (memory pressure or fault injection) during device open - a real barrier that argues for AC:H. EPSS is low (0.21%, 11th percentile), there is no CISA KEV entry and no public exploit, so this is a patch-in-normal-cycle item rather than an emergency. Note also a data conflict: the input Tags label this 'Information Disclosure,' which contradicts the C:H/I:H/A:H memory-corruption nature of a UAF/double-free - treat the tag as wrong, not the vector. CWE is 'N/A' in the input but the description is unambiguously a use-after-free (CWE-416).

Exploit ScenarioDerived

A local user who has been granted access to a VFIO device (e.g., a VM/userspace-driver operator with rights to /dev/vfio) opens a passthrough PCI device while inducing memory pressure so that MSI permission-table initialization fails with -ENOMEM, leaving a dangling freed vdev->msi_perm. On a subsequent open the stale pointer is reused and MSI config reads dereference freed function pointers, and on device close the same object is freed again. No public exploit code exists, but the KASAN reproducer in the report shows the crash is directly reachable via a pread on the device fd.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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 – Sep 16, 2026

A memory-corruption flaw in the Linux kernel's vfio-pci driver (vfio/pci/vfio_pci_config.c) allows a local user holding access to a VFIO passthrough device node (typically /dev/vfio/*) to trigger a use-after-free and subsequent double-free of the per-device MSI permission table (vdev->msi_perm). Exploitation requires attacker-induced failure of the allocation path (init_pci_cap_msi_perm()/alloc_perm_bits() returning -ENOMEM during a failed device open, e.g. under memory pressure or fault injection), after which re-opening the same persistent vfio_pci_core_device reuses the freed perm_bits object - dereferencing its readfn/writefn function pointers inside vfio_pci_config_rw_single() - while closing it hits kfree() on an already-freed object in vfio_config_free(). There is no public exploit code identified and no indication of active exploitation at time of analysis; EPSS is low (0.21%, ~11th percentile), and the memory-pressure precondition plus the requirement for VFIO passthrough privileges materially limits real-world reliability, even though the assessed CVSS:3.1:AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H score is high.

RemediationAI

Apply the vendor-released kernel patches: upgrade to Linux 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.110, 6.18.52, 7.2.6 or 7.3-rc1 (or newer) as appropriate for your branch; the individual stable fixes are published at https://git.kernel.org/stable/c/eb84cd81040e58dd05ac190f561f2115e3367249, https://git.kernel.org/stable/c/f0eea8f9013676b42289ec35941e848b8a543e19, https://git.kernel.org/stable/c/d665a1688af7f8fefd7c0eb04f2a37122ce007f4, https://git.kernel.org/stable/c/25cdd2a492d868cff1e519a60fe282909c52d385, https://git.kernel.org/stable/c/812f1db7f0755a19ef16ecdc5cec51bcabc5eda5, https://git.kernel.org/stable/c/533d0c5feef85ee6404b9f41d5564fac6971a008, https://git.kernel.org/stable/c/fda8fb7e8179561693a786a7af593f6b944a21c1 and https://git.kernel.org/stable/c/dc77acfeb979dded39b247b60fef0399536bfa77, with the NVD advisory at https://nvd.nist.gov/vuln/detail/CVE-2026-89777. Until the patched kernel is deployed, the most effective compensating control is to remove vfio-pci passthrough exposure from untrusted workloads: unbind the vfio-pci driver from devices and drop PCI passthrough configuration for guests, or, if passthrough must remain, tighten permissions on /dev/vfio/* and /dev/vfio/vfio (for example via a systemd/udev rule restricting group ownership and mode 0660) so that only fully trusted, privileged services can open the device node - trade-off being that this breaks legitimate VM and userspace-driver passthrough for those users. Because the trigger is a forced allocation failure in the vfio-pci config-init path, hardening against memory-exhaustion attacks (cgroup memory limits, overcommit tuning, disabling any fault-injection interfaces such as CONFIG_FAULT_INJECTION / debugfs fail_page_alloc) reduces the likelihood of reaching the vulnerable error path but does not eliminate it and has the side effect of masking useful diagnostic tooling. Selectively blocking the vfio-pci module (e.g. a modprobe blacklist) is a blunt mitigation that eliminates the attack surface entirely at the cost of losing all VFIO-based device passthrough functionality on the host.

Affected VersionsENISA

Linux be363e27ec3c3a99793da2be6c07eafb95709c6b
Linux f1b10ba5739440ca51d66f0b2949cead88d2dd02
Linux patch: 5.10.270
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <dc77acfeb979dded39b247b60fef0399536bfa77
Linux patch: 6.12.110
Linux patch: 6.18.52
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <eb84cd81040e58dd05ac190f561f2115e3367249
Linux ac370e3d1f3b01519d2705cd5815d1c9d0a8812b
Linux 4.9.203 <4.10
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <25cdd2a492d868cff1e519a60fe282909c52d385
Linux patch: 6.6.157
Linux patch: 5.15.221
Linux patch: 7.3-rc1
Linux 4.19.85 <4.20
Linux 4.14.155 <4.15
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <d665a1688af7f8fefd7c0eb04f2a37122ce007f4
Linux 4.20
Linux patch: 6.1.188
Linux patch: 7.2.6
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <533d0c5feef85ee6404b9f41d5564fac6971a008
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <812f1db7f0755a19ef16ecdc5cec51bcabc5eda5
Linux dde3433de9a067a33d67d65b9093cad3e043e49e
Linux patch: 0
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <fda8fb7e8179561693a786a7af593f6b944a21c1
Linux 30ea32ab1951c80c6113f300fce2c70cd12659e4 <f0eea8f9013676b42289ec35941e848b8a543e19
Linux 4.4.203 <4.5

Affected Packages

euvd linux fix: 4.5, 4.10, 4.15, 4.20

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 vfio-pci driver emulates PCI configuration space for devices handed to userspace (VMs, DPDK-style drivers). MSI/MSI-X capability accesses are filtered through a per-device permission table, struct perm_bits, whose readfn/writefn callbacks and permission masks are built lazily by vfio_msi_cap_len() -> init_pci_cap_msi_perm() using kmalloc_obj(..., GFP_KERNEL_ACCOUNT) and cached in vdev->msi_perm. When init_pci_cap_msi_perm() fails (allocation failure inside alloc_perm_bits()), the error path kfree()s vdev->msi_perm but does not NULL it - unlike the NULL-after-free discipline already applied in free_perm_bits() and vfio_config_free(). Because struct vfio_pci_core_device is per-device and persists across open/close cycles, and because vfio_config_init()'s error path returns without calling vfio_config_free(), the dangling pointer survives the failed open. Two distinct corruptions follow: (1) the next vfio_config_init() short-circuits at 'if (vdev->msi_perm) return len;', reusing the freed slab and calling through stale perm->readfn/perm->writefn pointers during MSI config reads/writes; and (2) a later vfio_config_free() double-frees the object, producing a slab corruption / general protection fault in kfree (KASAN reports slab-use-after-free at vfio_pci_config.c:1961 and a double free at vfio_pci_config.c:1861). Root-cause class: CWE-416 (use-after-free) combined with CWE-415 (double free). The CVSS vector confirms local access (AV:L) and low privileges (PR:L) but the more realistic assessment applies AC:H, since inducing an allocation failure is a non-trivial, less reliable precondition than the CNA's AC:L assumption.

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

Vendor (Linux) PRIMARY 8.8 HIGH
AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
vuln.today AI 7.8 HIGH

Local vfio device access (PR:L, AV:L); AC:H because the bug only triggers after forcing an -ENOMEM allocation failure; kernel UAF from a confined userspace context gives S:C and full C/I/A.

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

Primary rating from Vendor (Linux).

CVSS VectorVendor: Linux

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

Lifecycle Timeline

4
CVSS changed
Sep 16, 2026 - 15:22 NVD
8.8 (HIGH)
Patch available
Sep 16, 2026 - 10:02 EUVD
CVE Published
Sep 16, 2026 - 08:48 cve.org
HIGH 8.8
CVE Published
Sep 16, 2026 - 08:48 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

In the Linux kernel, the following vulnerability has been resolved:

vfio/pci: clear vdev->msi_perm after freeing it on init failure

vfio_msi_cap_len() lazily allocates the per-device MSI permission table:

vdev->msi_perm = kmalloc_obj(struct perm_bits, GFP_KERNEL_ACCOUNT); if (!vdev->msi_perm) return -ENOMEM;

ret = init_pci_cap_msi_perm(vdev->msi_perm, len, flags); if (ret) { kfree(vdev->msi_perm); return ret; /* vdev->msi_perm left dangling */ }

When init_pci_cap_msi_perm() -> alloc_perm_bits() fails with -ENOMEM, the error path frees vdev->msi_perm but leaves the freed pointer stored in it. vdev->msi_perm is not re-zeroed later because struct vfio_pci_core_device is per-device and persists across open/close cycles, and the vfio_config_init() error path returns without calling vfio_config_free(). So the dangling pointer outlives the failed open.

That leads to two use-after-frees on the same device:

  1. Reuse. The next vfio_config_init() sees the stale pointer at

"if (vdev->msi_perm) return len;" and reuses the freed object. MSI config accesses in vfio_pci_config_rw_single() then dereference and call the freed perm->readfn / perm->writefn function pointers.

  1. Double free. A later vfio_config_free() runs free_perm_bits() and

kfree() on the already-freed object.

Fix it by NULLing vdev->msi_perm after the kfree(), matching the NULL-after-free discipline already used in free_perm_bits() and vfio_config_free().

BUG: KASAN: slab-use-after-free in vfio_pci_config_rw_single (drivers/vfio/pci/vfio_pci_config.c:1961) Read of size 8 at addr ffff88800fcc88d0 by task exploit/143 Call Trace: ... kasan_report (mm/kasan/report.c:595) vfio_pci_config_rw_single (drivers/vfio/pci/vfio_pci_config.c:1961) vfio_pci_config_rw (drivers/vfio/pci/vfio_pci_config.c:1986) vfio_pci_rw (drivers/vfio/pci/vfio_pci_core.c:1599) vfs_read (fs/read_write.c:572) __x64_sys_pread64 (fs/read_write.c:764) do_syscall_64 (arch/x86/entry/syscall_64.c:94) ...

Followed on device close by a double free of the same object:

Oops: general protection fault, probably for non-canonical address 0x1f63e0e8000008: 0000 [#1] SMP KASAN NOPTI RIP: 0010:kfree (mm/slub.c:6711) Call Trace: vfio_config_free (drivers/vfio/pci/vfio_pci_config.c:1861) vfio_pci_core_disable (drivers/vfio/pci/vfio_pci_core.c:685) vfio_pci_core_close_device (drivers/vfio/pci/vfio_pci_core.c:777) vfio_df_close (drivers/vfio/vfio_main.c:602) vfio_device_fops_release (drivers/vfio/vfio_main.c:648) __fput (fs/file_table.c:512) __x64_sys_close (fs/open.c:1496) do_syscall_64 (arch/x86/entry/syscall_64.c:94) ... Kernel panic - not syncing: Fatal exception

Executive ViewAI

Why It Matters

A high-severity memory-corruption flaw in the Linux kernel's VFIO PCI passthrough driver (CVE-2026-89777) could let a local user with access to a VFIO device node escalate to kernel-level privileges on affected hosts, with a possible path to full host compromise. Exposure is concentrated in virtualization, private-cloud, and GPU/PCIe passthrough environments - hypervisor clusters, AI/ML GPU nodes, and workloads that hand physical devices to virtual machines - while ordinary user endpoints and standard cloud tenancies are largely unaffected. No public exploit has been identified at time of analysis and vendor patches are available, so leadership should treat this as a scheduled patching and access-hygiene priority rather than an emergency.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.2%
Top 89% exploitable
Prevalence
Ubiquitous
Mainline Linux kernel; vfio-pci subsystem narrows the actual attack surface to passthrough hosts
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 HIGH
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact
Medium

Priority Score

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

Attack Technique

Use-after-free vulnerabilities occur when a program continues to access memory through a pointer after that memory has been deallocated.

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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: Important
Product Status
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 15 SP7 Affected
SUSE Linux Enterprise High Availability Extension 16.0 Affected

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