CVE-2026-53360: Linux Kernel SNP GHCB Memory Corruption and Information Disclosure
This Linux kernel vulnerability affects AMD SEV-SNP (Secure Encrypted Virtualization with Secure Nested Paging) virtual machines. A malicious guest operating system can exploit improper bounds checking in the Page State Change request handler to read and write memory outside the intended buffer boundaries. The attack allows the guest to leak sensitive information about the host kernel's memory layout and corrupt host kernel memory. The vulnerability requires the attacker to have already gained code execution within a virtual machine—it does not enable initial compromise of the host from an unprivileged network position.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 8.8 HIGH · CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
- Weaknesses (CWE)
- CWE-125
- Affected products
- 6 configuration(s)
- Published / Modified
- 2026-07-04 / 2026-07-22
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: KVM: SEV: Require in-GHCB scratch area if GHCB v2+ is in use As per the GHCB spec, when using GHCB v2+ require the software scratch area to reside in the GHCB's shared buffer. Note, things like Page State Change (PSC) requests _rely_ on this behavior, as the guest can't provide a length when making the request, i.e. the size of the guest payload is bounded by the size of the shared buffer. Failure to force usage of the GHCB, and a slew of other flaws, lets a malicious SNP guest corrupt host kernel heap memory, and leak host heap layout information. setup_vmgexit_scratch() allocates a buffer via kvzalloc(exit_info_2), where exit_info_2 is guest-controlled. With exit_info_2=24, this yields a 24-byte allocation in kmalloc-cg-32 (32-byte slab objects). The buffer holds an 8-byte psc_hdr followed by 8-byte psc_entry structs, so only entries[0] and entries[1] are in-bounds. snp_begin_psc() validates end_entry against VMGEXIT_PSC_MAX_COUNT (253) but NOT against the actual buffer size: idx_end = hdr->end_entry; if (idx_end >= VMGEXIT_PSC_MAX_COUNT) { // checks 253, not buffer snp_complete_psc(svm, ...); return 1; } for (idx = idx_start; idx <= idx_end; idx++) { entry_start = entries[idx]; // OOB when idx >= 2 The guest sets end_entry=10+, causing the host to iterate entries[2+] which are OOB into adjacent slab objects. For each OOB entry: - The host reads 8 bytes (OOB READ / info leak oracle) - If the data passes PSC validation, __snp_complete_one_psc() writes cur_page = 1 or 512 into the entry (OOB WRITE, sev.c:3806) - If validation fails, the error response reveals whether adjacent memory is zero vs non-zero (information disclosure to guest) The guest controls allocation size (exit_info_2), entry range (cur_entry/end_entry), and can fire unlimited VMGEXITs to repeatedly hit different slab positions. By exploiting the variety of bugs, a malicious SEV-SNP guest can: - OOB read adjacent kmalloc-cg-32 objects (heap layout disclosure) - OOB write cur_page bits into adjacent objects (heap corruption) - Trigger use-after-free conditions across VMGEXITs E.g. with KASAN enabled, a single insmod of the PoC guest module produces 73 KASAN reports: BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x126/0x890 Read of size 8 at addr ffff888219ffb5e0 by task qemu-system-x86/2199 BUG: KASAN: slab-out-of-bounds in snp_begin_psc+0x468/0x890 Write of size 8 at addr ffff888351566648 by task qemu-system-x86/2199 The buggy address belongs to the object at ffff888XXXXXXXXX which belongs to the cache kmalloc-cg-32 of size 32 The buggy address is located N bytes to the right of allocated 32-byte region [ffff888XXXXXXXXX, ffff888XXXXXXXXX) Breakdown: 62 slab-out-of-bounds (reads + writes past allocation) 7 slab-use-after-free 4 use-after-free All credit to Stan for the wonderful description and reproducer! [sean: write changelog]
4 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-53360 stems from insufficient validation in the SNP GHCB (Guest-Hypervisor Communication Block) v2+ implementation. The vulnerability resides in setup_vmgexit_scratch() and snp_begin_psc() functions. A guest-controlled value (exit_info_2) determines the size of a kmalloc-cg-32 slab allocation, typically 32 bytes. The Page State Change handler validates the end_entry index against a constant (VMGEXIT_PSC_MAX_COUNT = 253) but fails to check it against the actual buffer size. This allows iteration over out-of-bounds memory when processing PSC entries. Each OOB access performs an 8-byte read; if validation passes, a subsequent write occurs. Failed validation leaks information about adjacent memory through error responses. The guest can control allocation size, entry range, and issue unlimited VMGEXITs to probe different heap positions, enabling repeated information disclosure and memory corruption.
Business impact
Organizations running AMD EPYC processors with SEV-SNP capable hypervisors (primarily KVM-based clouds and virtualization platforms) face elevated risk. A compromised guest VM can corrupt the host kernel heap and extract host memory layout information, potentially enabling further privilege escalation or lateral movement to other guests. This is particularly critical for multi-tenant cloud providers and enterprise virtualization deployments where guest isolation is a security boundary. The impact is confined to hosts running affected Linux kernel versions; guest-to-host escalation requires prior guest compromise, but the severity stems from the breakdown of a fundamental security guarantee (guest-host memory isolation).
Affected systems
The Linux kernel versions affected by this vulnerability require SEV-SNP support enabled at compile time and SNP-capable AMD EPYC processors. The vulnerability manifests in KVM's handling of SNP GHCB v2+ protocol on x86-64 architecture. Affected systems are primarily Linux-based hypervisors and cloud platforms (AWS Nitro, Google Cloud, Microsoft Azure on AMD, and on-premises KVM deployments) running vulnerable kernel versions. Desktop and server systems not running as hypervisors or not supporting SNP are not affected. Verify your kernel version against the vendor advisory for patched releases.
Exploitability
Exploitation requires an attacker to first achieve code execution within a guest virtual machine—this is not a network-accessible vulnerability. Once inside a guest, the attack is highly reliable: the guest directly controls the GHCB scratch buffer size and PSC entry indices, and can trigger unlimited iterations to probe the host heap. The kernel does not require special capabilities or userspace privilege escalation; a guest root or even unprivileged guest code can trigger the malicious VMGEXIT. However, the practical attack surface is limited to environments where the attacker controls or has compromised a guest VM. The vulnerability is not listed on the CISA KEV catalog, indicating no evidence of active exploitation in the wild at the time of publication.
Remediation
Apply a Linux kernel patch that enforces the GHCB v2+ specification requirement for in-GHCB scratch area usage. The fix requires validation of PSC entry indices against the actual allocated buffer size, not just the protocol constant. Patched kernels will reject oversized or out-of-bounds PSC requests, preventing both the information leak and the heap corruption. Verify the specific patched kernel version for your distribution by consulting the vendor advisory.
Patch guidance
Apply the latest stable or LTS kernel release for your distribution that includes the fix for CVE-2026-53360. For distributions with extended support (Ubuntu LTS, Red Hat, Debian stable), security updates are typically available through standard package repositories. If you operate a hypervisor platform on AMD EPYC hardware, prioritize kernel updates for the host OS. Guest kernel versions are not affected; the vulnerability is in the hypervisor's handling of guest requests. After patching, consider validating the fix with KASAN (Kernel Address Sanitizer) testing in a lab environment if your deployment uses SNP-capable hardware to confirm the slab-out-of-bounds errors have been resolved.
Detection guidance
On patched systems, the kernel will reject malicious GHCB v2+ requests before they cause memory corruption. On vulnerable systems, look for KASAN warnings in kernel logs mentioning 'slab-out-of-bounds' or 'slab-use-after-free' in snp_begin_psc() or related SNP functions. Kernel log anomalies such as repeated PSC validation failures or unexpected memory errors from the SNP handler may indicate exploitation attempts. If you run unmodified KASAN kernels on SNP-capable hosts, enable debug logging for SNP VMGEXIT handlers. Standard host intrusion detection is limited because the attack is internal to the hypervisor; focus on kernel log aggregation and anomaly detection for the SNP subsystem.
Why prioritize this
This vulnerability should be prioritized for patching in any environment running a hypervisor on AMD EPYC with SNP support. The CVSS score of 8.8 (HIGH) reflects the breadth of impact (local to multi-guest scope), the certainty of the attack (AC:L, PR:L, no user interaction), and the severity of the outcome (confidentiality, integrity, and availability all compromised). Unlike vulnerabilities requiring network access or userspace tricks, this requires minimal preconditions once a guest is compromised. Multi-tenant cloud providers and large-scale virtualization operators should treat this as critical. Single-tenant or air-gapped hypervisor deployments can apply a lower priority but should not defer indefinitely.
Risk score, explained
The CVSS:3.1 score of 8.8 is justified by: Attack Vector = Local (the guest must execute code), Access Complexity = Low (no special conditions or race conditions), Privileges Required = Low (guest user or unprivileged guest code), User Interaction = None (automatic upon VMGEXIT), Scope = Changed (impact crosses the guest-host boundary), Confidentiality = High (host memory layout leaks), Integrity = High (host heap corruption), Availability = High (potential for use-after-free crashes). The scope change multiplier reflects that a guest breach compromises the host's memory safety guarantees, elevating the rating from a typical local privilege escalation to a more severe guest-escape category.
Frequently asked questions
Does this affect my standalone Linux server or workstation?
No, unless you are running it as a hypervisor (with KVM) on AMD EPYC hardware with SNP enabled. If you run VMs on your machine, you should patch the host kernel. Guest kernels are not affected.
What if I don't know if my processor supports SNP?
SEV-SNP is an extension available only on AMD EPYC processors (3rd generation and newer). If you are running Intel processors or older AMD systems, you are not affected. Check your hardware documentation or run 'grep -o 'snp' /proc/cpuinfo' on Linux to see if the flag is present; if absent, you are safe.
Can an unprivileged guest user exploit this, or only root?
An unprivileged guest user can trigger the vulnerable VMGEXIT (Page State Change) request, so privilege escalation within the guest is not required. However, the attacker must already have code execution inside a guest VM; this is not a network-facing vulnerability.
What should I monitor for on my hypervisor hosts?
Watch kernel logs for 'snp_begin_psc', 'slab-out-of-bounds', or 'use-after-free' messages. If you run KASAN-enabled kernels in a lab, a single PoC guest module can produce dozens of sanitizer warnings. On production systems without KASAN, configure centralized kernel log collection and set up alerts for SNP-related errors or memory corruption symptoms.
This analysis is provided for informational purposes and is based on the CVE description and published technical details. No exploit code or weaponized proof-of-concept instructions are included. Patch version numbers and affected product lists should be verified against the official Linux kernel security advisories and your vendor's security bulletins before deploying patches. Organizations should conduct their own risk assessment based on their specific hardware configurations, kernel versions, and multi-tenancy model. SEC.co does not provide real-time threat intelligence on active exploitation; check CISA and vendor sources for the latest threat status. Source: NVD (public-domain), retrieved 2026-08-13. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-10889HIGHCritical ANGLE Sandbox Escape in Google Chrome – Patch to 149.0.7827.53
- CVE-2026-10927HIGHChrome Sandbox Escape via Dawn Out-of-Bounds Read
- CVE-2026-10941HIGHSkia Out-of-Bounds Memory Vulnerability in Chrome – Urgent Patch Required
- CVE-2026-11015HIGHCritical Chrome WebGPU Out-of-Bounds Read Vulnerability
- CVE-2026-11077HIGHChrome Dawn Graphics Vulnerability – Sandbox Escape Risk
- CVE-2026-11091HIGHCritical Chrome Memory Corruption Vulnerability in Dawn Graphics Engine
- CVE-2026-11111HIGHChrome Out-of-Bounds Read in ANGLE Graphics Engine — Patch Guidance
- CVE-2026-11191HIGHOut-of-Bounds Memory Access in Chrome ANGLE Library