CVE-2023-4155
Medium · 5.6CVSS
5.6
EPSS
0.2%
Published
Sep 13, 2023
CISA due date
—
Cloudanix analysis
A bug in the way Linux handles certain secure virtual machines on AMD processors can let one virtual machine crash the host or, in rare cases, break out and affect other systems.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- High
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Race Condition
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Medium
What it actually does
A double-fetch race condition in the KVM AMD SEV VMGEXIT handler allows a guest with multiple vCPUs running SEV-ES or SEV-SNP to invoke the handler recursively, causing a stack overflow that leads to denial of service or guest-to-host escape when CONFIG_VMAP_STACK is disabled.
Why it matters to the business
Virtualized workloads on affected AMD SEV hosts may experience sudden crashes or loss of isolation between guest and host, increasing operational downtime and risking compromise of the underlying hypervisor in configurations lacking stack protection.
How an attack unfolds
An attacker controlling a guest VM issues concurrent VMGEXIT calls from multiple vCPUs to trigger the race, recursively invoking the handler until the stack overflows and control flow is hijacked or the kernel panics.
How to fix it
Upgrade the Linux kernel to a version containing the fix for the double-fetch race in the SEV VMGEXIT path; enable CONFIG_VMAP_STACK on all affected hosts; apply vendor updates for Red Hat Enterprise Linux and Fedora as they become available.
How to confirm the fix worked
Verify the presence of the upstream patch in the running kernel, confirm CONFIG_VMAP_STACK=y via kernel config inspection, and test that SEV-ES/SNP guests with multiple vCPUs no longer trigger recursive VMGEXIT behavior under load.
Typical attack path
- Gain code execution or control inside a KVM guest using SEV-ES or SEV-SNP with multiple vCPUs
- Issue concurrent VMGEXIT hypercalls from separate vCPUs to induce the double-fetch race
- Recursively trigger the handler to exhaust the stack
- Either crash the host kernel (DoS) or attempt control-flow hijack for guest-to-host escape if stack guards are absent
How to detect it
Inspect kernel logs for repeated VMGEXIT entries, stack overflow oops, or SEV handler recursion; correlate with guest activity showing high-frequency hypercalls from multiple vCPUs.
What your security team should do
- Prioritize kernel updates on all AMD SEV hosts within the next maintenance window
- Audit virtualization configurations for disabled stack guard pages and enable CONFIG_VMAP_STACK where missing
- Monitor for kernel oops or panic messages referencing VMGEXIT or SEV handlers
- Restrict creation of multi-vCPU SEV-ES/SNP guests until patches are deployed
The record
A flaw was found in KVM AMD Secure Encrypted Virtualization (SEV) in the Linux kernel. A KVM guest using SEV-ES or SEV-SNP with multiple vCPUs can trigger a double fetch race condition vulnerability and invoke the `VMGEXIT` handler recursively. If an attacker manages to call the handler multiple times, they can trigger a stack overflow and cause a denial of service or potentially guest-to-host escape in kernel configurations without stack guard pages (`CONFIG_VMAP_STACK`).
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| AlmaLinux:8 | bpftool | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-abi-stablelists | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-core | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-cross-headers | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-debug | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-debug-core | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-debug-devel | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-debug-modules | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-debug-modules-extra | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-devel | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-doc | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-headers | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-modules | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-modules-extra | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-tools | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-tools-libs | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-tools-libs-devel | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-zfcpdump | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-zfcpdump-core | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-zfcpdump-devel | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-zfcpdump-modules | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | kernel-zfcpdump-modules-extra | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | perf | 0 | 4.18.0-513.5.1.el8_9 |
| AlmaLinux:8 | python3-perf | 0 | 4.18.0-513.5.1.el8_9 |
| Chainguard | hyperv-daemons | 0 | 0 |
| Chainguard | hyperv-daemons-6.12 | 0 | 0 |
| Chainguard | hyperv-daemons-6.18 | 0 | 0 |
| Chainguard | hyperv-daemons-generic | 0 | 0 |
| Chainguard | linux | 0 | 0 |
| Chainguard | linux-aws-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-aws-6.12 | 0 | 6.12.65-r0 |
| Chainguard | linux-aws-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.12-headers | 0 | 0 |
| Chainguard | linux-aws-6.12-modules | 0 | 0 |
| Chainguard | linux-aws-6.18 | 0 | 6.18.4-r0 |
| Chainguard | linux-aws-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-aws-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-6.18-headers | 0 | 0 |
| Chainguard | linux-aws-6.18-modules | 0 | 0 |
| Chainguard | linux-aws-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-aws-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-aws-generic-boot-configuration | 0 | 0 |
| Chainguard | linux-aws-generic-boot-installed | 0 | 0 |
| Chainguard | linux-aws-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-aws-generic-headers | 0 | 0 |
| Chainguard | linux-aws-generic-modules | 0 | 0 |
| Chainguard | linux-azure-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-azure-6.12 | 0 | 6.12.65-r1 |
| Chainguard | linux-azure-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.12-headers | 0 | 0 |
| Chainguard | linux-azure-6.12-modules | 0 | 0 |
| Chainguard | linux-azure-6.18 | 0 | 0 |
| Chainguard | linux-azure-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-6.18-headers | 0 | 0 |
| Chainguard | linux-azure-6.18-modules | 0 | 0 |
| Chainguard | linux-azure-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-azure-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-azure-generic-boot-configuration | 0 | 0 |
| Chainguard | linux-azure-generic-boot-installed | 0 | 0 |
| Chainguard | linux-azure-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-azure-generic-headers | 0 | 0 |
| Chainguard | linux-azure-generic-modules | 0 | 0 |
| Chainguard | linux-boot-configuration | 0 | 0 |
| Chainguard | linux-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12 | 0 | 6.12.63-r0 |
| Chainguard | linux-gcp-6.12 | 0 | 6.12.65-r0 |
| Chainguard | linux-gcp-6.12-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.12-headers | 0 | 0 |
| Chainguard | linux-gcp-6.12-modules | 0 | 0 |
| Chainguard | linux-gcp-6.18 | 0 | 6.18.4-r0 |
| Chainguard | linux-gcp-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-gcp-6.18-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.18-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-6.18-headers | 0 | 0 |
| Chainguard | linux-gcp-6.18-modules | 0 | 0 |
| Chainguard | linux-gcp-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-gcp-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-gcp-generic-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-gcp-generic-headers | 0 | 0 |
| Chainguard | linux-gcp-generic-modules | 0 | 0 |
| Chainguard | linux-modules | 0 | 0 |
| Chainguard | linux-qemu-6.12 | 0 | 6.12.65-r2 |
| Chainguard | linux-qemu-6.12-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-fips-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-headers | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.12-modules | 0 | 6.12.63-r0 |
| Chainguard | linux-qemu-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-qemu-6.18-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-fips-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-headers | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-6.18-modules | 0 | 6.18.2-r0 |
| Chainguard | linux-qemu-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-qemu-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-qemu-generic-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-generic-bootc-boot-installed | 0 | 6.18.4-r0 |
| Chainguard | linux-qemu-generic-bootc-boot-installed | 0 | 6.18.5-r0 |
| Chainguard | linux-qemu-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-generic-headers | 0 | 0 |
| Chainguard | linux-qemu-generic-modules | 0 | 0 |
| Chainguard | linux-qemu-rc | 0 | 6.19_rc4-r0 |
| Chainguard | linux-qemu-rc | 0 | 6.19_rc5-r0 |
| Chainguard | linux-qemu-rc-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-rc-fips-boot-installed | 0 | 0 |
| Chainguard | linux-qemu-rc-headers | 0 | 0 |
| Chainguard | linux-qemu-rc-modules | 0 | 0 |
| Chainguard | linux-vmware-6.12 | 0 | 6.12.65-r2 |
| Chainguard | linux-vmware-6.12-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-fips-boot-installed | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-headers | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.12-modules | 0 | 6.12.63-r0 |
| Chainguard | linux-vmware-6.18 | 0 | 6.18.5-r2 |
| Chainguard | linux-vmware-6.18-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-fips-boot-installed | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-headers | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-6.18-modules | 0 | 6.18.2-r0 |
| Chainguard | linux-vmware-generic | 0 | 6.18.3-r0 |
| Chainguard | linux-vmware-generic | 0 | 6.18.5-r0 |
| Chainguard | linux-vmware-generic-boot-installed | 0 | 0 |
| Chainguard | linux-vmware-generic-fips-boot-installed | 0 | 0 |
| Chainguard | linux-vmware-generic-headers | 0 | 0 |
| Chainguard | linux-vmware-generic-modules | 0 | 0 |
| Debian:12 | linux | 0 | 6.1.52-1 |
| Debian:13 | linux | 0 | 6.4.11-1 |
| Mageia:9 | kernel | 0 | 6.4.16-3.mga9 |
| Mageia:9 | kernel | 0 | 6.5.11-5.mga9 |
| Mageia:9 | kernel-linus | 0 | 6.4.16-3.mga9 |
| Mageia:9 | kernel-linus | 0 | 6.5.11-2.mga9 |
| Mageia:9 | kmod-virtualbox | 0 | 7.0.10-33.mga9 |
| Mageia:9 | kmod-virtualbox | 0 | 7.0.10-37.mga9 |
| Mageia:9 | kmod-xtables-addons | 0 | 3.24-48.mga9 |
| Mageia:9 | kmod-xtables-addons | 0 | 3.24-50.mga9 |
| Red Hat:enterprise_linux:8::baseos | bpftool | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | bpftool-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-abi-stablelists | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-core | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-cross-headers | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-core | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-modules | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debug-modules-extra | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debuginfo-common-aarch64 | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debuginfo-common-ppc64le | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debuginfo-common-s390x | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-debuginfo-common-x86_64 | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-doc | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-headers | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-modules | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-modules-extra | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-tools | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-tools-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-tools-libs | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-tools-libs-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump-core | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump-modules | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | kernel-zfcpdump-modules-extra | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | perf | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | perf-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | python3-perf | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::baseos | python3-perf-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | bpftool | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | bpftool-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-abi-stablelists | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-core | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-cross-headers | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug-core | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug-modules | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debug-modules-extra | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debuginfo-common-aarch64 | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debuginfo-common-ppc64le | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debuginfo-common-s390x | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-debuginfo-common-x86_64 | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-doc | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-headers | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-modules | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-modules-extra | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-tools | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-tools-debuginfo | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-tools-libs | 0 | 0:4.18.0-513.5.1.el8_9 |
| Red Hat:enterprise_linux:8::crb | kernel-tools-libs-devel | 0 | 0:4.18.0-513.5.1.el8_9 |
Related vulnerabilities
- CVE-2025-68301 In the Linux kernel, the following vulnerability has been resolved: net: atlantic: fix… Also affects bpftool
- CVE-2025-68285 In the Linux kernel, the following vulnerability has been resolved: libceph: fix… Also affects bpftool
- CVE-2025-40277 In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: Validate… Also affects bpftool
- CVE-2025-40248 In the Linux kernel, the following vulnerability has been resolved: vsock: Ignore… Also affects bpftool
- CVE-2025-40240 In the Linux kernel, the following vulnerability has been resolved: sctp: avoid NULL… Also affects bpftool
- CVE-2025-40154 In the Linux kernel, the following vulnerability has been resolved: ASoC: Intel… Also affects bpftool
- CVE-2025-40096 In the Linux kernel, the following vulnerability has been resolved: drm/sched: Fix… Also affects bpftool
- CVE-2025-38352 In the Linux kernel, the following vulnerability has been resolved: posix-cpu-timers: fix… Also affects bpftool