Linux Kernel
CVE-2024-36910
HIGH
Severity by source
AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AC raised to H because exploitation requires CoCo VM on Hyper-V with uio_hv_generic active; AV:L reflects host-level attack origin; PR:N since the attacker IS the host in the CoCo threat model.
Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).
CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Lifecycle Timeline
6DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
uio_hv_generic: Don't free decrypted memory
In CoCo VMs it is possible for the untrusted host to cause set_memory_encrypted() or set_memory_decrypted() to fail such that an error is returned and the resulting memory is shared. Callers need to take care to handle these errors to avoid returning decrypted (shared) memory to the page allocator, which could lead to functional or security issues.
The VMBus device UIO driver could free decrypted/shared pages if set_memory_decrypted() fails. Check the decrypted field in the gpadl to decide whether to free the memory.
AnalysisAI
Improper error handling in the uio_hv_generic VMBus UIO driver allows an untrusted Hyper-V host to trigger memory disclosure in Confidential Computing (CoCo) guest VMs by inducing a set_memory_decrypted() failure, causing decrypted (host-visible) guest memory pages to be returned to the kernel page allocator. This directly undermines the core security guarantee of CoCo environments such as AMD SEV and Intel TDX, where host-inaccessibility of guest memory is the primary protection model. With an EPSS of 0.24% and no CISA KEV listing, no public exploit has been identified, but the impact is severe in the narrow deployment scenarios where the preconditions are met.
Technical ContextAI
The uio_hv_generic driver provides userspace I/O access to VMBus devices - a Hyper-V-specific virtual bus used in Linux VMs running on Microsoft Hyper-V and Azure. In Confidential Computing (CoCo) VM environments, guest memory pages are individually managed as either encrypted (private, inaccessible to host) or decrypted (shared with host). The kernel functions set_memory_encrypted() and set_memory_decrypted() transition pages between these states. The vulnerability, classified as CWE-200 (Exposure of Sensitive Information), arises because the driver did not consult the 'decrypted' field in the GPADL (Guest Physical Address Descriptor List) structure before freeing memory. When the untrusted host causes set_memory_decrypted() to return an error, the resulting memory state is indeterminate - the pages may still be host-accessible (decrypted/shared) but the driver proceeds to free them to the guest allocator as if they were private. The fix introduces a conditional check of gpadl->decrypted before releasing the pages. CPE data confirms the affected product is cpe:2.3:o:linux:linux_kernel across multiple stable branches, with 6.9-rc1 through 6.9-rc3 explicitly enumerated, indicating the patch landed before the 6.9 final release.
RemediationAI
Apply the upstream kernel patches committed to the Linux stable tree: commits 3d788b2fbe6a, 6466a0f6d235, dabf12bf9943, and fe2c58602354, all available at https://git.kernel.org/stable/. Distributions backporting these commits to their supported kernel versions should be tracked for updated kernel packages. As a compensating control for systems that cannot be immediately patched, unloading or blacklisting the uio_hv_generic module (modprobe -r uio_hv_generic or adding it to /etc/modprobe.d/blacklist.conf) eliminates the vulnerable code path, though this disables userspace access to VMBus devices and may impact workloads depending on UIO-exposed Hyper-V devices. Organizations using Azure Confidential VMs or on-premises Hyper-V CoCo deployments should treat kernel updates as urgent within that environment tier.
Same weakness CWE-200 – Information Exposure
View allSame technique Information Disclosure
View allShare
External POC / Exploit Code
Leaving vuln.today