CVE-2026-64527
NoneCVSS
—
EPSS
0.2%
Published
Jul 25, 2026
CISA due date
—
Cloudanix analysis
A flaw in Linux virtual machines on Hyper-V could let a malicious or compromised host make the guest expose leftover internal data from its video driver.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Data Exposure
- Component
- OS kernel
- Class
- Information Disclosure
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel flaw in the Hyper-V DRM/synthetic video receive path. The vulnerable code processes VMBus video packets before sufficiently validating the number of bytes actually received. For certain synthetic video message types, the driver could copy or interpret stale data left in a 16 KiB receive buffer as if it were part of the current response payload. In malformed packet cases, especially around completion responses and variable-length resolution responses, this can lead to disclosure of residual kernel/driver buffer contents to the consumer of the response path. The fix adds packet-size validation, validates type-specific payload lengths, bounds variable-length resolution arrays, rejects unknown or undersized messages, and only copies data after a successful bounded VMBus receive.
Why it matters to the business
The practical risk is information exposure from Linux virtual machines that use the Hyper-V synthetic video/DRM driver, primarily in scenarios where the Hyper-V host or VMBus message source is malicious, compromised, or outside the same trust boundary as the guest. For most organizations this is a moderate operational risk rather than an internet-exposed emergency because exploitation requires control over the virtualization channel, the EPSS score is low, there is no known CISA KEV listing, and no public exploit maturity is reported. The impact is more important for multi-tenant, confidential computing, regulated, or hostile-host threat models where guest memory confidentiality is a key requirement.
How an attack unfolds
An attacker with the ability to influence Hyper-V VMBus synthetic video messages sends a malformed or intentionally short packet to a Linux guest using the Hyper-V DRM/synthvid driver. The vulnerable receive callback reads the message type and dispatches to type-specific handling without first confirming that the packet contains the required pipe header, synthetic video header, and payload for that type. For completion-driving response messages, the driver may copy the receive buffer into an initialization buffer and wake a waiting consumer, which can then interpret leftover bytes from a previous packet as valid response data. For variable-length resolution responses, insufficient validation of the count-sized payload can similarly cause stale or unintended data to be treated as part of the response. In affected kernels, this creates an information-disclosure condition across malformed VMBus message handling. The patched behavior rejects undersized, oversized, inconsistent, or unknown packets and logs malformed-message cases instead of silently accepting them.
How to fix it
Upgrade the Linux kernel to a vendor build that includes the upstream fix for the Hyper-V DRM packet-size validation issue. Because no fixed package list was provided, use the latest security kernel from the relevant Linux distribution or platform image provider and confirm that it contains the drm/hyperv change that passes bytes_recvd into hyperv_receive_sub(), validates packet sizes before parsing, bounds SYNTHVID_RESOLUTION_RESPONSE resolution_count, and only copies data after successful vmbus_recvpacket() completion. Where immediate patching is not possible, reduce exposure by avoiding untrusted Hyper-V hosts, moving sensitive workloads away from affected Hyper-V guests, disabling or avoiding the Hyper-V synthetic video/DRM path where operationally feasible, and using hardened or confidential VM configurations where available. Reboot is typically required for kernel remediation to take effect.
How to confirm the fix worked
Confirm the running kernel, not just the installed package, has been updated. Validate by checking the active kernel version against the distribution vendor advisory or kernel changelog for the drm/hyperv VMBus packet-size validation fix. On source-based or custom kernels, verify the Hyper-V DRM driver includes length-aware handling in the receive callback, rejects packets shorter than the required pipe and synthvid headers, validates type-specific payload lengths, bounds variable-length resolution responses, and gates copying on successful vmbus_recvpacket() return. After reboot, confirm the affected module or built-in driver is running from the patched kernel image. For exposure validation, inventory Linux guests running on Hyper-V or Azure-like Hyper-V virtualization and determine whether the hyperv_drm/hyperv_fb/synthetic video stack is present or loaded.
Typical attack path
- Gain control of, compromise, or otherwise influence the Hyper-V host-side component that sends synthetic video VMBus messages to the Linux guest.
- Identify that the guest is using the Hyper-V DRM/synthetic video driver path.
- Send a crafted VMBus video packet with a valid-looking message type but an insufficient or inconsistent packet length.
- Trigger one of the affected response-handling paths, such as version response, resolution response, VRAM location acknowledgement, or feature-change handling.
- Cause the guest driver to process residual bytes from a previous receive buffer as part of the current response payload.
- Use the exposed response data or side effects to infer sensitive guest kernel/driver memory contents or state.
How to detect it
Detection is difficult from inside the guest because exploitation occurs through the Hyper-V VMBus synthetic video channel and may not produce network indicators. Review guest kernel logs, dmesg, journald, and centralized syslog for DRM, Hyper-V, VMBus, synthvid, or hyperv_drm errors involving malformed, rejected, undersized, unknown, or invalid video packets. On patched systems, rejected malformed packets are expected to be reported through rate-limited DRM error logging; repeated entries may indicate probing or exploitation attempts. Review crash dumps or kernel warnings for stack traces involving hyperv_receive_sub(), vmbus_recvpacket(), Hyper-V DRM, or synthetic video handling. From the host side, correlate suspicious guest video-channel resets, VMBus errors, VM worker process anomalies, host hypervisor logs, and unauthorized virtualization-management activity. Because there are no public exploit artifacts or known threat actors reported for this issue, focus on behavioral evidence: malformed VMBus packet logs, unexpected Hyper-V video device errors, host compromise indicators, and unexplained guest kernel instability around Hyper-V DRM.
- hyperv_receive_sub
- vmbus_recvpacket
- hyperv_drm
- drm/hyperv
- synthvid
- SYNTHVID_VERSION_RESPONSE
- SYNTHVID_RESOLUTION_RESPONSE
- SYNTHVID_VRAM_LOCATION_ACK
- SYNTHVID_FEATURE_CHANGE
- malformed Hyper-V
- malformed VMBus
- invalid synthvid
- undersized packet
- unknown packet type
What your security team should do
- Prioritize patching Linux guests running on Hyper-V hosts where the host is outside the same trust boundary, shared with third parties, or part of a confidential-computing threat model.
- Track vendor kernel advisories and deploy the first available supported kernel containing the drm/hyperv packet validation fix; reboot affected systems after installation.
- Inventory virtual machines using Hyper-V synthetic video or Hyper-V DRM drivers and rank remediation by workload sensitivity.
- Review kernel logs for malformed Hyper-V video/VMBus packet errors after patching, as the fixed driver now reports rejected malformed packets via rate-limited DRM errors.
- If suspicious malformed VMBus activity is observed, investigate the Hyper-V host, virtualization management plane, and any recent host-level administrative access or compromise indicators.
- For high-assurance workloads, avoid relying on an untrusted host for guest confidentiality and consider isolation controls such as dedicated hosts, attestation-backed confidential VM features, or migration to trusted infrastructure.
The record
In the Linux kernel, the following vulnerability has been resolved: drm/hyperv: validate VMBus packet size in receive callback hyperv_receive_sub() reads msg->vid_hdr.type and dispatches into one of four message-type branches without knowing how many bytes the host wrote into hv->recv_buf. The completion path then runs memcpy(hv->init_buf, msg, VMBUS_MAX_PACKET_SIZE), so the consumer that wakes on wait_for_completion_timeout() can read up to 16 KiB of residue from a prior message as if it were the response payload. Pass bytes_recvd into hyperv_receive_sub() and reject any packet that does not cover the pipe + synthvid header. A single switch on msg->vid_hdr.type then computes the type-specific payload size: the three completion-driving types (SYNTHVID_VERSION_RESPONSE, SYNTHVID_RESOLUTION_RESPONSE, SYNTHVID_VRAM_LOCATION_ACK) fall through to a shared exit that requires that size before memcpy/complete, while SYNTHVID_FEATURE_CHANGE validates its own payload and returns before reading is_dirt_needed. Unknown types are dropped. SYNTHVID_RESOLUTION_RESPONSE is variable length: the host fills resolution_count entries, not the full SYNTHVID_MAX_RESOLUTION_COUNT array. Validate the fixed prefix first so resolution_count can be read, bound it against the array, then require only the count-sized array, so the shorter responses the host actually sends are accepted. Only run the sub-handler when vmbus_recvpacket() returned success. The memcpy length is bytes_recvd, which is bounded by VMBUS_MAX_PACKET_SIZE only on a successful receive; on -ENOBUFS vmbus_recvpacket() instead reports the required length, which can exceed hv->recv_buf, so copying bytes_recvd would read and write past the 16 KiB buffers. Gating on the success return keeps the copy bounded. The nonzero-return path is itself a malformed-message case and is now logged rather than silently skipped; channel recovery is not attempted. Rejected packets are reported via drm_err_ratelimited() rather than silently dropped, matching the CoCo-hardened pattern in hv_kvp_onchannelcallback().
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|