{"uuid": "1b2a0e32-bfe7-47ee-b62f-5d3aaf238280", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "9f56dd64-161d-43a6-b9c3-555944290a09", "vulnerability": "CVE-2025-21991", "type": "seen", "source": "https://t.me/cvedetector/21870", "content": "{\n  \"Source\": \"CVE FEED\",\n  \"Title\": \"CVE-2025-21991 - AMD CPU Microcode Out-of-Bounds Vulnerability\", \n  \"Content\": \"CVE ID : CVE-2025-21991 \nPublished : April 2, 2025, 1:15 p.m. | 1\u00a0hour, 4\u00a0minutes ago \nDescription : In the Linux kernel, the following vulnerability has been resolved:  \n  \nx86/microcode/AMD: Fix out-of-bounds on systems with CPU-less NUMA nodes  \n  \nCurrently, load_microcode_amd() iterates over all NUMA nodes, retrieves their  \nCPU masks and unconditionally accesses per-CPU data for the first CPU of each  \nmask.  \n  \nAccording to Documentation/admin-guide/mm/numaperf.rst:  \n  \n  \"Some memory may share the same node as a CPU, and others are provided as  \n  memory only nodes.\"  \n  \nTherefore, some node CPU masks may be empty and wouldn't have a \"first CPU\".  \n  \nOn a machine with far memory (and therefore CPU-less NUMA nodes):  \n- cpumask_of_node(nid) is 0  \n- cpumask_first(0) is CONFIG_NR_CPUS  \n- cpu_data(CONFIG_NR_CPUS) accesses the cpu_info per-CPU array at an  \n  index that is 1 out of bounds  \n  \nThis does not have any security implications since flashing microcode is  \na privileged operation but I believe this has reliability implications by  \npotentially corrupting memory while flashing a microcode update.  \n  \nWhen booting with CONFIG_UBSAN_BOUNDS=y on an AMD machine that flashes  \na microcode update. I get the following splat:  \n  \n  UBSAN: array-index-out-of-bounds in arch/x86/kernel/cpu/microcode/amd.c:X:Y  \n  index 512 is out of range for type 'unsigned long[512]'  \n  [...]  \n  Call Trace:  \n   dump_stack  \n   __ubsan_handle_out_of_bounds  \n   load_microcode_amd  \n   request_microcode_amd  \n   reload_store  \n   kernfs_fop_write_iter  \n   vfs_write  \n   ksys_write  \n   do_syscall_64  \n   entry_SYSCALL_64_after_hwframe  \n  \nChange the loop to go over only NUMA nodes which have CPUs before determining  \nwhether the first CPU on the respective node needs microcode update.  \n  \n  [ bp: Massage commit message, fix typo. ] \nSeverity: 0.0 | NA \nVisit the link for more details, such as CVSS details, affected products, timeline, and more...\",\n  \"Detection Date\": \"02 Apr 2025\",\n  \"Type\": \"Vulnerability\"\n}\n\ud83d\udd39 t.me/cvedetector \ud83d\udd39", "creation_timestamp": "2025-04-02T16:39:30.000000Z"}