← Back to Feed CACHED · 2026-08-12 14:47:22 · CACHE_KEY CVE-2026-53360
CVE-2026-53360 · CWE-125 · Disclosed 2026-07-04

In the Linux kernel

ASSESSED — NOISGATE V0.5
Vendor
Reassessed
Verdict:
Do you agree?
01 · The Real Story

A guest VM hands the bouncer a fake ID card that's two inches wide, and the bouncer reads past the edge into the next patron's wallet

CVE-2026-53360 is a guest-triggered heap out-of-bounds read/write in the Linux kernel's KVM SEV-SNP Page State Change (PSC) handler (arch/x86/kvm/svm/sev.c). When a GHCB v2+ guest points its scratch area outside the GHCB, setup_vmgexit_scratch() allocates a host-side buffer sized by guest-controlled exit_info_2. The entry-count validation then checks against the protocol constant 253 (VMGEXIT_PSC_MAX_COUNT) instead of the actual buffer capacity. A guest requesting a 24-byte allocation gets a kmalloc-cg-32 slab but can walk up to index 252, reading and writing adjacent slab objects on the host heap. Introduced in commit 9b54e248d264 (~v6.10, May 2024). Fixed in commit db3f219 (May 2026), backported to 6.1.177, 6.6.144, 6.12.95, 6.18.38, 7.0.14, and 7.1.3. Only the SEV-SNP host path is affected; plain SEV or SEV-ES guests cannot trigger it.

The vendor score of 8.8 HIGH with Scope:Changed (AV:L/AC:L/PR:L/UI:N/S:C) is directionally correct — this is a genuine VM escape primitive. The S:C flag properly reflects guest-to-host boundary crossing, and AC:L is fair because the public PoC is straightforward (73 KASAN violations on a single run against an AMD EPYC 7443P). However, the 8.8 slightly overstates the real-world blast radius because the vulnerable code path is only exercised on hosts actively running SEV-SNP guests, which is a minority of KVM deployments — primarily cloud confidential-computing tiers and regulated on-prem enclaves. noisgate downgrades to 8.0 but floors at HIGH because KVM is a hypervisor component and the chain ends in host compromise.

"VM-escape via SEV-SNP scratch buffer lets a rogue guest corrupt host heap — hypervisor floor keeps this HIGH."
02 · The Attack Path

4 steps from start to impact.

STEP 01

Attacker obtains code execution inside an SEV-SNP guest

The attacker must have at least unprivileged code execution inside a VM that was launched with SEV-SNP enabled on an AMD EPYC host. In a cloud scenario this could be a legitimate tenant; on-prem it requires access to a confidential workload. The attacker loads a kernel module or uses a privileged guest process to craft raw GHCB exits.
Conditions required:
  • Code execution inside an SEV-SNP guest VM
  • Host kernel compiled with CONFIG_KVM_AMD_SEV
  • AMD EPYC processor with SEV-SNP support
Where this breaks in practice:
  • SEV-SNP adoption is limited to confidential-computing tiers — most KVM hosts never launch an SNP guest
  • Attacker must already be inside the guest, not on the network
Detection/coverage: KASAN (if compiled in) immediately flags slab-out-of-bounds in snp_begin_psc. Without KASAN, no reliable host-side detection exists pre-patch.
STEP 02

Craft a PSC request with a tiny out-of-GHCB scratch area

The attacker allocates a page, marks it decrypted with set_memory_decrypted(), and hand-builds a GHCB PSC request pointing the scratch area outside the GHCB with a very small exit_info_2 length (e.g. 24 bytes). The host calls setup_vmgexit_scratch() which kmallocs a 32-byte slab object. The public PoC at 0xCyberstan/CVE-2026-53360-POC demonstrates this step.
Conditions required:
  • Ability to issue raw VMGEXIT from guest kernel context
Where this breaks in practice:
  • Requires guest kernel-level access or a loadable module — userland alone is insufficient
STEP 03

Walk the entry array past the buffer boundary

