CVE-2025-38378 Information
Description
In the Linux kernel the following vulnerability has been resolved:
HID: appletb-kbd: fix slab use-after-free bug in appletb_kbd_probe
In probe appletb_kbd_probe() a \struct appletb_kbd kbd\ is allocated via devm_kzalloc() to store touch bar keyboard related data. Later on if backlight_device_get_by_name() finds a backlight device with name ppletb_backlight\ a timer (kbd->inactivity_timer) is setup with appletb_inactivity_timer() and the timer is armed to run after appletb_tb_dim_timeout (60) seconds.
A use-after-free is triggered when failure occurs after the timer is armed. This ultimately means probe failure occurs and as a result the \struct appletb_kbd kbd\ which is device managed memory is freed. After 60 seconds the timer will have expired and __run_timers will attempt to access the timer (kbd->inactivity_timer) however the kdb structure has been freed causing a use-after free.
[ 71.636938] ==================================================================
[ 71.637915] BUG: KASAN: slab-use-after-free in __run_timers+0x7ad/0x890
[ 71.637915] Write of size 8 at addr ffff8881178c5958 by task swapper/1/0
[ 71.637915]
[ 71.637915] CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 6.16.0-rc2-00318-g739a6c93cc75-dirty 12 PREEMPT(voluntary)
[ 71.637915] Hardware name: QEMU Standard PC (i440FX + PIIX 1996) BIOS 1.16.2-debian-1.16.2-1 04/01/2014
[ 71.637915] Call Trace:
[ 71.637915]
The root cause of the issue is that the timer is not disarmed on failure paths leading to it remaining active and accessing freed memory. To fix this call timer_delete_sync() to deactivate the timer.
Another small issue is that timer_delete_sync is called unconditionally in appletb_kbd_remove() fix this by checking for a valid kbd->backlight_dev before calling timer_delete_sync.
Reference
https://git.kernel.org/stable/c/38224c472a038fa9ccd4085511dd9f3d6119dbf9 https://git.kernel.org/stable/c/51720dee3a61ebace36c3dcdd0b4a488e0970f29
Related CNNVD
CNNVD-202507-3204 (Published: 2025-07-25)
Share on: