CVE-2025-22013
KVM: arm64: Unconditionally save+flush host FPSIMD/SVE/SME state
Severity Score
Exploit Likelihood
Affected Versions
Public Exploits
0Exploited in Wild
-Decision
Descriptions
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Unconditionally save+flush host FPSIMD/SVE/SME state There are several problems with the way hyp code lazily saves the host's
FPSIMD/SVE state, including: * Host SVE being discarded unexpectedly due to inconsistent configuration of TIF_SVE and CPACR_ELx.ZEN. This has been seen to result in QEMU crashes where SVE is used by memmove(), as reported by Eric Auger: https://issues.redhat.com/browse/RHEL-68997 * Host SVE state is discarded *after* modification by ptrace, which was an unintentional ptrace ABI change introduced with lazy discarding of SVE state. * The host FPMR value can be discarded when running a non-protected VM, where FPMR support is not exposed to a VM, and that VM uses FPSIMD/SVE. In these cases the hyp code does not save the host's FPMR before unbinding the host's FPSIMD/SVE/SME state, leaving a stale value in memory. Avoid these by eagerly saving and "flushing" the host's FPSIMD/SVE/SME
state when loading a vCPU such that KVM does not need to save any of the
host's FPSIMD/SVE/SME state. For clarity, fpsimd_kvm_prepare() is
removed and the necessary call to fpsimd_save_and_flush_cpu_state() is
placed in kvm_arch_vcpu_load_fp(). As 'fpsimd_state' and 'fpmr_ptr'
should not be used, they are set to NULL; all uses of these will be
removed in subsequent patches. Historical problems go back at least as far as v5.17, e.g. erroneous
assumptions about TIF_SVE being clear in commit: 8383741ab2e773a9 ("KVM: arm64: Get rid of host SVE tracking/saving") ... and so this eager save+flush probably needs to be backported to ALL
stable trees.
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: KVM: arm64: Guardar y vaciar incondicionalmente el estado FPSIMD/SVE/SME del host Hay varios problemas con la forma en que el código hyp guarda de forma diferida el estado FPSIMD/SVE del host, incluidos: * El SVE del host se descarta inesperadamente debido a una configuración inconsistente de TIF_SVE y CPACR_ELx.ZEN. Se ha visto que esto da como resultado fallos de QEMU donde memmove() usa SVE, como lo informó Eric Auger: https://issues.redhat.com/browse/RHEL-68997 * El estado SVE del host se descarta *después* de la modificación por ptrace, que fue un cambio de ABI de ptrace no intencionado introducido con el descarte diferido del estado SVE. * El valor FPMR del host se puede descartar cuando se ejecuta una VM no protegida, donde la compatibilidad con FPMR no está expuesta a una VM y esa VM usa FPSIMD/SVE. En estos casos, el código hyp no guarda el FPMR del host antes de desvincular su estado FPSIMD/SVE/SME, lo que deja un valor obsoleto en memoria. Para evitar esto, guarde y vacíe el estado FPSIMD/SVE/SME del host al cargar una vCPU, de modo que KVM no tenga que guardar ninguno de sus estados. Para mayor claridad, se ha eliminado fpsimd_kvm_prepare() y la llamada necesaria a fpsimd_save_and_flush_cpu_state() se ha ubicado en kvm_arch_vcpu_load_fp(). Dado que 'fpsimd_state' y 'fpmr_ptr' no deben usarse, se establecen en NULL; todos sus usos se eliminarán en parches posteriores. Los problemas históricos se remontan al menos a la versión v5.17, por ejemplo, suposiciones erróneas acerca de que TIF_SVE está claro en el commit: 8383741ab2e773a9 ("KVM: arm64: deshacerse del seguimiento/guardado de SVE del host")... y por eso, este ansioso guardado y vaciado probablemente deba ser retrotraído a TODOS los árboles estables.
In the Linux kernel, the following vulnerability has been resolved: KVM: arm64: Unconditionally save+flush host FPSIMD/SVE/SME state There are several problems with the way hyp code lazily saves the host's FPSIMD/SVE state, including: * Host SVE being discarded unexpectedly due to inconsistent configuration of TIF_SVE and CPACR_ELx.ZEN. This has been seen to result in QEMU crashes where SVE is used by memmove(), as reported by Eric Auger: https://issues.redhat.com/browse/RHEL-68997 * Host SVE state is discarded *after* modification by ptrace, which was an unintentional ptrace ABI change introduced with lazy discarding of SVE state. * The host FPMR value can be discarded when running a non-protected VM, where FPMR support is not exposed to a VM, and that VM uses FPSIMD/SVE. In these cases the hyp code does not save the host's FPMR before unbinding the host's FPSIMD/SVE/SME state, leaving a stale value in memory. Avoid these by eagerly saving and "flushing" the host's FPSIMD/SVE/SME state when loading a vCPU such that KVM does not need to save any of the host's FPSIMD/SVE/SME state. For clarity, fpsimd_kvm_prepare() is removed and the necessary call to fpsimd_save_and_flush_cpu_state() is placed in kvm_arch_vcpu_load_fp(). As 'fpsimd_state' and 'fpmr_ptr' should not be used, they are set to NULL; all uses of these will be removed in subsequent patches. Historical problems go back at least as far as v5.17, e.g. erroneous assumptions about TIF_SVE being clear in commit: 8383741ab2e773a9 ("KVM: arm64: Get rid of host SVE tracking/saving") ... and so this eager save+flush probably needs to be backported to ALL stable trees.
It was discovered that the CIFS network file system implementation in the Linux kernel did not properly verify the target namespace when handling upcalls. An attacker could use this to expose sensitive information. Several security issues were discovered in the Linux kernel. An attacker could possibly use these to compromise the system.
CVSS Scores
SSVC
- Decision:-
Timeline
- 2024-12-29 CVE Reserved
- 2025-04-08 CVE Published
- 2025-05-04 CVE Updated
- 2025-08-08 EPSS Updated
- ---------- Exploited in Wild
- ---------- KEV Due Date
- ---------- First Exploit
CWE
CAPEC
References (7)
URL | Tag | Source |
---|---|---|
https://git.kernel.org/stable/c/93ae6b01bafee8fa385aa25ee7ebdb40057f6abe | Vuln. Introduced |
URL | Date | SRC |
---|
URL | Date | SRC |
---|
Affected Vendors, Products, and Versions
Vendor | Product | Version | Other | Status | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Vendor | Product | Version | Other | Status | <-- --> | Vendor | Product | Version | Other | Status |
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 6.2 < 6.6.85 Search vendor "Linux" for product "Linux Kernel" and version " >= 6.2 < 6.6.85" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 6.2 < 6.12.21 Search vendor "Linux" for product "Linux Kernel" and version " >= 6.2 < 6.12.21" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 6.2 < 6.13.9 Search vendor "Linux" for product "Linux Kernel" and version " >= 6.2 < 6.13.9" | en |
Affected
| ||||||
Linux Search vendor "Linux" | Linux Kernel Search vendor "Linux" for product "Linux Kernel" | >= 6.2 < 6.14 Search vendor "Linux" for product "Linux Kernel" and version " >= 6.2 < 6.14" | en |
Affected
|