Skip to main content
VulnerabilityPublished Updated

CVE-2026-72404: Linux kernel · tipc: fix UAF in cleanup_bearer() due to premature dst_cache_destroy()

Affects Linux kernelSource CVE Database V5

0

Not known to be exploited · CVSS 7.8 High · fixed in 7116764ca53ff529335d7ab7c364a69f094b23a5 : patch Linux kernel soon.

Data as of 26 Oct 2026, 17:16 UTC

CVSS 3.1 base score
7.8High
How severe the flaw is on the 0–10 CVSS scale.
EPSS
0.1% chance of exploitation in 30 days – higher than 5% of CVEsExploit Prediction Scoring System: the likelihood attackers will use this flaw soon.
CISA SSVC
Exploitation
No evidence of active exploitation and no public proof of concept
Automatable
Attackers cannot reliably automate steps 1–4 of the kill chain
Technical impact
Total control over the software or total information disclosure

CISA SSVC assessment, 2026-10-16.

Patch
Available – fixed in 7116764ca53ff529335d7ab7c364a69f094b23a5, 3827ff67f9fbecd1086e33d23693ef6a1a9c6c38, 6b0e29f7662c237e717f35dad746efe94715d0da +2
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

Exploitation evidence

  1. Disclosed: evidence found.

    CVE published 15 Aug 2026

  2. Detectable: no evidence on record.

    No public nuclei template indexed

  3. Weaponised: no evidence on record.

    No public exploit code indexed in Metasploit or Exploit-DB

  4. Exploited in the wild: no evidence on record.

    Not in CISA KEV and no source reports exploitation

  5. Observed by OffSeq Mirage: no evidence on record.

    No attack traffic recorded by OffSeq Mirage sensors

A missing step is not evidence of safety. Sources: cve.org (opens in a new tab), the Metasploit, Exploit-DB and nuclei-templates index as of 26 Oct 2026.

What to do

Upgrade to a fixed release listed under Affected software.

Affected software

ProductAffectedFixed in
LinuxLinuxAffected
  • ≥ e9c1a793210f29f32ee4cf048e04d7d9bb3221cc, < 7116764ca53ff529335d7ab7c364a69f094b23a5
Fixed in
  • 7116764ca53ff529335d7ab7c364a69f094b23a5
LinuxLinuxAffected
  • ≥ e9c1a793210f29f32ee4cf048e04d7d9bb3221cc, < 3827ff67f9fbecd1086e33d23693ef6a1a9c6c38
Fixed in
  • 3827ff67f9fbecd1086e33d23693ef6a1a9c6c38
LinuxLinuxAffected
  • ≥ e9c1a793210f29f32ee4cf048e04d7d9bb3221cc, < 6b0e29f7662c237e717f35dad746efe94715d0da
Fixed in
  • 6b0e29f7662c237e717f35dad746efe94715d0da
LinuxLinuxAffected
  • ≥ e9c1a793210f29f32ee4cf048e04d7d9bb3221cc, < 6aeb4ba4fb098199e13723cfd04d9a749741f731
Fixed in
  • 6aeb4ba4fb098199e13723cfd04d9a749741f731
LinuxLinuxAffected
  • ≥ e9c1a793210f29f32ee4cf048e04d7d9bb3221cc, < 1c8393eefa3cadf4ca0b61119ad1321aa32d3c8c
Fixed in
  • 1c8393eefa3cadf4ca0b61119ad1321aa32d3c8c
LinuxLinuxAffected
  • =5.3
Fixed in–

Description

In the Linux kernel, the following vulnerability has been resolved: tipc: fix UAF in cleanup_bearer() due to premature dst_cache_destroy() TIPC UDP media bearer teardown calls dst_cache_destroy() on its replicast caches before calling synchronize_net() to wait for concurrent RCU readers (transmitters) to finish: static void cleanup_bearer(struct work_struct *work) { ... list_for_each_entry_safe(rcast, tmp, &ub->rcast.list, list) { dst_cache_destroy(&rcast->dst_cache); list_del_rcu(&rcast->list); kfree_rcu(rcast, rcu); } ... dst_cache_destroy(&ub->rcast.dst_cache); udp_tunnel_sock_release(ub->sk); synchronize_net(); ... } This is highly buggy because dst_cache_destroy() immediately frees the per-CPU cache memory (free_percpu()) and releases the cached dst entries without any synchronization. If a concurrent transmitter (e.g., tipc_udp_xmit()) is running on another CPU under RCU protection, it can call dst_cache_get() concurrently, leading to: 1. Use-After-Free on the per-CPU cache pointer itself (crash). 2. "rcuref - imbalanced put()" warning if it attempts to release a dst that was concurrently released by dst_cache_destroy(). Furthermore, calling kfree(ub) immediately after synchronize_net() without closing the socket first (or waiting after closing it) leaves a window where a concurrent receiver (tipc_udp_recv()) could start after synchronize_net(), access ub, and suffer a UAF when kfree(ub) runs. To fix this, we must defer dst_cache_destroy() and kfree(ub) until after we have ensured that no more readers can see the bearer/socket and all existing readers have finished: 1. Defer rcast entry destruction (both dst_cache_destroy() and kfree()) to an RCU callback using call_rcu_hurry(). Using call_rcu_hurry() ensures the dst entries are released quickly. 2. Release the bearer socket using udp_tunnel_sock_release() (stops new receive readers). 3. Call synchronize_net() to wait for all outstanding RCU readers (both transmit and receive) to finish. 4. Now that it is safe, call dst_cache_destroy() on the main bearer cache, and free ub. Note: 3) and 4) can be changed later in net-next to also use call_rcu_hurry() and get rid of the synchronize_net() latency.

References

Community reviews

Loading reviews…