Cloudanix VulnDB

CVE-2025-68810

None

CVSS

—

EPSS

0.1%

Published

Jan 13, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in the Linux kernel's handling of virtual-machine memory could let a local attacker crash the host or potentially take control of the system.

Exploitation
Local Privilege
Attacker needs
Local User
Complexity
Moderate
Impact
Privilege Gain
Component
OS kernel
Class
Use After Free
Remediation
Patch
Effort
Medium
Patch risk
Low

What it actually does

Failure to reject memslot updates that clear KVM_MEM_GUEST_MEMFD on an existing binding leaves KVM still attached to the guest_memfd file, resulting in a use-after-free when kvm_gmem_release is later invoked on the freed backing structure.

Why it matters to the business

Linux hosts running KVM workloads face kernel memory corruption that can produce guest or host crashes, denial of service, or potential local privilege escalation; the issue affects any virtualized environment using guest_memfd-backed memory regions until patched kernels are deployed.

How an attack unfolds

An attacker with the ability to issue KVM_SET_USER_MEMORY_REGION ioctls first allocates a memslot with the KVM_MEM_GUEST_MEMFD flag, then issues a subsequent FLAGS_ONLY update that clears the flag; KVM performs the update without unbinding from guest_memfd, so a later close or exit triggers kvm_gmem_release on already-freed memory.

How to fix it

Upgrade the Linux kernel to a version that contains commit 89dbbe6ff323fc34659621a577fe0af913f47386 or later; rebuild and reboot all affected hosts; until the update can be applied, restrict unprivileged access to /dev/kvm via SELinux, AppArmor, or cgroup device filters.

How to confirm the fix worked

Confirm the running kernel contains commit 89dbbe6ff323fc34659621a577fe0af913f47386 by checking /proc/version or the package changelog; attempt to reproduce the original reproducer and verify that KVM now returns EINVAL when clearing KVM_MEM_GUEST_MEMFD on an existing memslot.

Typical attack path

  1. Obtain capability to open /dev/kvm and create a VM with guest_memfd support
  2. Issue KVM_SET_USER_MEMORY_REGION with KVM_MEM_GUEST_MEMFD set
  3. Issue a second KVM_SET_USER_MEMORY_REGION ioctl that clears only the KVM_MEM_GUEST_MEMFD flag
  4. Trigger process exit or file close to invoke kvm_gmem_release on the stale reference
  5. Observe KASAN use-after-free or exploit the freed slab object for code execution

How to detect it

Review kernel logs for KASAN reports referencing kvm_gmem_release or slab-use-after-free during KVM memslot operations; inspect audit logs for repeated KVM_SET_USER_MEMORY_REGION ioctls from untrusted processes; no persistent artifacts remain after reboot.

What your security team should do

  • Prioritize patching of all KVM hosts within the next maintenance window
  • Audit systems for custom kernels or out-of-tree KVM modules that may still contain the vulnerable code
  • Apply least-privilege controls on /dev/kvm access for non-administrative users
  • Monitor vendor and distribution advisories for backported fixes in supported LTS kernels

The record

In the Linux kernel, the following vulnerability has been resolved: KVM: Disallow toggling KVM_MEM_GUEST_MEMFD on an existing memslot Reject attempts to disable KVM_MEM_GUEST_MEMFD on a memslot that was initially created with a guest_memfd binding, as KVM doesn't support toggling KVM_MEM_GUEST_MEMFD on existing memslots. KVM prevents enabling KVM_MEM_GUEST_MEMFD, but doesn't prevent clearing the flag. Failure to reject the new memslot results in a use-after-free due to KVM not unbinding from the guest_memfd instance. Unbinding on a FLAGS_ONLY change is easy enough, and can/will be done as a hardening measure (in anticipation of KVM supporting dirty logging on guest_memfd at some point), but fixing the use-after-free would only address the immediate symptom. ================================================================== BUG: KASAN: slab-use-after-free in kvm_gmem_release+0x362/0x400 [kvm] Write of size 8 at addr ffff8881111ae908 by task repro/745 CPU: 7 UID: 1000 PID: 745 Comm: repro Not tainted 6.18.0-rc6-115d5de2eef3-next-kasan #3 NONE Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 Call Trace: <TASK> dump_stack_lvl+0x51/0x60 print_report+0xcb/0x5c0 kasan_report+0xb4/0xe0 kvm_gmem_release+0x362/0x400 [kvm] __fput+0x2fa/0x9d0 task_work_run+0x12c/0x200 do_exit+0x6ae/0x2100 do_group_exit+0xa8/0x230 __x64_sys_exit_group+0x3a/0x50 x64_sys_call+0x737/0x740 do_syscall_64+0x5b/0x900 entry_SYSCALL_64_after_hwframe+0x4b/0x53 RIP: 0033:0x7f581f2eac31 </TASK> Allocated by task 745 on cpu 6 at 9.746971s: kasan_save_stack+0x20/0x40 kasan_save_track+0x13/0x50 __kasan_kmalloc+0x77/0x90 kvm_set_memory_region.part.0+0x652/0x1110 [kvm] kvm_vm_ioctl+0x14b0/0x3290 [kvm] __x64_sys_ioctl+0x129/0x1a0 do_syscall_64+0x5b/0x900 entry_SYSCALL_64_after_hwframe+0x4b/0x53 Freed by task 745 on cpu 6 at 9.747467s: kasan_save_stack+0x20/0x40 kasan_save_track+0x13/0x50 __kasan_save_free_info+0x37/0x50 __kasan_slab_free+0x3b/0x60 kfree+0xf5/0x440 kvm_set_memslot+0x3c2/0x1160 [kvm] kvm_set_memory_region.part.0+0x86a/0x1110 [kvm] kvm_vm_ioctl+0x14b0/0x3290 [kvm] __x64_sys_ioctl+0x129/0x1a0 do_syscall_64+0x5b/0x900 entry_SYSCALL_64_after_hwframe+0x4b/0x53

Affected packages

Ecosystem Package Introduced Fixed
Linux Kernel 6.8.0 6.12.64
openSUSE:Leap 16.0 dtb-aarch64 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-64kb 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-azure 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-default 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-default-base 0 6.12.0-160000.27.1.160000.2.8
openSUSE:Leap 16.0 kernel-docs 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-kvmsmall 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-obs-build 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-obs-qa 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-rt 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-source 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-syms 0 6.12.0-160000.27.1
openSUSE:Leap 16.0 kernel-zfcpdump 0 6.12.0-160000.27.1

Related vulnerabilities