Skip to main content

Linux Kernel KVM CVE-2026-64283

| EUVDEUVD-2026-48995 HIGH
Integer Overflow or Wraparound (CWE-190)
2026-07-25 Linux GHSA-64fq-x7r6-wc9g
7.0
CVSS 3.1 · NVD
Share

Severity by source

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

Local-only via /dev/kvm device (AV:L), crafting near-MAX offset requires deliberate effort (AC:H), kvm group membership needed (PR:L), high CIA impact on kernel memory corruption.

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

Primary rating from NVD.

CVSS VectorNVD

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

Lifecycle Timeline

4
Analysis Generated
Aug 13, 2026 - 16:00 vuln.today
CVSS changed
Aug 13, 2026 - 15:37 NVD
7.0 (HIGH)
CVE Published
Jul 25, 2026 - 08:49 nvd
HIGH 7.0
CVE Published
Jul 25, 2026 - 08:49 cve.org
UNKNOWN (no severity yet)

DescriptionNVD

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

KVM: guest_memfd: Treat memslot binding offset+size as unsigned values

When binding a memslot to a guest_memfd file, treat the offset and size as unsigned values to fix a bug where the sum of the two can result in a false negative when checking for overflow against the size of the file. Passing unsigned values also avoids relying on somewhat obscure checks in other flows for safety, and tracks the offset and size as they are intended to be tracked, as unsigned values.

On 64-bit kernels, the number of pages a memslot contains and thus the size (and offset) of its guest_memfd binding are unsigned 64-bit values. Taking the offset+size as an loff_t instead of a uoff_t inadvertently converts the unsigned value to a signed value if the offset and/or size is massive.

Locally storing the offset and size as signed values is benign in and of itself (though even that is *extremely* difficult to discern), but operating on their sum is not.

For the offset, KVM explicitly checks against a negative value, which might seem like a bug as KVM could incorrectly reject a legitimate binding, but that's not actually the case as KVM_CREATE_GUEST_MEMFD takes a signed value for its size, i.e. a would-be-negative offset is also greater than the maximum possible size of any guest_memfd file.

Regarding the size, while KVM lacks an explicit check for a negative value, i.e. seemingly has a flawed overflow check, KVM restricts the number of pages in a single memslot to the largest positive signed 32-bit value:

if (id < KVM_USER_MEM_SLOTS && (mem->memory_size >> PAGE_SHIFT) > KVM_MEM_MAX_NR_PAGES) return -EINVAL;

and so that maximum "size" will ever be is 0x7fffffff000.

The sum of the two is, however, problematic. While the size is restricted by KVM's memslot logic, the offset is not, i.e. the offset is completely unchecked until the "offset + size > i_size_read(inode)" check. If the offset is the (nearly) largest possible _positive_ value, then adding size to the offset can result in a signed, negative 64-bit value. When compared against the size of the file (guaranteed to be positive), the negative sum is always smaller, and KVM incorrectly allows the absurd offset.

Opportunistically add missing includes in kvm_mm.h (instead of relying on its parents).

AnalysisAI

Integer overflow in the Linux kernel's KVM guest_memfd memslot binding logic allows a local attacker with low privileges to bypass a critical bounds check, potentially enabling memory corruption with high confidentiality, integrity, and availability impact. The flaw, introduced because offset and size were stored as signed loff_t rather than unsigned uoff_t values, causes the sum of a large positive offset and a valid size to silently wrap into a negative 64-bit value, which always satisfies the less-than comparison against the positive inode size. No public exploit has been identified at time of analysis, and EPSS exploitation probability is low at 0.22% (13th percentile), but successful exploitation on an affected KVM host or guest would be severe.

Technical ContextAI

The vulnerability resides in the KVM guest_memfd subsystem (CWE-190: Integer Overflow), introduced in Linux 6.8 to support confidential virtual machine technologies such as Intel TDX and AMD SNP. When a guest memslot is bound to a guest_memfd inode, KVM performs a bounds check: if offset + size > i_size_read(inode), the binding is rejected. The bug is that offset and size, which are semantically unsigned 64-bit quantities (matching the memslot's page-count-derived dimensions), were locally stored and operated on as loff_t (signed 64-bit). KVM's memslot logic caps size at approximately 0x7fffffff000 (KVM_MEM_MAX_NR_PAGES = largest positive signed 32-bit value, multiplied by PAGE_SIZE), but the offset is completely unconstrained until that single bounds check. If a caller supplies an offset near the maximum positive signed 64-bit value, adding even the bounded size to it produces a signed integer wraparound to a large negative value. Since a negative signed value is always less than the positive inode size, the check passes and KVM allows a physically invalid binding. CPE indicates affected scope is cpe:2.3:a:linux:linux:* for kernels between commit a7800aa80ea4d5356b8474c2302812e9d4926fa6 (introduction) and the fix commits.

RemediationAI

The primary fix is to upgrade to Linux kernel 7.1.4 or 7.2-rc1 (or later), which contain the corrected unsigned handling for offset and size in the guest_memfd memslot binding path. For stable branch users, apply upstream fix commits f3a98d5881b9bd4807f49156143565f6aabcef1e and eba85fee7fc6cf28fec38a5bf3c378bef9a79ca6 as available via https://git.kernel.org/stable/c/f3a98d5881b9bd4807f49156143565f6aabcef1e and https://git.kernel.org/stable/c/eba85fee7fc6cf28fec38a5bf3c378bef9a79ca6. Where immediate patching is not feasible, restrict access to /dev/kvm to only trusted administrative accounts using Linux DAC (chmod/chown) or SELinux/AppArmor policies - this raises the effective privilege requirement and eliminates the PR:L attack vector for unprivileged users. Disabling the guest_memfd feature (CONFIG_KVM_GMEM) at compile time is an option for environments that do not use confidential VMs (TDX/SNP), but this trade-off eliminates confidential computing support entirely. Note that restricting /dev/kvm may break legitimate VM management tools and should be tested against workloads.

Vendor StatusVendor

SUSE

Severity: Moderate
Product Status
openSUSE Tumbleweed Fixed
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

Share

CVE-2026-64283 vulnerability details – vuln.today

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