CVE-2024-41051CWE-416

CVE-2024-41051

High · published July 29, 2024

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

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

cachefiles: wait for ondemand_object_worker to finish when dropping object

When queuing ondemand_object_worker() to re-open the object,

cachefiles_object is not pinned. The cachefiles_object may be freed when

the pending read request is completed intentionally and the related

erofs is umounted. If ondemand_object_worker() runs after the object is

freed, it will incur use-after-free problem as shown below.

process A processs B process C process D

cachefiles_ondemand_send_req()

// send a read req X

// wait for its completion

// close ondemand fd

cachefiles_ondemand_fd_release()

// set object as CLOSE

cachefiles_ondemand_daemon_read()

// set object as REOPENING

queue_work(fscache_wq, &info->ondemand_work)

// close /dev/cachefiles

cachefiles_daemon_release

cachefiles_flush_reqs

complete(&req->done)

// read req X is completed

// umount the erofs fs

cachefiles_put_object()

// object will be freed

cachefiles_ondemand_deinit_obj_info()

kmem_cache_free(object)

// both info and object are freed

ondemand_object_worker()

When dropping an object, it is no longer necessary to reopen the object,

so use cancel_work_sync() to cancel or wait for ondemand_object_worker()

to finish.

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.00275 · 18.9th percentile
Weakness
CWE-416 · Use After Free
Published
2024-07-29T19:15Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel≥ 6.1.95, < 6.1.1006.1.100
linux/linux_kernel≥ 6.6.35, < 6.6.416.6.41
linux/linux_kernel≥ 6.8, < 6.9.106.9.10
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (9)
EPSS history
Timeline
  • 29 JUL 14:32Z
    cachefiles: wait for ondemand_object_worker to finish when dropping object
    cvelistv5