CVE-2025-40002 json
thunderbolt: Fix use-after-free in tb_dp_dprx_work
published 2025-10-18 12 mo ago modified 2026-10-19 20 d ago also EUVD-2025-34987
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 16%
- public exploits
- 0
- none known
Summary
In the Linux kernel, the following vulnerability has been resolved:
thunderbolt: Fix use-after-free in tb_dp_dprx_work
The original code relies on cancel_delayed_work() in tb_dp_dprx_stop(), which does not ensure that the delayed work item tunnel->dprx_work has fully completed if it was already running. This leads to use-after-free scenarios where tb_tunnel is deallocated by tb_tunnel_put(), while tunnel->dprx_work remains active and attempts to dereference tb_tunnel in tb_dp_dprx_work().
A typical race condition is illustrated below:
CPU 0 | CPU 1 tb_dp_tunnel_active() | tb_deactivate_and_free_tunnel()| tb_dp_dprx_start() tb_tunnel_deactivate() | queue_delayed_work() tb_dp_activate() | tb_dp_dprx_stop() | tb_dp_dprx_work() //delayed worker cancel_delayed_work() | tb_tunnel_put(tunnel); | | tunnel = container_of(...); //UAF | tunnel-> //UAF
Replacing cancel_delayed_work() with cancel_delayed_work_sync() is not feasible as it would introduce a deadlock: both tb_dp_dprx_work() and the cleanup path acquire tb->lock, and cancel_delayed_work_sync() would wait indefinitely for the work item that cannot proceed.
Instead, implement proper reference counting: - If cancel_delayed_work() returns true (work is pending), we release the reference in the stop function. - If it returns false (work is executing or already completed), the reference is released in delayed work function itself.
This ensures the tb_tunnel remains valid during work item execution while preventing memory leaks.
This bug was found by static analysis.
Patch / fix
- Linux Linux 6.17.3, 6.18
- linux Debian 14 6.17.6-1
debian advisories DEBIAN-CVE-2025-40002
- linux Ubuntu 25.10 6.17.0-14.14
- linux-aws Ubuntu 25.10 6.17.0-1007.7
- linux-gcp Ubuntu 25.10 6.17.0-1007.7
- linux-azure Ubuntu 25.10 6.17.0-1008.8
- linux-raspi Ubuntu 25.10 6.17.0-1008.8
- linux-riscv Ubuntu 25.10 6.17.0-14.14.1
- linux-oracle Ubuntu 25.10 6.17.0-1007.7
- linux-aws-6.17 Ubuntu 24.04 LTS 6.17.0-1007.7~24.04.1
ubuntu advisories UBUNTU-CVE-2025-40002
Ubuntu security data © Canonical Ltd., from https://github.com/canonical/ubuntu-security-notices via OSV; changed: normalised to fixed package versions per release. CC BY-SA 4.0
- kernel-source-longterm openSUSE Tumbleweed 6.18.16-1.1
- kernel-source openSUSE Tumbleweed 6.17.5-1.1
opensuse advisories openSUSE-SU-2026:10301-1openSUSE-SU-2025:15671-1
Vendor advisories
What the vendors themselves say about their products: affected, fixed or not affected, and what to do.
red hat product security vex CVE-2025-40002 updated
kernel: thunderbolt: Fix use-after-free in tb_dp_dprx_work
-
Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more Red Hat Enterprise Linux 8 perf, kernel, bpftool, kernel-rt, kernel-core, kernel-tools, +29 more Red Hat Enterprise Linux 9 rv, perf, rtla, kernel, bpftool, libperf, +83 more Red Hat Enterprise Linux 10 kernelnot affected: vulnerable code not present
Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf
Exploit prediction
0.25% chance of exploitation in the next 30 days, higher than 16% of all scored CVEs (FIRST EPSS, 2026-11-08).
Affected products
- Linux Linux
Classification
- Technology feeds
References
Sources
- CVE List CVE-2025-40002
- NVD CVE-2025-40002
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.