Skip to content
OpenAdvisories
High · 8.8 Public exploit CVE-2026-53360 EUVD-2026-41667GHSA-4pq2-jh73-g3hw

KVM: SEV: Require in-GHCB scratch area if GHCB v2+ is in use

Published Jul 4, 2026 · Updated Oct 19, 2026 · Assigned by Linux

Vendor: Linux Product: Linux Package: linux Package: linux Package: linux-allwinner-5.19 Package: linux-aws Package: linux-aws-5.0 Package: linux-aws-5.11 Package: linux-aws-5.13 Package: linux-aws-5.19 Package: linux-aws-5.3 Package: linux-aws-5.8 Package: linux-aws-6.14 Package: linux-aws-6.17 Package: linux-aws-6.2 Package: linux-aws-6.5 Package: linux-azure Package: linux-azure-5.11 Package: linux-azure-5.13 Package: linux-azure-5.19 Package: linux-azure-5.3 Package: linux-azure-5.8 Package: linux-azure-6.11 Package: linux-azure-6.14 Package: linux-azure-6.17 Package: linux-azure-6.2 Package: linux-azure-6.5 Package: linux-azure-7.0 Package: linux-azure-edge Package: linux-azure-fde Package: linux-azure-fde-5.19 Package: linux-azure-fde-6.14 Package: linux-azure-fde-6.2 Package: linux-azure-fde-7.0 Package: linux-azure-nvidia-6.14 Package: linux-gcp Package: linux-gcp-5.11 Package: linux-gcp-5.13 Package: linux-gcp-5.19 Package: linux-gcp-5.3 Package: linux-gcp-5.8 Package: linux-gcp-6.11 Package: linux-gcp-6.14 Package: linux-gcp-6.17 Package: linux-gcp-6.2 Package: linux-gcp-6.5 Package: linux-gcp-7.0 Package: linux-gke Package: linux-gke-4.15 Package: linux-gke-5.15 Package: linux-gke-5.4 Package: linux-gkeop Package: linux-gkeop-5.15 Package: linux-gkeop-5.4 Package: linux-hwe Package: linux-hwe-5.11 Package: linux-hwe-5.13 Package: linux-hwe-5.19 Package: linux-hwe-5.8 Package: linux-hwe-6.11 Package: linux-hwe-6.14 Package: linux-hwe-6.17 Package: linux-hwe-6.2 Package: linux-hwe-6.5 Package: linux-hwe-7.0 Package: linux-hwe-edge Package: linux-ibm Package: linux-intel-5.13 Package: linux-intel-iot-realtime Package: linux-lowlatency-hwe-5.19 Package: linux-lowlatency-hwe-6.11 Package: linux-lowlatency-hwe-6.2 Package: linux-lowlatency-hwe-6.5 Package: linux-nvidia Package: linux-nvidia-6.11 Package: linux-nvidia-6.17 Package: linux-nvidia-6.2 Package: linux-nvidia-6.5 Package: linux-nvidia-7.0 Package: linux-nvidia-bos Package: linux-oem Package: linux-oem-5.10 Package: linux-oem-5.13 Package: linux-oem-5.14 Package: linux-oem-5.17 Package: linux-oem-5.6 Package: linux-oem-6.0 Package: linux-oem-6.1 Package: linux-oem-6.11 Package: linux-oem-6.14 Package: linux-oem-6.17 Package: linux-oem-6.5 Package: linux-oem-6.8 Package: linux-oem-7.0 Package: linux-oracle Package: linux-oracle-5.0 Package: linux-oracle-5.11 Package: linux-oracle-5.13 Package: linux-oracle-5.3 Package: linux-oracle-5.8 Package: linux-oracle-6.14 Package: linux-oracle-6.17 Package: linux-oracle-6.5 Package: linux-oracle-7.0 Package: linux-raspi Package: linux-raspi-realtime Package: linux-raspi2 Package: linux-realtime Package: linux-realtime-6.14 Package: linux-realtime-6.17 Package: linux-riscv Package: linux-riscv-5.11 Package: linux-riscv-5.19 Package: linux-riscv-5.8 Package: linux-riscv-6.14 Package: linux-riscv-6.17 Package: linux-riscv-6.5 Package: linux-riscv-7.0 Package: linux-starfive-5.19 Package: linux-starfive-6.2 Package: linux-starfive-6.5 Package: linux-vmware Platform: Linux Ecosystem: Debian Ecosystem: Ubuntu

