CVE-2024-26983

In the Linux kernel, the following vulnerability has been resolved: bootconfig: use memblock_free_late to free xbc memory to buddy On the time to free xbc memory in xbc_exit(), memblock may has handed over memory to buddy allocator. So it doesn't make sense to free memory back to memblock. memblock_free() called by xbc_exit() even causes UAF bugs on architectures with CONFIG_ARCH_KEEP_MEMBLOCK disabled like x86. Following KASAN logs shows this case. This patch fixes the xbc memory free problem by calling memblock_free() in early xbc init error rewind path and calling memblock_free_late() in xbc exit path to free memory to buddy allocator. [ 9.410890] ================================================================== [ 9.418962] BUG: KASAN: use-after-free in memblock_isolate_range+0x12d/0x260 [ 9.426850] Read of size 8 at addr ffff88845dd30000 by task swapper/0/1 [ 9.435901] CPU: 9 PID: 1 Comm: swapper/0 Tainted: G U 6.9.0-rc3-00208-g586b5dfb51b9 #5 [ 9.446403] Hardware name: Intel Corporation RPLP LP5 (CPU:RaptorLake)/RPLP LP5 (ID:13), BIOS IRPPN02.01.01.00.00.19.015.D-00000000 Dec 28 2023 [ 9.460789] Call Trace: [ 9.463518] <TASK> [ 9.465859] dump_stack_lvl+0x53/0x70 [ 9.469949] print_report+0xce/0x610 [ 9.473944] ? __virt_addr_valid+0xf5/0x1b0 [ 9.478619] ? memblock_isolate_range+0x12d/0x260 [ 9.483877] kasan_report+0xc6/0x100 [ 9.487870] ? memblock_isolate_range+0x12d/0x260 [ 9.493125] memblock_isolate_range+0x12d/0x260 [ 9.498187] memblock_phys_free+0xb4/0x160 [ 9.502762] ? __pfx_memblock_phys_free+0x10/0x10 [ 9.508021] ? mutex_unlock+0x7e/0xd0 [ 9.512111] ? __pfx_mutex_unlock+0x10/0x10 [ 9.516786] ? kernel_init_freeable+0x2d4/0x430 [ 9.521850] ? __pfx_kernel_init+0x10/0x10 [ 9.526426] xbc_exit+0x17/0x70 [ 9.529935] kernel_init+0x38/0x1e0 [ 9.533829] ? _raw_spin_unlock_irq+0xd/0x30 [ 9.538601] ret_from_fork+0x2c/0x50 [ 9.542596] ? __pfx_kernel_init+0x10/0x10 [ 9.547170] ret_from_fork_asm+0x1a/0x30 [ 9.551552] </TASK> [ 9.555649] The buggy address belongs to the physical page: [ 9.561875] page: refcount:0 mapcount:0 mapping:0000000000000000 index:0x1 pfn:0x45dd30 [ 9.570821] flags: 0x200000000000000(node=0|zone=2) [ 9.576271] page_type: 0xffffffff() [ 9.580167] raw: 0200000000000000 ffffea0011774c48 ffffea0012ba1848 0000000000000000 [ 9.588823] raw: 0000000000000001 0000000000000000 00000000ffffffff 0000000000000000 [ 9.597476] page dumped because: kasan: bad access detected [ 9.605362] Memory state around the buggy address: [ 9.610714] ffff88845dd2ff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 9.618786] ffff88845dd2ff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 9.626857] >ffff88845dd30000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.634930] ^ [ 9.638534] ffff88845dd30080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.646605] ffff88845dd30100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.654675] ==================================================================
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:*

History

23 Dec 2024, 14:53

Type Values Removed Values Added
First Time Linux linux Kernel
Linux
CPE cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/1e7feb31a18c197d63a5e606025ed63c762f8918 - () https://git.kernel.org/stable/c/1e7feb31a18c197d63a5e606025ed63c762f8918 - Patch
References () https://git.kernel.org/stable/c/5a7dfb8fcd3f29fc93161100179b27f24f3d5f35 - () https://git.kernel.org/stable/c/5a7dfb8fcd3f29fc93161100179b27f24f3d5f35 - Patch
References () https://git.kernel.org/stable/c/89f9a1e876b5a7ad884918c03a46831af202c8a0 - () https://git.kernel.org/stable/c/89f9a1e876b5a7ad884918c03a46831af202c8a0 - Patch
References () https://git.kernel.org/stable/c/e46d3be714ad9652480c6db129ab8125e2d20ab7 - () https://git.kernel.org/stable/c/e46d3be714ad9652480c6db129ab8125e2d20ab7 - Patch
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.8
CWE CWE-416

21 Nov 2024, 09:03

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/1e7feb31a18c197d63a5e606025ed63c762f8918 - () https://git.kernel.org/stable/c/1e7feb31a18c197d63a5e606025ed63c762f8918 -
References () https://git.kernel.org/stable/c/5a7dfb8fcd3f29fc93161100179b27f24f3d5f35 - () https://git.kernel.org/stable/c/5a7dfb8fcd3f29fc93161100179b27f24f3d5f35 -
References () https://git.kernel.org/stable/c/89f9a1e876b5a7ad884918c03a46831af202c8a0 - () https://git.kernel.org/stable/c/89f9a1e876b5a7ad884918c03a46831af202c8a0 -
References () https://git.kernel.org/stable/c/e46d3be714ad9652480c6db129ab8125e2d20ab7 - () https://git.kernel.org/stable/c/e46d3be714ad9652480c6db129ab8125e2d20ab7 -

13 May 2024, 08:15

Type Values Removed Values Added
References
  • {'url': 'https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/', 'source': '416baaa9-dc9f-4396-8d5f-8c081fb06d67'}
  • {'url': 'https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/', 'source': '416baaa9-dc9f-4396-8d5f-8c081fb06d67'}
  • {'url': 'https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/', 'source': '416baaa9-dc9f-4396-8d5f-8c081fb06d67'}

03 May 2024, 03:16

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se resolvió la siguiente vulnerabilidad: bootconfig: use memblock_free_late para liberar memoria xbc para el amigo En el momento de liberar memoria xbc en xbc_exit(), es posible que memblock haya entregado la memoria al asignador de amigos. Por lo tanto, no tiene sentido liberar memoria en Memblock. memblock_free() llamado por xbc_exit() incluso causa errores UAF en arquitecturas con CONFIG_ARCH_KEEP_MEMBLOCK deshabilitado como x86. Los siguientes registros de KASAN muestran este caso. Este parche soluciona el problema de falta de memoria de xbc llamando a memblock_free() en la ruta de rebobinado del error de inicio temprano de xbc y llamando a memblock_free_late() en la ruta de salida de xbc para liberar memoria al asignador de amigos. [9.410890] ================================================= =================== [9.418962] ERROR: KASAN: use-after-free en memblock_isolate_range+0x12d/0x260 [9.426850] Lectura de tamaño 8 en la dirección ffff88845dd30000 por el intercambiador de tareas /0/1 [ 9.435901] CPU: 9 PID: 1 Comm: swapper/0 Contaminado: GU 6.9.0-rc3-00208-g586b5dfb51b9 #5 [ 9.446403] Nombre de hardware: Intel Corporation RPLP LP5 (CPU:RaptorLake)/RPLP LP5 (ID:13), BIOS IRPPN02.01.01.00.00.19.015.D-00000000 28 de diciembre de 2023 [9.460789] Seguimiento de llamadas: [9.463518] [9.465859] dump_stack_lvl+0x53/0x70 [9.469949] puerto+0xce/0x610 [ 9.473944] ? __virt_addr_valid+0xf5/0x1b0 [9.478619]? memblock_isolate_range+0x12d/0x260 [ 9.483877] kasan_report+0xc6/0x100 [ 9.487870] ? memblock_isolate_range+0x12d/0x260 [9.493125] memblock_isolate_range+0x12d/0x260 [9.498187] memblock_phys_free+0xb4/0x160 [9.502762]? __pfx_memblock_phys_free+0x10/0x10 [9.508021]? mutex_unlock+0x7e/0xd0 [9.512111]? __pfx_mutex_unlock+0x10/0x10 [9.516786]? kernel_init_freeable+0x2d4/0x430 [9.521850]? __pfx_kernel_init+0x10/0x10 [ 9.526426] xbc_exit+0x17/0x70 [ 9.529935] kernel_init+0x38/0x1e0 [ 9.533829] ? _raw_spin_unlock_irq+0xd/0x30 [9.538601] ret_from_fork+0x2c/0x50 [9.542596]? __pfx_kernel_init+0x10/0x10 [ 9.547170] ret_from_fork_asm+0x1a/0x30 [ 9.551552] [ 9.555649] La dirección con errores pertenece a la página física: [ 9.561875] página: refcount:0 mapcount:0 mapeo:00000000000 Índice 00000: 0x1 pfn :0x45dd30 [ 9.570821] banderas: 0x200000000000000(nodo=0|zona=2) [ 9.576271] tipo de página: 0xffffffff() [ 9.580167] raw: 0200000000000000 ffffea0011774c48 12ba1848 0000000000000000 [9.588823] raw: 0000000000000001 0000000000000000 00000000ffffffff 000000000000000000000000 [9.597476] página volcada porque: kasan: mal acceso detectado [9.605362] Estado de la memoria alrededor de la dirección con errores: [9.610714] ffff88845dd2ff00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 9.618786] ffff88845dd2ff80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 [ 9.626857] &gt;ffff88845dd30000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.634930] ^ [ 9.638534] ffff88845dd30080: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.646605] ffff88845dd30100: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff [ 9.654675] ======================= ===============================================
References
  • () https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/ -
  • () https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/ -
  • () https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/ -

01 May 2024, 13:02

Type Values Removed Values Added
New CVE

Information

Published : 2024-05-01 06:15

Updated : 2024-12-23 14:53


NVD link : CVE-2024-26983

Mitre link : CVE-2024-26983

CVE.ORG link : CVE-2024-26983


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-416

Use After Free