{ "dataType": "CVE_RECORD", "dataVersion": "5.2", "cveMetadata": { "cveId": "CVE-2025-38560", "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "state": "PUBLISHED", "assignerShortName": "Linux", "dateReserved": "2025-04-16T04:51:24.025Z", "datePublished": "2025-08-19T17:02:37.792Z", "dateUpdated": "2026-08-05T12:02:54.210Z" }, "containers": { "cna": { "providerMetadata": { "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67", "shortName": "Linux", "dateUpdated": "2026-08-05T12:02:54.210Z" }, "descriptions": [ { "lang": "en", "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nx86/sev: Evict cache lines during SNP memory validation\n\nAn SNP cache coherency vulnerability requires a cache line eviction\nmitigation when validating memory after a page state change to private.\nThe specific mitigation is to touch the first and last byte of each 4K\npage that is being validated. There is no need to perform the mitigation\nwhen performing a page state change to shared and rescinding validation.\n\nCPUID bit Fn8000001F_EBX[31] defines the COHERENCY_SFW_NO CPUID bit\nthat, when set, indicates that the software mitigation for this\nvulnerability is not needed.\n\nImplement the mitigation and invoke it when validating memory (making it\nprivate) and the COHERENCY_SFW_NO bit is not set, indicating the SNP\nguest is vulnerable." } ], "metrics": [ { "cvssV3_1": { "version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H", "baseScore": 9.3, "baseSeverity": "CRITICAL" }, "scenarios": [ { "lang": "en", "value": "AV:L - The attacker is a malicious or compromised hypervisor co-resident on the physical machine attacking an SEV-SNP guest; there is no network protocol involved, only local platform-level access to the victim guest's memory and page-state-change handling.\nAC:L - The hypervisor controls every element of the attack — it owns the page while shared and chooses the data left in dirty cache lines, it services the PSC VMGEXIT so it knows exactly when the guest validates, and it controls vCPU scheduling and cache pressure to drive writeback; the window recurs on every private transition (boot, memory acceptance, every set_memory_encrypted) and can be retried indefinitely.\nPR:N - The vulnerable component is the SNP guest kernel, and the attacking hypervisor holds no credentials or privileges whatsoever inside that guest — it is outside the guest's security authority entirely, matching the PR:N used for other confidential-computing guest-hardening CVEs in this tree.\nUI:N - Page-state changes to private happen automatically during kernel decompression, early boot, unaccepted-memory acceptance and DMA/SWIOTLB teardown; no action by any guest user or administrator is required.\nS:C - The missing eviction defeats the SEV-SNP memory-integrity guarantee, letting code in the host security authority modify memory inside the guest security authority — the confidential-computing trust boundary is crossed.\nC:H - An attacker-chosen overwrite of guest private kernel memory is trivially leveraged into code execution inside the guest, exposing all of the confidential VM's secrets including keys and attestation material.\nI:H - This is a direct arbitrary-write primitive into validated guest private memory with hypervisor-chosen content — AMD describes the impact as the hypervisor being able to overwrite SEV-SNP guest memory with loss of data integrity.\nA:H - Silent corruption of guest private pages, including kernel text, page tables and early-boot data, readily produces guest kernel panics, SNP termination or an unbootable VM." } ] } ], "affected": [ { "product": "Linux", "vendor": "Linux", "defaultStatus": "unaffected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/x86/boot/cpuflags.c", "arch/x86/boot/startup/sev-shared.c", "arch/x86/coco/sev/core.c", "arch/x86/include/asm/cpufeatures.h", "arch/x86/include/asm/sev.h", "arch/x86/kernel/cpu/scattered.c" ], "versions": [ { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "1fec416c03d0a64cc21aa04ce4aa14254b017e6a", "status": "affected", "versionType": "git" }, { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "1fb873971e23c35c53823c62809a474a92bc3022", "status": "affected", "versionType": "git" }, { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "aed15fc08f15dbb15822b2a0b653f67e76aa0fdf", "status": "affected", "versionType": "git" }, { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "a762a4c8d9e768b538b3cc60615361a8cf377de8", "status": "affected", "versionType": "git" }, { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "f92af52e6dbd8d066d77beba451e0230482dc45b", "status": "affected", "versionType": "git" }, { "version": "4f9c403e44e5e88feb27d5e617d1adc9cc7ef684", "lessThan": "7b306dfa326f70114312b320d083b21fa9481e1e", "status": "affected", "versionType": "git" } ] }, { "product": "Linux", "vendor": "Linux", "defaultStatus": "affected", "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git", "programFiles": [ "arch/x86/boot/cpuflags.c", "arch/x86/boot/startup/sev-shared.c", "arch/x86/coco/sev/core.c", "arch/x86/include/asm/cpufeatures.h", "arch/x86/include/asm/sev.h", "arch/x86/kernel/cpu/scattered.c" ], "versions": [ { "version": "5.19", "status": "affected" }, { "version": "0", "lessThan": "5.19", "status": "unaffected", "versionType": "semver" }, { "version": "6.1.148", "lessThanOrEqual": "6.1.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.6.102", "lessThanOrEqual": "6.6.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.12.42", "lessThanOrEqual": "6.12.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.15.10", "lessThanOrEqual": "6.15.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.16.1", "lessThanOrEqual": "6.16.*", "status": "unaffected", "versionType": "semver" }, { "version": "6.17", "lessThanOrEqual": "*", "status": "unaffected", "versionType": "original_commit_for_fix" } ] } ], "cpeApplicability": [ { "nodes": [ { "operator": "OR", "negate": false, "cpeMatch": [ { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.1.148" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.6.102" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.12.42" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.15.10" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.16.1" }, { "vulnerable": true, "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*", "versionStartIncluding": "5.19", "versionEndExcluding": "6.17" } ] } ] } ], "references": [ { "url": "https://git.kernel.org/stable/c/1fec416c03d0a64cc21aa04ce4aa14254b017e6a" }, { "url": "https://git.kernel.org/stable/c/1fb873971e23c35c53823c62809a474a92bc3022" }, { "url": "https://git.kernel.org/stable/c/aed15fc08f15dbb15822b2a0b653f67e76aa0fdf" }, { "url": "https://git.kernel.org/stable/c/a762a4c8d9e768b538b3cc60615361a8cf377de8" }, { "url": "https://git.kernel.org/stable/c/f92af52e6dbd8d066d77beba451e0230482dc45b" }, { "url": "https://git.kernel.org/stable/c/7b306dfa326f70114312b320d083b21fa9481e1e" } ], "title": "x86/sev: Evict cache lines during SNP memory validation", "x_generator": { "engine": "bippy-1.2.0" } }, "adp": [ { "title": "CVE Program Container", "references": [ { "url": "https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html" } ], "providerMetadata": { "orgId": "af854a3a-2127-422b-91ae-364da2661108", "shortName": "CVE", "dateUpdated": "2025-11-03T17:39:49.648Z" } } ] } }