Description

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]

Affected products

VendorProductAffectedFixed
Linux Linux 6.10 6.12.93

Fixed in Linux distributions

Distributions backport fixes, so the version that fixes this vulnerability differs per release — upgrade to at least the version shown. From the distributions' security trackers and advisories.

ReleasePackageFixed inAdvisory
Debian 14 linux 7.0.12-1 —
Debian 13 linux 6.12.94-1 —
ReleasePackageFixed inAdvisory
Ubuntu 26.04 LTS linux 7.0.0-28.28 USN-8566-1
Ubuntu 26.04 LTS linux-aws +2 7.0.0-1009.9 USN-8618-1, USN-8603-1, USN-8568-1
Ubuntu 26.04 LTS linux-gcp +1 7.0.0-1008.8 USN-8593-1, USN-8566-1
Ubuntu 26.04 LTS linux-gke 7.0.0-1003.4 USN-8566-1
Ubuntu 26.04 LTS linux-ibm +1 7.0.0-1010.10 USN-8603-1, USN-8593-1
Ubuntu 26.04 LTS linux-nvidia 7.0.0-1016.16 USN-8663-1
Ubuntu 26.04 LTS linux-nvidia-bos 7.0.0-2016.16 USN-8664-1
Ubuntu 26.04 LTS linux-raspi 7.0.0-1015.15 USN-8618-1
Ubuntu 26.04 LTS linux-riscv +1 7.0.0-28.28.1 USN-8566-1
Ubuntu 25.10 linux +8 No fix yet —
Ubuntu 24.04 LTS linux-azure-7.0 7.0.0-1014.14~24.04.1 USN-8728-2
Ubuntu 24.04 LTS linux-azure-fde-7.0 7.0.0-1013.13~24.04.1 —
Ubuntu 24.04 LTS linux-gcp-7.0 +1 7.0.0-1011.11~24.04.1 USN-8728-3, USN-8728-1
Ubuntu 24.04 LTS linux-hwe-7.0 7.0.0-28.28~24.04.1 USN-8569-1
Ubuntu 24.04 LTS linux-nvidia-7.0 7.0.0-1016.16~24.04.1 USN-8663-1
Ubuntu 24.04 LTS linux-riscv +26 No fix yet —
Ubuntu 24.04 LTS linux-riscv-7.0 7.0.0-28.28.1~24.04.3 —
Ubuntu 22.04 LTS linux-riscv +32 No fix yet —
Ubuntu 20.04 LTS linux-gke +28 No fix yet —
Show 3 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Ubuntu 18.04 LTS linux-gcp +14 No fix yet —
Ubuntu 16.04 LTS linux-hwe-edge No fix yet —
Ubuntu Pro Realtime 24.04 LTS linux-realtime-6.14 +1 No fix yet —
ReleasePackageFixed inAdvisory
RHEL 10 rv +77 6.12.0-211.64.1.el10_2 RHSA-2026:77690
RHEL 9 rv +75 5.14.0-687.56.1.el9_8 RHSA-2026:77689
Show 1 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
Red Hat Shadow Migration Toolkit 10 kernel-modules-internal 6.12.0-211.64.1.el10_2 RHSA-2026:77690

AlmaLinux

Errata ↗
ReleasePackageFixed inAdvisory
AlmaLinux 10 rv +74 6.12.0-211.64.1.el10_2 ALSA-2026:77690
AlmaLinux 9 rv +73 5.14.0-687.56.1.el9_8 ALSA-2026:77689

