CVE-2023-52506: Vulnerability in Linux Linux
In the Linux kernel, the following vulnerability has been resolved: LoongArch: Set all reserved memblocks on Node#0 at initialization After commit 61167ad5fecdea ("mm: pass nid to reserve_bootmem_region()") we get a panic if DEFERRED_STRUCT_PAGE_INIT is enabled: [ 0.000000] CPU 0 Unable to handle kernel paging request at virtual address 0000000000002b82, era == 90000000040e3f28, ra == 90000000040e3f18 [ 0.000000] Oops[#1]: [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.5.0+ #733 [ 0.000000] pc 90000000040e3f28 ra 90000000040e3f18 tp 90000000046f4000 sp 90000000046f7c90 [ 0.000000] a0 0000000000000001 a1 0000000000200000 a2 0000000000000040 a3 90000000046f7ca0 [ 0.000000] a4 90000000046f7ca4 a5 0000000000000000 a6 90000000046f7c38 a7 0000000000000000 [ 0.000000] t0 0000000000000002 t1 9000000004b00ac8 t2 90000000040e3f18 t3 90000000040f0800 [ 0.000000] t4 00000000000f0000 t5 80000000ffffe07e t6 0000000000000003 t7 900000047fff5e20 [ 0.000000] t8 aaaaaaaaaaaaaaab u0 0000000000000018 s9 0000000000000000 s0 fffffefffe000000 [ 0.000000] s1 0000000000000000 s2 0000000000000080 s3 0000000000000040 s4 0000000000000000 [ 0.000000] s5 0000000000000000 s6 fffffefffe000000 s7 900000000470b740 s8 9000000004ad4000 [ 0.000000] ra: 90000000040e3f18 reserve_bootmem_region+0xec/0x21c [ 0.000000] ERA: 90000000040e3f28 reserve_bootmem_region+0xfc/0x21c [ 0.000000] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE) [ 0.000000] PRMD: 00000000 (PPLV0 -PIE -PWE) [ 0.000000] EUEN: 00000000 (-FPE -SXE -ASXE -BTE) [ 0.000000] ECFG: 00070800 (LIE=11 VS=7) [ 0.000000] ESTAT: 00010800 [PIL] (IS=11 ECode=1 EsubCode=0) [ 0.000000] BADV: 0000000000002b82 [ 0.000000] PRID: 0014d000 (Loongson-64bit, Loongson-3A6000) [ 0.000000] Modules linked in: [ 0.000000] Process swapper (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____)) [ 0.000000] Stack : 0000000000000000 9000000002eb5430 0000003a00000020 90000000045ccd00 [ 0.000000] 900000000470e000 90000000002c1918 0000000000000000 9000000004110780 [ 0.000000] 00000000fe6c0000 0000000480000000 9000000004b4e368 9000000004110748 [ 0.000000] 0000000000000000 900000000421ca84 9000000004620000 9000000004564970 [ 0.000000] 90000000046f7d78 9000000002cc9f70 90000000002c1918 900000000470e000 [ 0.000000] 9000000004564970 90000000040bc0e0 90000000046f7d78 0000000000000000 [ 0.000000] 0000000000004000 90000000045ccd00 0000000000000000 90000000002c1918 [ 0.000000] 90000000002c1900 900000000470b700 9000000004b4df78 9000000004620000 [ 0.000000] 90000000046200a8 90000000046200a8 0000000000000000 9000000004218b2c [ 0.000000] 9000000004270008 0000000000000001 0000000000000000 90000000045ccd00 [ 0.000000] ... [ 0.000000] Call Trace: [ 0.000000] [<90000000040e3f28>] reserve_bootmem_region+0xfc/0x21c [ 0.000000] [<900000000421ca84>] memblock_free_all+0x114/0x350 [ 0.000000] [<9000000004218b2c>] mm_core_init+0x138/0x3cc [ 0.000000] [<9000000004200e38>] start_kernel+0x488/0x7a4 [ 0.000000] [<90000000040df0d8>] kernel_entry+0xd8/0xdc [ 0.000000] [ 0.000000] Code: 02eb21ad 00410f4c 380c31ac <262b818d> 6800b70d 02c1c196 0015001c 57fe4bb1 260002cd The reason is early memblock_reserve() in memblock_init() set node id to MAX_NUMNODES, making NODE_DATA(nid) a NULL dereference in the call chain reserve_bootmem_region() -> init_reserved_page(). After memblock_init(), those late calls of memblock_reserve() operate on subregions of memblock .memory regions. As a result, these reserved regions will be set to the correct node at the first iteration of memmap_init_reserved_pages(). So set all reserved memblocks on Node#0 at initialization can avoid this panic.
AI Analysis
Technical Summary
CVE-2023-52506 is a vulnerability identified in the Linux kernel specifically affecting the LoongArch architecture. The issue arises from improper initialization of reserved memory blocks (memblocks) during early kernel boot. After a particular commit (61167ad5fecdea) that modified the memory reservation function to pass a node ID (nid) to reserve_bootmem_region(), a kernel panic occurs if the DEFERRED_STRUCT_PAGE_INIT feature is enabled. The panic is caused by a NULL pointer dereference due to memblock_reserve() setting the node ID to MAX_NUMNODES (an invalid node) during early memory reservation in memblock_init(). This leads to NODE_DATA(nid) being NULL in the call chain reserve_bootmem_region() -> init_reserved_page(), causing the kernel to crash during initialization. The root cause is that early memblock_reserve() calls operate on the entire memory region without a valid node assignment, while later calls operate on subregions correctly assigned to nodes. The fix involves setting all reserved memblocks to Node#0 at initialization to avoid the NULL dereference and subsequent kernel panic. This vulnerability affects Linux kernel versions containing the specified commit and impacts systems running on the LoongArch CPU architecture, such as Loongson-3A6000 processors. The vulnerability manifests as a denial of service (DoS) condition during system boot, preventing the kernel from initializing properly and causing system crashes. There is no known exploitation in the wild, and no CVSS score has been assigned yet.
Potential Impact
For European organizations, the primary impact of CVE-2023-52506 is a denial of service at the kernel level on systems using the LoongArch architecture with affected Linux kernel versions. This could lead to system unavailability, particularly for critical infrastructure or embedded systems relying on LoongArch-based hardware. Although LoongArch is less common in Europe compared to x86 or ARM architectures, organizations using specialized hardware or engaging in research, development, or deployment of LoongArch systems could face operational disruptions. The inability to boot affected Linux kernels could delay system recovery and maintenance, impacting business continuity. Since the vulnerability occurs at boot time, remote exploitation is unlikely without prior access, but local administrators or automated deployment systems could be affected. The lack of known exploits reduces immediate risk, but unpatched systems remain vulnerable to accidental crashes or misconfigurations triggering the panic. Overall, the impact is primarily availability-related, with no direct confidentiality or integrity compromise reported.
Mitigation Recommendations
To mitigate CVE-2023-52506, European organizations should: 1) Identify any Linux systems running on LoongArch architecture, particularly those with kernels including the affected commit or versions prior to the fix. 2) Apply the official Linux kernel patches that set reserved memblocks on Node#0 during initialization to prevent the NULL pointer dereference. If official patches are not yet available, consider backporting the fix from the mainline kernel or disabling DEFERRED_STRUCT_PAGE_INIT if feasible, though this may impact kernel memory management features. 3) Test kernel updates in controlled environments to ensure stability and compatibility with existing hardware and software stacks. 4) Monitor system logs for kernel panics or boot failures indicative of this issue. 5) For deployment pipelines or automated provisioning systems using LoongArch hardware, incorporate kernel version checks and patch management to prevent rollout of vulnerable kernels. 6) Engage with hardware vendors and Linux distribution maintainers to receive timely updates and guidance on LoongArch kernel support. These steps go beyond generic advice by focusing on architecture-specific identification, patch application, and operational monitoring tailored to this vulnerability.
Affected Countries
Germany, France, United Kingdom, Netherlands, Finland
CVE-2023-52506: Vulnerability in Linux Linux
Description
In the Linux kernel, the following vulnerability has been resolved: LoongArch: Set all reserved memblocks on Node#0 at initialization After commit 61167ad5fecdea ("mm: pass nid to reserve_bootmem_region()") we get a panic if DEFERRED_STRUCT_PAGE_INIT is enabled: [ 0.000000] CPU 0 Unable to handle kernel paging request at virtual address 0000000000002b82, era == 90000000040e3f28, ra == 90000000040e3f18 [ 0.000000] Oops[#1]: [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 6.5.0+ #733 [ 0.000000] pc 90000000040e3f28 ra 90000000040e3f18 tp 90000000046f4000 sp 90000000046f7c90 [ 0.000000] a0 0000000000000001 a1 0000000000200000 a2 0000000000000040 a3 90000000046f7ca0 [ 0.000000] a4 90000000046f7ca4 a5 0000000000000000 a6 90000000046f7c38 a7 0000000000000000 [ 0.000000] t0 0000000000000002 t1 9000000004b00ac8 t2 90000000040e3f18 t3 90000000040f0800 [ 0.000000] t4 00000000000f0000 t5 80000000ffffe07e t6 0000000000000003 t7 900000047fff5e20 [ 0.000000] t8 aaaaaaaaaaaaaaab u0 0000000000000018 s9 0000000000000000 s0 fffffefffe000000 [ 0.000000] s1 0000000000000000 s2 0000000000000080 s3 0000000000000040 s4 0000000000000000 [ 0.000000] s5 0000000000000000 s6 fffffefffe000000 s7 900000000470b740 s8 9000000004ad4000 [ 0.000000] ra: 90000000040e3f18 reserve_bootmem_region+0xec/0x21c [ 0.000000] ERA: 90000000040e3f28 reserve_bootmem_region+0xfc/0x21c [ 0.000000] CRMD: 000000b0 (PLV0 -IE -DA +PG DACF=CC DACM=CC -WE) [ 0.000000] PRMD: 00000000 (PPLV0 -PIE -PWE) [ 0.000000] EUEN: 00000000 (-FPE -SXE -ASXE -BTE) [ 0.000000] ECFG: 00070800 (LIE=11 VS=7) [ 0.000000] ESTAT: 00010800 [PIL] (IS=11 ECode=1 EsubCode=0) [ 0.000000] BADV: 0000000000002b82 [ 0.000000] PRID: 0014d000 (Loongson-64bit, Loongson-3A6000) [ 0.000000] Modules linked in: [ 0.000000] Process swapper (pid: 0, threadinfo=(____ptrval____), task=(____ptrval____)) [ 0.000000] Stack : 0000000000000000 9000000002eb5430 0000003a00000020 90000000045ccd00 [ 0.000000] 900000000470e000 90000000002c1918 0000000000000000 9000000004110780 [ 0.000000] 00000000fe6c0000 0000000480000000 9000000004b4e368 9000000004110748 [ 0.000000] 0000000000000000 900000000421ca84 9000000004620000 9000000004564970 [ 0.000000] 90000000046f7d78 9000000002cc9f70 90000000002c1918 900000000470e000 [ 0.000000] 9000000004564970 90000000040bc0e0 90000000046f7d78 0000000000000000 [ 0.000000] 0000000000004000 90000000045ccd00 0000000000000000 90000000002c1918 [ 0.000000] 90000000002c1900 900000000470b700 9000000004b4df78 9000000004620000 [ 0.000000] 90000000046200a8 90000000046200a8 0000000000000000 9000000004218b2c [ 0.000000] 9000000004270008 0000000000000001 0000000000000000 90000000045ccd00 [ 0.000000] ... [ 0.000000] Call Trace: [ 0.000000] [<90000000040e3f28>] reserve_bootmem_region+0xfc/0x21c [ 0.000000] [<900000000421ca84>] memblock_free_all+0x114/0x350 [ 0.000000] [<9000000004218b2c>] mm_core_init+0x138/0x3cc [ 0.000000] [<9000000004200e38>] start_kernel+0x488/0x7a4 [ 0.000000] [<90000000040df0d8>] kernel_entry+0xd8/0xdc [ 0.000000] [ 0.000000] Code: 02eb21ad 00410f4c 380c31ac <262b818d> 6800b70d 02c1c196 0015001c 57fe4bb1 260002cd The reason is early memblock_reserve() in memblock_init() set node id to MAX_NUMNODES, making NODE_DATA(nid) a NULL dereference in the call chain reserve_bootmem_region() -> init_reserved_page(). After memblock_init(), those late calls of memblock_reserve() operate on subregions of memblock .memory regions. As a result, these reserved regions will be set to the correct node at the first iteration of memmap_init_reserved_pages(). So set all reserved memblocks on Node#0 at initialization can avoid this panic.
AI-Powered Analysis
Technical Analysis
CVE-2023-52506 is a vulnerability identified in the Linux kernel specifically affecting the LoongArch architecture. The issue arises from improper initialization of reserved memory blocks (memblocks) during early kernel boot. After a particular commit (61167ad5fecdea) that modified the memory reservation function to pass a node ID (nid) to reserve_bootmem_region(), a kernel panic occurs if the DEFERRED_STRUCT_PAGE_INIT feature is enabled. The panic is caused by a NULL pointer dereference due to memblock_reserve() setting the node ID to MAX_NUMNODES (an invalid node) during early memory reservation in memblock_init(). This leads to NODE_DATA(nid) being NULL in the call chain reserve_bootmem_region() -> init_reserved_page(), causing the kernel to crash during initialization. The root cause is that early memblock_reserve() calls operate on the entire memory region without a valid node assignment, while later calls operate on subregions correctly assigned to nodes. The fix involves setting all reserved memblocks to Node#0 at initialization to avoid the NULL dereference and subsequent kernel panic. This vulnerability affects Linux kernel versions containing the specified commit and impacts systems running on the LoongArch CPU architecture, such as Loongson-3A6000 processors. The vulnerability manifests as a denial of service (DoS) condition during system boot, preventing the kernel from initializing properly and causing system crashes. There is no known exploitation in the wild, and no CVSS score has been assigned yet.
Potential Impact
For European organizations, the primary impact of CVE-2023-52506 is a denial of service at the kernel level on systems using the LoongArch architecture with affected Linux kernel versions. This could lead to system unavailability, particularly for critical infrastructure or embedded systems relying on LoongArch-based hardware. Although LoongArch is less common in Europe compared to x86 or ARM architectures, organizations using specialized hardware or engaging in research, development, or deployment of LoongArch systems could face operational disruptions. The inability to boot affected Linux kernels could delay system recovery and maintenance, impacting business continuity. Since the vulnerability occurs at boot time, remote exploitation is unlikely without prior access, but local administrators or automated deployment systems could be affected. The lack of known exploits reduces immediate risk, but unpatched systems remain vulnerable to accidental crashes or misconfigurations triggering the panic. Overall, the impact is primarily availability-related, with no direct confidentiality or integrity compromise reported.
Mitigation Recommendations
To mitigate CVE-2023-52506, European organizations should: 1) Identify any Linux systems running on LoongArch architecture, particularly those with kernels including the affected commit or versions prior to the fix. 2) Apply the official Linux kernel patches that set reserved memblocks on Node#0 during initialization to prevent the NULL pointer dereference. If official patches are not yet available, consider backporting the fix from the mainline kernel or disabling DEFERRED_STRUCT_PAGE_INIT if feasible, though this may impact kernel memory management features. 3) Test kernel updates in controlled environments to ensure stability and compatibility with existing hardware and software stacks. 4) Monitor system logs for kernel panics or boot failures indicative of this issue. 5) For deployment pipelines or automated provisioning systems using LoongArch hardware, incorporate kernel version checks and patch management to prevent rollout of vulnerable kernels. 6) Engage with hardware vendors and Linux distribution maintainers to receive timely updates and guidance on LoongArch kernel support. These steps go beyond generic advice by focusing on architecture-specific identification, patch application, and operational monitoring tailored to this vulnerability.
Affected Countries
For access to advanced analysis and higher rate limits, contact root@offseq.com
Technical Details
- Data Version
- 5.1
- Assigner Short Name
- Linux
- Date Reserved
- 2024-02-20T12:30:33.314Z
- Cisa Enriched
- true
- Cvss Version
- null
- State
- PUBLISHED
Threat ID: 682d9831c4522896dcbe7baf
Added to database: 5/21/2025, 9:09:05 AM
Last enriched: 7/1/2025, 9:56:26 AM
Last updated: 8/9/2025, 11:56:04 PM
Views: 13
Related Threats
CVE-2025-8921: SQL Injection in code-projects Job Diary
MediumCVE-2025-8920: Cross Site Scripting in Portabilis i-Diario
MediumCVE-2025-45316: n/a
UnknownCVE-2025-45314: n/a
UnknownCVE-2025-8919: Cross Site Scripting in Portabilis i-Diario
MediumActions
Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.
External Links
Need enhanced features?
Contact root@offseq.com for Pro access with improved analysis and higher rate limits.