{"uuid": "fbc07eef-9732-4e65-8caf-f9d7f9d6a915", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2025-21991", "type": "published-proof-of-concept", "source": "https://t.me/DarkWebInformer_CVEAlerts/14810", "content": "\ud83d\udd17 DarkWebInformer.com - Cyber Threat Intelligence\n\ud83d\udccc CVE ID: CVE-2025-21991\n\ud83d\udd25 CVSS Score: N/A\n\ud83d\udd39 Description: 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. ]\n\ud83d\udccf Published: 2025-04-02T12:53:14.230Z\n\ud83d\udccf Modified: 2025-05-04T13:06:52.038Z\n\ud83d\udd17 References:\n1. https://git.kernel.org/stable/c/d509c4731090ebd9bbdb72c70a2d70003ae81f4f\n2. https://git.kernel.org/stable/c/985a536e04bbfffb1770df43c6470f635a6b1073\n3. https://git.kernel.org/stable/c/18b5d857c6496b78ead2fd10001b81ae32d30cac\n4. https://git.kernel.org/stable/c/ec52240622c4d218d0240079b7c1d3ec2328a9f4\n5. https://git.kernel.org/stable/c/e686349cc19e800dac8971929089ba5ff59abfb0\n6. https://git.kernel.org/stable/c/488ffc0cac38f203979f83634236ee53251ce593\n7. https://git.kernel.org/stable/c/5ac295dfccb5b015493f86694fa13a0dde4d3665\n8. https://git.kernel.org/stable/c/e3e89178a9f4a80092578af3ff3c8478f9187d59", "creation_timestamp": "2025-05-04T13:18:56.000000Z"}