The PSC handler validates hdr->end_entry against VMGEXIT_PSC_MAX_COUNT (253) but not against the actual 2-entry capacity of the 32-byte buffer. The host kernel iterates up to index 252, reading and writing adjacent kmalloc-cg-32 slab objects. Each iteration processes an 8-byte entry, giving the attacker a read oracle (host reads adjacent memory), a constrained write (small values into low 12 bits), and a failure oracle (invalid entries reveal object boundaries).
Conditions required:
  • Vulnerable kernel version (6.10 through pre-fix)
Where this breaks in practice:
  • Heap layout is non-deterministic; reliable exploitation requires heap grooming, which adds complexity and time
Detection/coverage: KASAN reports slab-out-of-bounds in snp_begin_psc+0x126/0x890 targeting kmalloc-cg-32.
STEP 04

Achieve host kernel code execution or data corruption

By combining the read oracle to map host heap layout with constrained writes to corrupt function pointers or control structures in adjacent slab objects, the attacker pivots from OOB access to arbitrary host kernel code execution. This compromises all VMs on the physical host and potentially the management plane. The PoC demonstrates the primitives but stops short of a full exploit chain.
Conditions required:
  • Successful heap grooming
  • Knowledge of host kernel symbol layout (KASLR bypass or info leak from step 3)
Where this breaks in practice:
  • Full weaponization requires chaining multiple primitives — no public end-to-end exploit exists yet
  • KASLR adds an additional barrier that must be independently defeated
Detection/coverage: Host-side EDR/integrity monitoring may detect anomalous kernel memory access patterns post-exploitation, but pre-exploitation detection without KASAN is minimal.
03 · Intelligence Metadata

The supporting signals.

In-the-wild exploitationNo evidence. Not listed in CISA KEV. No GreyNoise or threat-intel reporting of active campaigns as of 2026-08-12.
Proof of conceptPublic. 0xCyberstan/CVE-2026-53360-POC — demonstrates read oracle, constrained write, and failure oracle primitives. Generated 73 KASAN violations on AMD EPYC 7443P. Not a full exploit chain.
EPSS0.00183 (low, bottom quintile). Reflects the narrow attack surface — requires guest-level access on SEV-SNP hosts.
KEV statusNot listed as of 2026-08-12.
CVSS vectorCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H (8.8 HIGH). The S:C (Scope Changed) is the key flag — confirms guest-to-host boundary crossing. AV:L reflects that the attacker must be inside the guest VM.
Affected versionsLinux kernel 6.10 through pre-fix (introduced in commit 9b54e248d264, May 2024). Only hosts with CONFIG_KVM_AMD_SEV compiled in AND running SEV-SNP guests are reachable.
Fixed versions6.1.177, 6.6.144, 6.12.95 (LTS), 6.18.38, 7.0.14, 7.1.3 (stable), 7.2-rc1 (mainline). Commit db3f219.
Exposure / scanning dataNo Shodan/Censys/GreyNoise relevance — this is a local guest-to-host vector, not network-scannable. Population is bounded by AMD EPYC SEV-SNP deployments (Azure CVM, GCP Confidential VMs, select on-prem).
Disclosed2026-07-04 via Linux stable kernel release.
ReporterFix attributed to upstream KVM/SEV maintainers. PoC by 0xCyberstan (GitHub).
04 · The Call

noisgate verdict.

Final Verdict
= UNCHANGED to HIGH (8.0/10)

The single most decisive factor is role multiplier — KVM is a hypervisor, and the chain ends in host kernel compromise affecting all co-resident VMs, which floors the verdict at HIGH despite the narrow SEV-SNP population. The slight downgrade from 8.8 to 8.0 reflects that the vulnerable code path is only exercised on the subset of KVM hosts actively running SEV-SNP guests, not all KVM deployments.

HIGH Vulnerability mechanics and exploitability assessment
HIGH Affected and fixed version ranges
MEDIUM Absence of in-the-wild exploitation (negative evidence is inherently lower confidence)

