CVE-2025-21731CWE-416

CVE-2025-21731

High · published February 27, 2025

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

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

nbd: don't allow reconnect after disconnect

Following process can cause nbd_config UAF:

1) grab nbd_config temporarily;

2) nbd_genl_disconnect() flush all recv_work() and release the

initial reference:

nbd_genl_disconnect

nbd_disconnect_and_put

nbd_disconnect

flush_workqueue(nbd->recv_workq)

if (test_and_clear_bit(NBD_RT_HAS_CONFIG_REF, ...))

nbd_config_put

-> due to step 1), reference is still not zero

3) nbd_genl_reconfigure() queue recv_work() again;

nbd_genl_reconfigure

config = nbd_get_config_unlocked(nbd)

if (!config)

-> succeed

if (!test_bit(NBD_RT_BOUND, ...))

-> succeed

nbd_reconnect_socket

queue_work(nbd->recv_workq, &args->work)

4) step 1) release the reference;

5) Finially, recv_work() will trigger UAF:

recv_work

nbd_config_put(nbd)

-> nbd_config is freed

atomic_dec(&config->recv_threads)

-> UAF

Fix the problem by clearing NBD_RT_BOUND in nbd_genl_disconnect(), so

that nbd_genl_reconfigure() will fail.

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.00240 · 14.2th percentile
Weakness
CWE-416 · Use After Free
Published
2025-02-27T07:15Z
Affected products (7)
ProductVersionsFixed in
linux/linux_kernel≥ 4.12, < 5.4.2915.4.291
linux/linux_kernel≥ 5.5, < 5.10.2355.10.235
linux/linux_kernel≥ 5.11, < 5.15.1795.15.179
linux/linux_kernel≥ 5.16, < 6.1.1296.1.129
linux/linux_kernel≥ 6.2, < 6.6.766.6.76
linux/linux_kernel≥ 6.7, < 6.12.136.12.13
linux/linux_kernel≥ 6.13, < 6.13.26.13.2
References (13)
EPSS history
Timeline
  • 27 FEB 02:07Z
    nbd: don't allow reconnect after disconnect
    cvelistv5