Processor vulnerability
CVE-2023-20592
A malicious hypervisor can use INVD to change how the processor writes back cache lines, which breaks the memory integrity of SEV-ES and SEV-SNP guests.
- Name
- INVD and guest memory integrity
- Vulnerability
- AMD SEV, SEV-ES and SEV-SNP
- Kind
- Other
- CVE published
- 2023-11-14 CVE record
- Advisories
- AMD-SB-3005
INVD invalidates the caches without writing modified lines back to
memory. External researchers found that a malicious hypervisor could
use it to change which of the cached writes of an SEV-ES or SEV-SNP
guest reach memory, and so break the guest’s memory integrity. On
the first two EPYC generations AMD offers no fix, as SEV and SEV-ES
were not designed to protect integrity; on the third it ships a hot-
loadable microcode patch with SEV firmware 1.37.10, to be applied
before SEV-SNP is initialized, and later MilanPI 1.0.0.C. AMD found
no impact on the fourth generation.What the sources say of each microarchitecture.
Affected processors
3 of the 4 microarchitectures listed are affected in all or some of their models.
| Microarchitecture | Status | Detail | Source |
|---|---|---|---|
| Zen | Affected | First generation EPYC (SEV, SEV-ES): no mitigation | amd.com |
| Zen 2 | Affected | Second generation EPYC (SEV, SEV-ES): no mitigation | amd.com |
| Zen 3 | Affected | Third generation EPYC: microcode 0x0A0011D1 (Milan B1), 0x0A001234 (Milan-X B2) with SEV firmware 1.37.10, or MilanPI 1.0.0.C | amd.com |
| Zen 4 | Not affected | Fourth generation EPYC (Genoa): not found to be affected | amd.com |
Mitigations
- Microcode: A hot-loadable microcode patch with SEV firmware 1.37.10 for the third generation of EPYC, loaded before SNP_INIT_EX, then MilanPI 1.0.0.C. Source.
Related CVEs
- CVE-2019-9836 SEV key recovery through invalid curve points
- CVE-2020-12966 Ciphertext side channel on SEV-ES register state
- CVE-2020-12967 Unprotected nested page tables of SEV guests
- CVE-2021-26311 Rearranged guest memory that attestation misses
- CVE-2021-26320 SEND_START signing key check
- CVE-2021-26321 ID command validation
- CVE-2021-26323 SEV commands while SNP is active
- CVE-2021-26324 SEV-ES TMR and SNP guests
- CVE-2021-26325 SNP_GUEST_REQUEST input
- CVE-2021-26326 VM_HSAVE_PA at SNP_INIT
- CVE-2021-26327 SNP guest context validation
- CVE-2021-26328 CPU mode at SNP_INIT
- CVE-2021-26332 SEV-ES TMR in MMIO space
- CVE-2021-26340 TLB poisoning of SEV guests
- CVE-2021-26342 Missed TLB flush after a new VMCB
- CVE-2021-26349 Report ID of an imported SNP guest
- CVE-2021-26396 Secure Processor I/O address mapping
- CVE-2021-26402 Mailbox writes into SMM or SEV-ES memory
- CVE-2021-26403 Launch secret disclosure
- CVE-2021-26404 SEV firmware scratch buffer leak
- CVE-2021-26406 OCA certificate parsing
- CVE-2021-26408 Curve points in legacy SEV migration
- CVE-2021-26409 RMP corruption through SEV-ES
- CVE-2021-46744 Ciphertext side channels on SEV
- CVE-2021-46768 Bootloader reads from SEV firmware input
- CVE-2022-23813 SNP policy in Secure Processor and SMU interfaces
- CVE-2022-23814 Addresses passed to BIOS commands
- CVE-2022-23818 VM_HSAVE_PA input validation
- CVE-2022-23830 SMM configuration under SNP
- CVE-2023-20519 Use after free of an SNP guest context page
- CVE-2023-20566 Secure Processor address checks under SNP
- CVE-2023-20573 Suppressed debug exceptions in SNP guests
- CVE-2023-20575 Power side channel on SEV guests
- CVE-2023-20581 IOMMU access control bypasses RMP checks
- CVE-2023-20582 Invalid nested page table entries in the IOMMU
- CVE-2023-20584 IOMMU device table faults bypass RMP checks
- CVE-2023-20585 RMP checks on IOMMU host buffer access
- CVE-2023-31346 Uninitialized SEV firmware memory
- CVE-2023-31347 Secure TSC bug
- CVE-2023-31351 IOMMU access to guest private memory
- CVE-2023-31352 SEV firmware reads of unencrypted memory
- CVE-2023-31355 UMC seed overwrite in SNP firmware
- CVE-2023-31356 Incomplete memory cleanup in SEV firmware
- CVE-2024-21944 Memory aliasing through DIMM SPD data
- CVE-2024-21953 IOMMU register reconfiguration
- CVE-2024-21977 RDRAND entropy after a microcode load
- CVE-2024-21978 SEV-SNP input validation
- CVE-2024-21980 SNP firmware write restrictions
- CVE-2024-36331 Uninitialized cache memory
- CVE-2025-0012 Overlap of the segmented RMP and SMM memory
- CVE-2025-0029 Dropped guest DMA writes
- CVE-2025-0031 SINGLE_SOCKET policy after migration
- CVE-2025-0033 RMP corruption during SNP initialization
- CVE-2025-29934 Stale TLB entries in SEV-SNP guests
- CVE-2025-29939 RMP writes during SNP initialization
- CVE-2025-29943 SEV-SNP guest stack pointer corruption
- CVE-2025-29946 Incomplete IOMMU flush
- CVE-2025-29948 RMP protection bypass in SEV firmware
- CVE-2025-29952 RMP-covered memory corruption
- CVE-2025-48509 I/O memory misidentified at RMP initialization
- CVE-2025-48514 SEV-ES guest attacking an SNP guest
- CVE-2025-48517 SEV-ES guest with an SNP ASID
- CVE-2025-52536 SEV firmware downgrade
- CVE-2025-54510 MMIO routing lock in Secure Processor firmware
- CVE-2025-61971 MMIO routing through NBIO registers
- CVE-2025-61972 SMN access through NBIO registers