CVE-2024-56672CWE-416

CVE-2024-56672

High · published December 27, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
18.5
In the wild
Unconfirmed
What it is

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

blk-cgroup: Fix UAF in blkcg_unpin_online()

blkcg_unpin_online() walks up the blkcg hierarchy putting the online pin. To

walk up, it uses blkcg_parent(blkcg) but it was calling that after

blkcg_destroy_blkgs(blkcg) which could free the blkcg, leading to the

following UAF:

==================================================================

BUG: KASAN: slab-use-after-free in blkcg_unpin_online+0x15a/0x270

Read of size 8 at addr ffff8881057678c0 by task kworker/9:1/117

CPU: 9 UID: 0 PID: 117 Comm: kworker/9:1 Not tainted 6.13.0-rc1-work-00182-gb8f52214c61a-dirty #48

Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS unknown 02/02/2022

Workqueue: cgwb_release cgwb_release_workfn

Call Trace:

<TASK>

dump_stack_lvl+0x27/0x80

print_report+0x151/0x710

kasan_report+0xc0/0x100

blkcg_unpin_online+0x15a/0x270

cgwb_release_workfn+0x194/0x480

process_scheduled_works+0x71b/0xe20

worker_thread+0x82a/0xbd0

kthread+0x242/0x2c0

ret_from_fork+0x33/0x70

ret_from_fork_asm+0x1a/0x30

</TASK>

...

Freed by task 1944:

kasan_save_track+0x2b/0x70

kasan_save_free_info+0x3c/0x50

__kasan_slab_free+0x33/0x50

kfree+0x10c/0x330

css_free_rwork_fn+0xe6/0xb30

process_scheduled_works+0x71b/0xe20

worker_thread+0x82a/0xbd0

kthread+0x242/0x2c0

ret_from_fork+0x33/0x70

ret_from_fork_asm+0x1a/0x30

Note that the UAF is not easy to trigger as the free path is indirected

behind a couple RCU grace periods and a work item execution. I could only

trigger it with artifical msleep() injected in blkcg_unpin_online().

Fix it by reading the parent pointer before destroying the blkcg's blkg's.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00272 · 18.5th percentile
Weakness
CWE-416 · Use After Free
Published
2024-12-27T20:15Z
Affected products (5)
ProductVersionsFixed in
linux/linux_kernel≥ 5.7, < 6.1.1216.1.121
linux/linux_kernel≥ 6.2, < 6.6.676.6.67
linux/linux_kernel≥ 6.7, < 6.12.66.12.6
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (9)
EPSS history
Timeline
  • 27 DEC 15:06Z
    blk-cgroup: Fix UAF in blkcg_unpin_online()
    cvelistv5