Rocky Linux

Errata ↗
ReleasePackageFixed inAdvisory
Rocky Linux 10 kernel 6.12.0-211.64.1.el10_2 RLSA-2026:77690
Rocky Linux 9 kernel 5.14.0-687.56.1.el9_8 RLSA-2026:77689
ReleasePackageFixed inAdvisory
SLES 15 SP7 kernel-64kb +4 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1
SLES 15 SP7 kernel-default-base 6.4.0-150700.53.73.2.150700.17.41.4 SUSE-SU-2026:3166-1
SLES 15 SP7 kernel-docs +2 6.4.0-150700.53.73.1 SUSE-SU-2026:3166-1
Show 5 more (older releases, extended support, other products)
ReleasePackageFixed inAdvisory
SLES for SAP 16.0 kernel-64kb +8 6.12.0-160000.37.1 SUSE-SU-2026:23231-1, SUSE-SU-2026:23221-1
SLES for SAP 16.0 kernel-default-base 6.12.0-160000.37.1.160000.2.19 SUSE-SU-2026:23231-1, SUSE-SU-2026:23221-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_0 18-160000.4.3 SUSE-SU-2026:23936-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_1 16-160000.1.1 SUSE-SU-2026:23938-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_2 14-160000.1.1 SUSE-SU-2026:23939-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_3 13-160000.1.1 SUSE-SU-2026:23941-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_4 12-160000.1.1 SUSE-SU-2026:23942-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_5 11-160000.1.1 SUSE-SU-2026:23944-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_8 8-160000.1.1 SUSE-SU-2026:23791-1
SLES for SAP 16.0 kernel-livepatch-SLE16_Update_9 +1 7-160000.1.1 SUSE-SU-2026:23940-1, SUSE-SU-2026:23937-1
SLES 16.0 kernel-64kb +8 6.12.0-160000.37.1 SUSE-SU-2026:23237-1, SUSE-SU-2026:23231-1, SUSE-SU-2026:23221-1
SLES 16.0 kernel-default-base 6.12.0-160000.37.1.160000.2.19 SUSE-SU-2026:23231-1, SUSE-SU-2026:23221-1
SLES 16.0 kernel-livepatch-SLE16_Update_0 18-160000.4.3 SUSE-SU-2026:23936-1
SLES 16.0 kernel-livepatch-SLE16_Update_1 16-160000.1.1 SUSE-SU-2026:23938-1
SLES 16.0 kernel-livepatch-SLE16_Update_2 14-160000.1.1 SUSE-SU-2026:23939-1
SLES 16.0 kernel-livepatch-SLE16_Update_3 13-160000.1.1 SUSE-SU-2026:23941-1
SLES 16.0 kernel-livepatch-SLE16_Update_4 12-160000.1.1 SUSE-SU-2026:23942-1
SLES 16.0 kernel-livepatch-SLE16_Update_5 11-160000.1.1 SUSE-SU-2026:23944-1
SLES 16.0 kernel-livepatch-SLE16_Update_8 8-160000.1.1 SUSE-SU-2026:23791-1
SLES 16.0 kernel-livepatch-SLE16_Update_9 +1 7-160000.1.1 SUSE-SU-2026:23940-1, SUSE-SU-2026:23937-1
SLE Micro 6.2 kernel-default-base 6.12.0-160000.37.1.160000.2.19 SUSE-SU-2026:23068-1
SLE Micro 6.2 kernel-livepatch-SLE16-RT_Update_0 16-160000.3.4 SUSE-SU-2026:23676-1
SLE Micro 6.2 kernel-livepatch-SLE16-RT_Update_1 15-160000.1.1 SUSE-SU-2026:23677-1
SLE Micro 6.2 kernel-livepatch-SLE16-RT_Update_12 +1 5-160000.1.1 SUSE-SU-2026:23673-1, SUSE-SU-2026:23672-1
SLE Micro 6.2 kernel-livepatch-SLE16-RT_Update_7 9-160000.1.1 SUSE-SU-2026:23682-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_0 18-160000.4.3 SUSE-SU-2026:23960-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_1 16-160000.1.1 SUSE-SU-2026:23961-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_2 14-160000.1.1 SUSE-SU-2026:23963-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_3 +1 13-160000.1.1 SUSE-SU-2026:23965-1, SUSE-SU-2026:23678-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_4 +2 12-160000.1.1 SUSE-SU-2026:23966-1, SUSE-SU-2026:23687-1, SUSE-SU-2026:23679-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_5 +1 11-160000.1.1 SUSE-SU-2026:23967-1, SUSE-SU-2026:23680-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_6 +1 10-160000.1.1 SUSE-SU-2026:23801-1, SUSE-SU-2026:23681-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_8 +1 8-160000.1.1 SUSE-SU-2026:23799-1, SUSE-SU-2026:23683-1
SLE Micro 6.2 kernel-livepatch-SLE16_Update_9 +4 7-160000.1.1 SUSE-SU-2026:23964-1, SUSE-SU-2026:23962-1, SUSE-SU-2026:23686-1
SLE Micro 6.2 kernel-rt +5 6.12.0-160000.37.1 SUSE-SU-2026:23068-1, SUSE-SU-2026:23066-1
SLE Live Patching 15 SP7 kernel-default 6.4.0-150700.53.73.2 SUSE-SU-2026:3166-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7-RT_Update_18 1-150700.1.5.1 SUSE-SU-2026:3130-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_13 7-150700.2.1 SUSE-SU-2026:4258-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_14 6-150700.2.1 SUSE-SU-2026:4356-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_17 +2 4-150700.2.1 SUSE-SU-2026:4359-1, SUSE-SU-2026:4357-1, SUSE-SU-2026:4170-1
SLE Live Patching 15 SP7 kernel-livepatch-SLE15-SP7_Update_19 1-150700.15.3.4 SUSE-SU-2026:3166-1
SUSE Real Time Module 15 SP7 kernel-rt +2 6.4.0-150700.7.67.1 SUSE-SU-2026:3130-1
ReleasePackageFixed inAdvisory
openSUSE Leap 16.0 kernel-default-base 6.12.0-160000.37.1.160000.2.19 openSUSE-SU-2026:21555-1
openSUSE Leap 16.0 kernel-rt +11 6.12.0-160000.37.1 openSUSE-SU-2026:21555-1

