CVE-2025-21991
HighIn the Linux kernel, the following vulnerability has been resolved: x86/microcode/AMD: Fix out-of-bounds on systems with CPU-less NUMA nodes Currently, load_microcode_amd() iterates over all NUMA nodes, retrieves their CPU masks and unconditionally accesses per-CPU data for the first CPU of each mask. According to Documentation/admin-guide/mm/numaperf.rst: "Some memory may share the same node as a CPU, and others are provided as memory only nodes." Therefore, some node CPU masks may be empty and wouldn't have a "first CPU". On a machine with far memory (and therefore CPU-less NUMA nodes): - cpumask_of_node(nid) is 0 - cpumask_first(0) is CONFIG_NR_CPUS - cpu_data(CONFIG_NR_CPUS) accesses the cpu_info per-CPU array at an index that is 1 out of bounds This does not have any security implications since flashing microcode is a privileged operation but I believe this has reliability implications by potentially corrupting memory while flashing a microcode update. When booting with CONFIG_UBSAN_BOUNDS=y on an AMD machine that flashes a microcode update. I get the following splat: UBSAN: array-index-out-of-bounds in arch/x86/kernel/cpu/microcode/amd.c:X:Y index 512 is out of range for type 'unsigned long[512]' [...] Call Trace: dump_stack __ubsan_handle_out_of_bounds load_microcode_amd request_microcode_amd reload_store kernfs_fop_write_iter vfs_write ksys_write do_syscall_64 entry_SYSCALL_64_after_hwframe Change the loop to go over only NUMA nodes which have CPUs before determining whether the first CPU on the respective node needs microcode update. [ bp: Massage commit message, fix typo. ]
CVSS 3.1 score
7.8
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness type
CWE-129CVE-2025-21991 is classified as CWE-129
See CWE-129 on MITRE CWE for full details on this weakness type.
Affected versions
Linux kernel versions
5.4.235,
5.10.173,
5.15.99,
6.1.16,
4.14.308,
4.19.276,
6.2.3,
6.3
and later are affected. Fixed in
5.4.292,
5.10.236,
5.15.180,
6.1.132,
6.6.84,
6.12.20,
6.13.8,
6.14
and their respective stable series.
References
The following references provide additional information about CVE-2025-21991 including vendor advisories, patch commits, exploit details, and third-party analysis. Links are sourced from the NIST NVD database.
-
-
-
PatchKernel patch commithttps://git.kernel.org/stable/c/18b5d857c6496b78ead2fd10001b81ae32d30cac
-
PatchKernel patch commithttps://git.kernel.org/stable/c/488ffc0cac38f203979f83634236ee53251ce593
-
PatchKernel patch commithttps://git.kernel.org/stable/c/5ac295dfccb5b015493f86694fa13a0dde4d3665
Frequently asked questions
-
What is CVE-2025-21991?
CVE-2025-21991 is a High severity Linux kernel vulnerability with a CVSS score of 7.8 out of 10 . It affects Linux kernel versions from 5.4.235 onward and has been patched in 5.4.292, 5.10.236, 5.15.180 and others. CVE-2025-21991 has not been confirmed as actively exploited and is not listed in the CISA KEV catalog.
-
What is the CVSS score for CVE-2025-21991?
CVE-2025-21991 has a CVSS score of 7.8 out of 10, rated High severity (CVSS 3.1). The vector string is
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. -
Is there a patch available for CVE-2025-21991?
Yes — CVE-2025-21991 has been patched. Fixed versions include 5.4.292, 5.10.236, 5.15.180 and others. If you are running Linux kernel 5.4.235 or later up to the fix versions, apply the relevant patch for your kernel branch.
-
Is CVE-2025-21991 actively exploited?
No — CVE-2025-21991 has not been confirmed as actively exploited. It is not listed in the CISA Known Exploited Vulnerabilities (KEV) catalog.