CVE-2023-53587 in Linuxinfo

Summary

by MITRE • 10/04/2025

In the Linux kernel, the following vulnerability has been resolved:

ring-buffer: Sync IRQ works before buffer destruction

If something was written to the buffer just before destruction, it may be possible (maybe not in a real system, but it did happen in ARCH=um with time-travel) to destroy the ringbuffer before the IRQ work ran, leading this KASAN report (or a crash without KASAN):

BUG: KASAN: slab-use-after-free in irq_work_run_list+0x11a/0x13a Read of size 8 at addr 000000006d640a48 by task swapper/0

CPU: 0 PID: 0 Comm: swapper Tainted: G W O 6.3.0-rc1 #7 Stack: 60c4f20f 0c203d48 41b58ab3 60f224fc 600477fa 60f35687 60c4f20f 601273dd 00000008 6101eb00 6101eab0 615be548 Call Trace: [<60047a58>] show_stack+0x25e/0x282
[<60c609e0>] dump_stack_lvl+0x96/0xfd
[<60c50d4c>] print_report+0x1a7/0x5a8
[<603078d3>] kasan_report+0xc1/0xe9
[<60308950>] __asan_report_load8_noabort+0x1b/0x1d
[<60232844>] irq_work_run_list+0x11a/0x13a
[<602328b4>] irq_work_tick+0x24/0x34
[<6017f9dc>] update_process_times+0x162/0x196
[<6019f335>] tick_sched_handle+0x1a4/0x1c3
[<6019fd9e>] tick_sched_timer+0x79/0x10c
[<601812b9>] __hrtimer_run_queues.constprop.0+0x425/0x695
[<60182913>] hrtimer_interrupt+0x16c/0x2c4
[<600486a3>] um_timer+0x164/0x183
[...]

Allocated by task 411: save_stack_trace+0x99/0xb5 stack_trace_save+0x81/0x9b kasan_save_stack+0x2d/0x54 kasan_set_track+0x34/0x3e kasan_save_alloc_info+0x25/0x28 ____kasan_kmalloc+0x8b/0x97 __kasan_kmalloc+0x10/0x12 __kmalloc+0xb2/0xe8 load_elf_phdrs+0xee/0x182 [...]

The buggy address belongs to the object at 000000006d640800 which belongs to the cache kmalloc-1k of size 1024 The buggy address is located 584 bytes inside of freed 1024-byte region [000000006d640800, 000000006d640c00)

Add the appropriate irq_work_sync() so the work finishes before the buffers are destroyed.

Prior to the commit in the Fixes tag below, there was only a single global IRQ work, so this issue didn't exist.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 04/27/2026

The vulnerability described in CVE-2023-53587 resides within the Linux kernel's ring buffer implementation and specifically addresses a race condition involving interrupt work synchronization during buffer destruction. This issue manifests when data is written to a ring buffer immediately before its destruction, creating a scenario where the interrupt work may not complete execution before the buffer memory is freed. The vulnerability was particularly evident in the user-mode Linux (ARCH=um) environment during time-travel debugging scenarios, though it could theoretically occur in real systems under specific timing conditions.

The technical flaw stems from improper synchronization between interrupt work execution and memory deallocation in the ring buffer subsystem. When the kernel attempts to destroy a ring buffer, it fails to ensure that all pending interrupt work has completed before proceeding with memory cleanup. This results in a use-after-free condition where the interrupt work handler tries to access memory that has already been freed, leading to kernel memory corruption and potential system crashes. The KASAN (Kernel Address Sanitizer) report demonstrates this issue with a specific memory access violation at address 000000006d640a48, where the kernel attempts to read an 8-byte value from memory that has already been deallocated.

The operational impact of this vulnerability extends beyond simple system crashes to potentially enable privilege escalation or denial of service conditions within kernel space. The use-after-free condition creates an attack surface where malicious actors could potentially manipulate the freed memory to execute arbitrary code or corrupt kernel data structures. This vulnerability directly relates to CWE-416, which defines use-after-free conditions in software, and aligns with ATT&CK technique T1068, which covers exploit for privilege escalation through kernel vulnerabilities. The flaw is particularly concerning because it occurs during normal system operation when ring buffers are being managed, making it difficult to predict or prevent in production environments.

The fix implemented addresses this vulnerability by adding an appropriate irq_work_sync() call to ensure that all interrupt work completes before the ring buffer is destroyed. This synchronization mechanism guarantees that pending interrupt work handlers finish execution and release any references to the buffer memory before the kernel proceeds with deallocation. Prior to this fix, the system relied on a single global IRQ work mechanism that prevented such race conditions, but changes to the architecture introduced this vulnerability. The solution follows established kernel development practices for managing interrupt work synchronization and memory lifecycle management, ensuring proper ordering of operations during buffer destruction. This remediation maintains system stability while preserving the intended functionality of the ring buffer subsystem and prevents potential exploitation through memory corruption attacks.

Responsible

Linux

Reservation

10/04/2025

Disclosure

10/04/2025

Moderation

accepted

CPE

ready

EPSS

0.00150

KEV

no

Activities

very low

Sources

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!