CVE-2024-53186

ksmbd: fix use-after-free in SMB request handling

State
Published
Severity
9.8 Critical
Published
Dec 27, 2024
Updated
Aug 5, 2026
Reserved
Nov 19, 2024

Read the record on cve.org

Description

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

ksmbd: fix use-after-free in SMB request handling

A race condition exists between SMB request handling in `ksmbd_conn_handler_loop()` and the freeing of `ksmbd_conn` in the workqueue handler `handle_ksmbd_work()`. This leads to a UAF. - KASAN: slab-use-after-free Read in handle_ksmbd_work - KASAN: slab-use-after-free in rtlock_slowlock_locked

This race condition arises as follows: - `ksmbd_conn_handler_loop()` waits for `conn->r_count` to reach zero: `wait_event(conn->r_count_q, atomic_read(&conn->r_count) == 0);` - Meanwhile, `handle_ksmbd_work()` decrements `conn->r_count` using `atomic_dec_return(&conn->r_count)`, and if it reaches zero, calls `ksmbd_conn_free()`, which frees `conn`. - However, after `handle_ksmbd_work()` decrements `conn->r_count`, it may still access `conn->r_count_q` in the following line: `waitqueue_active(&conn->r_count_q)` or `wake_up(&conn->r_count_q)` This results in a UAF, as `conn` has already been freed.

The discovery of this UAF can be referenced in the following PR for syzkaller's support for SMB requests.

Scores

CVSSScoreVectorSource
3.19.8 CriticalCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HCISA-ADP

Weaknesses

Affected Products

ProductVersions
LinuxLinux
  • 18f06bacc197d4ac9b518ad1c69999bc3d83e7aa to before a96f9eb7add30ba0fafcfe7b7aca090978196800Affected
  • e9dac92f4482a382e8c0fe1bc243da5fc3526b0c to before f20b77f7897e6aab9ce5527e6016ad2be5d70a33Affected
  • ee426bfb9d09b29987369b897fe9b6485ac2be27 to before 96261adb998a3b513468b6ce17dbec76be5507d4Affected
  • ee426bfb9d09b29987369b897fe9b6485ac2be27 to before 9a8c5d89d327ff58e9b2517f8a6afb4181d32c6eAffected
  • 9fd3cde4628bcd3549ab95061f2bab74d2ed4f3bAffected
  • 6.6.55 to before 6.6.64Affected
  • 6.11.3 to before 6.11.11Affected
  • 6.10.14 to before 6.11Affected
LinuxLinux
  • 6.12Affected
  • before 6.12Not affected
  • 6.6.64 through 6.6.*Not affected
  • 6.11.11 through 6.11.*Not affected
  • 6.12.2 through 6.12.*Not affected
  • 6.13 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.