Why this verdict

  • Hypervisor escape primitive: The OOB read/write crosses the guest-host boundary, giving the attacker influence over host kernel memory from inside a VM. Scope:Changed is correctly applied.
  • Public PoC with strong primitives: 0xCyberstan's PoC demonstrates read oracle, constrained write, and failure oracle — three building blocks for a full chain. 73 KASAN violations on a single run confirms reliability.
  • Role multiplier: KVM is a hypervisor. On confidential-computing hosts (Azure CVM, GCP Confidential VMs, on-prem EPYC enclaves), the blast radius of host compromise is all co-resident VMs plus management plane — fleet-scale impact. This floors the verdict at HIGH.
  • Narrow reachable population: Only KVM hosts with CONFIG_KVM_AMD_SEV compiled in AND actively running SEV-SNP guests are vulnerable. This is a single-digit percentage of all Linux KVM deployments, primarily concentrated in cloud CVM tiers and regulated on-prem confidential-computing enclaves. This provides the 0.8-point downward adjustment from 8.8.
  • No weaponized exploit chain yet: The PoC demonstrates primitives but not end-to-end code execution. Heap grooming + KASLR bypass are required for full weaponization, adding meaningful attacker effort.

Why not higher?

Upgrading to CRITICAL would require either active in-the-wild exploitation or a broader reachable population. The vulnerable code path is gated behind SEV-SNP guest execution, which is a minority of KVM deployments — most KVM hosts never launch an SNP guest and are entirely unreachable. The PoC demonstrates primitives, not a turnkey exploit, and KASLR adds a second barrier.

Why not lower?

Downgrading below HIGH would violate the hypervisor-role floor. This is a VM escape bug in KVM — the chain demonstrably ends in host kernel memory corruption from an unprivileged guest position. A public PoC with reliable primitives exists. For any organization running SEV-SNP workloads, the blast radius is fleet-scale. The low EPSS reflects attack-surface narrowness, not low impact.

05 · Compensating Control

What to do — in priority order.

  1. Disable SEV-SNP on non-essential hosts — If SEV-SNP is enabled by default but not required for your workloads, disable it via mem_encrypt=off kernel parameter or by not loading the ccp module. This eliminates the vulnerable code path entirely. Deploy within 30 days per noisgate mitigation SLA for HIGH.
  2. Pin guest GHCB version to v1 where possible — If your guest images can be controlled, pin GHCB protocol version to v1, which uses a different scratch-area code path. This is a temporary workaround — not all guests support v1 fallback. Deploy within 30 days.
  3. Enable KASAN on confidential-compute hosts — Compile with CONFIG_KASAN=y on SEV-SNP hosts to get immediate detection of OOB access in snp_begin_psc. This is a detection control, not prevention, but gives you visibility if exploitation is attempted. Performance overhead of ~2-3x makes this viable only on non-production or canary hosts.
  4. Restrict guest kernel module loading — Limit the attacker's ability to load custom kernel modules inside SEV-SNP guests via modules_disabled=1 or signed-module enforcement. This raises the bar from 'unprivileged guest code' to 'guest kernel exploit + module bypass'. Deploy within 30 days.
What doesn't work
  • Network firewalls / WAF / IDS — This is a local guest-to-host vector via CPU instructions (VMGEXIT), not a network protocol. No network-layer control can intercept it.
  • SELinux / AppArmor on the host — The OOB access occurs inside the kernel's KVM subsystem at ring 0. Mandatory access controls operate at a higher abstraction layer and cannot constrain intra-kernel memory access.
  • Standard EDR on the host — Most EDR agents do not monitor KVM VMGEXIT handling or slab allocator corruption patterns. They may detect post-exploitation activity but not the initial OOB access.
06 · Verification

Crowdsourced verification payload.

Run this script on each candidate KVM host (not inside the guest). Requires root to read kernel config. Invoke as: sudo bash check_cve_2026_53360.sh. No arguments needed.

noisgate-verify.sh
BASHREAD-ONLYSAFE
#!/usr/bin/env bash
# CVE-2026-53360 checker — KVM SEV-SNP PSC heap OOB
# Run on KVM HOST as root. Outputs VULNERABLE / PATCHED / UNKNOWN.
set -euo pipefail

RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; NC='\033[0m'

# 1. Check if SEV-SNP is even compiled / enabled
SEV_ENABLED=0
if [ -f /sys/module/kvm_amd/parameters/sev_snp ]; then
  SNP_PARAM=$(cat /sys/module/kvm_amd/parameters/sev_snp 2>/dev/null || echo 'N')
  if [ "$SNP_PARAM" = "Y" ] || [ "$SNP_PARAM" = "1" ]; then
    SEV_ENABLED=1
  fi
fi

if [ "$SEV_ENABLED" -eq 0 ]; then
  echo -e "${GREEN}NOT AFFECTED${NC} — SEV-SNP is not enabled on this host."
  echo "PATCHED"
  exit 0
fi

# 2. Get running kernel version
KVER=$(uname -r)
echo "Kernel: $KVER"
echo "SEV-SNP: enabled"

# 3. Check against known-fixed versions
# Fixed in: 6.1.177, 6.6.144, 6.12.95, 6.18.38, 7.0.14, 7.1.3
version_gte() {
  printf '%s\n%s' "$2" "$1" | sort -V -C
}

# Extract base version (strip distro suffixes for comparison)
BASE_VER=$(echo "$KVER" | grep -oP '^[0-9]+\.[0-9]+\.[0-9]+')
MAJOR_MINOR=$(echo "$BASE_VER" | grep -oP '^[0-9]+\.[0-9]+')

case "$MAJOR_MINOR" in
  6.1)  FIX="6.1.177" ;;
  6.6)  FIX="6.6.144" ;;
  6.12) FIX="6.12.95" ;;
  6.18) FIX="6.18.38" ;;
  7.0)  FIX="7.0.14" ;;
  7.1)  FIX="7.1.3" ;;
  7.2|7.3|7.4|7.5|8.*) FIX="0.0.0" ;;  # post-fix mainline
  *)    echo -e "${YELLOW}UNKNOWN${NC} — kernel $KVER not in checked branches."
        echo "UNKNOWN"
        exit 2 ;;
esac

if [ "$FIX" = "0.0.0" ] || version_gte "$BASE_VER" "$FIX"; then
  echo -e "${GREEN}PATCHED${NC} — $KVER >= $FIX"
  echo "PATCHED"
  exit 0
else
  echo -e "${RED}VULNERABLE${NC} — $KVER < $FIX (fixed in $FIX)"
  echo "VULNERABLE"
  exit 1
fi
07 · Bottom Line

If you remember one thing.

TL;DR
If you run AMD SEV-SNP workloads, this is your top kernel patch priority this cycle. The noisgate mitigation SLA for HIGH gives you 30 days to deploy compensating controls — start by auditing which hosts actually have SEV-SNP enabled (/sys/module/kvm_amd/parameters/sev_snp) and disable it on any host where confidential computing isn't required. For hosts that must keep SEV-SNP, schedule the kernel update to a fixed version (6.1.177+, 6.6.144+, 6.12.95+, 6.18.38+, 7.0.14+, or 7.1.3+) within the noisgate remediation SLA of 180 days. If you don't run SEV-SNP guests anywhere, this CVE is a non-issue for your fleet — confirm with the verification script and document the exception. No active exploitation exists today, but the public PoC lowers the weaponization bar, and hypervisor escapes attract well-resourced adversaries.

Sources

  1. 0xCyberstan PoC — CVE-2026-53360
  2. TechVeda — Linux Kernel CVEs to Patch (27 Jun – 4 Jul 2026)
  3. LWN — Seven stable kernels for Saturday
  4. TechVeda — Linux Kernel CVEs (18–25 Jul 2026)
  5. CISA Known Exploited Vulnerabilities Catalog
  6. LKML — KVM SEV scratch area patch context
  7. Red Hat Security Advisory RHSA-2026:34911
Peer Review

What defenders are saying.

Submit a review attribution: handle + country only
0 flags selected · stored anonymously
Validation Results

Crowdsourced verification outputs.

Results submitted by users who ran the verification payload against their environment.