CVE-2025-21991

High

In 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. ]

Package Linux Kernel
Published 2025-04-02
Last modified 2025-11-03
CVSS version 3.1
Patch available
Yes

CVSS 3.1 score

7.8

out of 10
High
Attack Vector
Local
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
Vector string
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Weakness type

CWE-129

CVE-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.

Affected from
≥ 5.4.235 ≥ 5.10.173 ≥ 5.15.99 ≥ 6.1.16 ≥ 4.14.308 ≥ 4.19.276 ≥ 6.2.3 ≥ 6.3
Fixed in
✓ 5.4.292 5.4.x ✓ 5.10.236 5.10.x ✓ 5.15.180 5.15.x ✓ 6.1.132 6.1.x ✓ 6.6.84 6.6.x ✓ 6.12.20 6.12.x ✓ 6.13.8 6.13.x ✓ 6.14

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.

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.