CVE-2024-42232CWE-416

CVE-2024-42232

Critical · published August 7, 2024

CVSS v3.1
9.8
EPSS
1%
Percentile
54.8
In the wild
Unconfirmed
What it is

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

libceph: fix race between delayed_work() and ceph_monc_stop()

The way the delayed work is handled in ceph_monc_stop() is prone to

races with mon_fault() and possibly also finish_hunting(). Both of

these can requeue the delayed work which wouldn't be canceled by any of

the following code in case that happens after cancel_delayed_work_sync()

runs -- __close_session() doesn't mess with the delayed work in order

to avoid interfering with the hunting interval logic. This part was

missed in commit b5d91704f53e ("libceph: behave in mon_fault() if

cur_mon < 0") and use-after-free can still ensue on monc and objects

that hang off of it, with monc->auth and monc->monmap being

particularly susceptible to quickly being reused.

To fix this:

- clear monc->cur_mon and monc->hunting as part of closing the session

in ceph_monc_stop()

- bail from delayed_work() if monc->cur_mon is cleared, similar to how

it's done in mon_fault() and finish_hunting() (based on monc->hunting)

- call cancel_delayed_work_sync() after the session is closed

The record
Technical detail
CVSS v3.1
9.8 · CRITICAL
Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00760 · 54.8th percentile
Weakness
CWE-416 · Use After Free
Published
2024-08-07T20:15Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel< 4.19.3184.19.318
linux/linux_kernel≥ 4.20, < 5.4.2805.4.280
linux/linux_kernel≥ 5.5, < 5.10.2225.10.222
linux/linux_kernel≥ 5.11, < 5.15.1635.15.163
linux/linux_kernel≥ 5.16, < 6.1.1006.1.100
linux/linux_kernel≥ 6.2, < 6.6.416.6.41
linux/linux_kernel≥ 6.7, < 6.9.106.9.10
References (9)
EPSS history
Timeline
  • 07 AUG 15:14Z
    libceph: fix race between delayed_work() and ceph_monc_stop()
    cvelistv5