CVE-2025-21731

nbd: don't allow reconnect after disconnect

Published Feb 27, 2025 CVSS 3.1 · 7.8 High EPSS < 1% KEV · Not listed
Description
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.

Remediation

No solution or workaround provided in the CVE record

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Debian DLA Debian DLA DLA-4102-1 linux-6.1 security update
Debian DLA Debian DLA DLA-4178-1 linux security update
EUVD EUVD EUVD-2025-5235 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.
Ubuntu USN Ubuntu USN USN-7510-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-2 Linux kernel (FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-4 Linux kernel (Real-time) vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-5 Linux kernel (Azure FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-6 Linux kernel (AWS FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-7 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7510-8 Linux kernel (AWS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7511-1 Linux kernel (GCP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7511-2 Linux kernel (GCP FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7511-3 Linux kernel (GKE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7512-1 Linux kernel (GCP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-2 Linux kernel (GCP FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-4 Linux kernel (Oracle) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-5 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-6 Linux kernel (IBM) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-7 Linux kernel (AWS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-8 Linux kernel (FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7516-9 Linux kernel (AWS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7517-1 Linux kernel (Xilinx ZynqMP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7517-2 Linux kernel (IBM) vulnerabilities
Ubuntu USN Ubuntu USN USN-7517-3 Linux kernel (BlueField) vulnerabilities
Ubuntu USN Ubuntu USN USN-7518-1 Linux kernel (Azure FIPS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7521-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7521-2 Linux kernel (AWS) vulnerabilities
Ubuntu USN Ubuntu USN USN-7521-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7539-1 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-7540-1 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-7593-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7602-1 Linux kernel (Xilinx ZynqMP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7640-1 Linux kernel (IoT) vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-1 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-2 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-3 Linux kernel vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-4 Linux kernel (GCP) vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-5 Linux kernel (Raspberry Pi Real-time) vulnerabilities
Ubuntu USN Ubuntu USN USN-7651-6 Linux kernel (Raspberry Pi) vulnerabilities
Ubuntu USN Ubuntu USN USN-7652-1 Linux kernel (Real-time) vulnerabilities
Ubuntu USN Ubuntu USN USN-7653-1 Linux kernel (HWE) vulnerabilities
Ubuntu USN Ubuntu USN USN-7737-1 Linux kernel (Azure) vulnerabilities
History
Type Values Removed Values Added
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Weaknesses CWE-416
Metrics cvssV3_1

{'score': 7.8, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H'}

Type Values Removed Values Added
Description 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.
Title nbd: don't allow reconnect after disconnect
References
Weaknesses

Sources

Status
PUBLISHED
Assigner
Linux
Published
Updated
Nov 10, 2026, 12:34 PM
Reserved
Dec 29, 2024, 8:45 AM
Status
Modified
Published
Feb 27, 2025, 2:15 AM
Modified
Nov 10, 2026, 1:17 PM
Severity
Moderate
Public date
Feb 27, 2025, 12:00 AM