{"vulnerability": "CVE-2025-21991", "sightings": [{"uuid": "1b2a0e32-bfe7-47ee-b62f-5d3aaf238280", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "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"}, {"uuid": "e0617e67-81c9-46a4-aa6a-823d41ca18ae", "vulnerability_lookup_origin": "1a89b78e-f703-45f3-bb86-59eb712668bd", "author": "2a075640-a300-48a4-bb44-bc6130783b9b", "vulnerability": "CVE-2025-21991", "type": "seen", "source": "https://bsky.app/profile/bluesky.awakari.com/post/3lwbhky6biw2y", "content": "", "creation_timestamp": "2025-08-13T09:00:05.188742Z"}, {"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"}]}