Amazon Linux

ReleasePackageFixed inAdvisory
Amazon Linux 2023 kernel-livepatch-6.18.35-68.127 1:1.0-0.amzn2023 ALAS2023-2026-1881
Amazon Linux 2023 perf6.18 +12 1:6.18.35-68.127.amzn2023 ALAS2023-2026-1881

Oracle Linux

ReleasePackageFixed inAdvisory
Oracle Linux 10 rv +29 6.12.0-211.64.1.el10_2 ELSA-2026-77690
Oracle Linux 9 kernel-uek +34 6.12.0-206.104.3.3.el10uek ELSA-2026-500248
Oracle Linux 9 rv +28 5.14.0-687.56.1.el9_8 ELSA-2026-77689

Public exploits

Exploit or proof-of-concept code for this vulnerability is publicly available, which lowers the bar for attackers. Treat it as a reason to patch sooner.

Third-party code, not reviewed by us. Public PoCs are sometimes fake or contain malware. Read the code first and run it only in an isolated lab, against systems you are authorised to test.

GitHub 1 repository

  • 0xCyberstan/CVE-2026-53360-POC ★ 5 · Jul 4, 2026

    PoC for CVE-2026-53360: guest-triggered heap out-of-bounds read/write in KVM SEV-SNP Page State Change (PSC) handling.

Sources: PoC-in-GitHub, Metasploit Framework, Exploit-DB — updated daily. Only links are listed; no exploit code is hosted here.

Advisories 50

References