9.8

CVE-2024-50154: tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().

Modified
AliasesUBUNTU-CVE-2024-50154DEBIAN-CVE-2024-50154
Published 07-11-2024Last modified 05-08-2026

Vulnerability summary

CVE-2024-50154 is a critical (CVSS 9.8) Use After Free vulnerability in linux. EPSS estimates a 0.56% chance of exploitation in the next 30 days, higher than 46.6% of scored vulnerabilities.

Priority
Prioritisesevere

Severe, CVSS 9.8 (CVE.org); no exploitation reported by the 5 checked sources; EPSS 1% (FIRST, 03-11-2026)

Source freshness unavailable

How is this decided?
CVSS score
9.8/10
010
Critical · v3.1 (CVE.org)
EPSS score
0.56%
0%100%
Low · 0.00 pp in 30 days
KEVNot listedNot listed by any tracked catalog.
RansomwareNot flaggedNo ransomware use recorded.
Public exploits0No public exploits recorded

Advisory lineage

Upstream 0 · Downstream 84 · Related 78

Timeline

  1. 07-11-2024
    PublishedVulnerability first disclosed.
  2. 05-08-2026
    Last modifiedVulnerability information updated.

Description

In the Linux kernel, the following vulnerability has been resolved: tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink(). Martin KaFai Lau reported use-after-free [0] in reqsk_timer_handler(). """ We are seeing a use-after-free from a bpf prog attached to trace_tcp_retransmit_synack. The program passes the req->sk to the bpf_sk_storage_get_tracing kernel helper which does check for null before using it. """ The commit 83fccfc3940c ("inet: fix potential deadlock in reqsk_queue_unlink()") added timer_pending() in reqsk_queue_unlink() not to call del_timer_sync() from reqsk_timer_handler(), but it introduced a small race window. Before the timer is called, expire_timers() calls detach_timer(timer, true) to clear timer->entry.pprev and marks it as not pending. If reqsk_queue_unlink() checks timer_pending() just after expire_timers() calls detach_timer(), TCP will miss del_timer_sync(); the reqsk timer will continue running and send multiple SYN+ACKs until it expires. The reported UAF could happen if req->sk is close()d earlier than the timer expiration, which is 63s by default. The scenario would be 1. inet_csk_complete_hashdance() calls inet_csk_reqsk_queue_drop(), but del_timer_sync() is missed 2. reqsk timer is executed and scheduled again 3. req->sk is accept()ed and reqsk_put() decrements rsk_refcnt, but reqsk timer still has another one, and inet_csk_accept() does not clear req->sk for non-TFO sockets 4. sk is close()d 5. reqsk timer is executed again, and BPF touches req->sk Let's not use timer_pending() by passing the caller context to __inet_csk_reqsk_queue_drop(). Note that reqsk timer is pinned, so the issue does not happen in most use cases. [1] [0] BUG: KFENCE: use-after-free read in bpf_sk_storage_get_tracing+0x2e/0x1b0 Use-after-free read at 0x00000000a891fb3a (in kfence-#1): bpf_sk_storage_get_tracing+0x2e/0x1b0 bpf_prog_5ea3e95db6da0438_tcp_retransmit_synack+0x1d20/0x1dda bpf_trace_run2+0x4c/0xc0 tcp_rtx_synack+0xf9/0x100 reqsk_timer_handler+0xda/0x3d0 run_timer_softirq+0x292/0x8a0 irq_exit_rcu+0xf5/0x320 sysvec_apic_timer_interrupt+0x6d/0x80 asm_sysvec_apic_timer_interrupt+0x16/0x20 intel_idle_irq+0x5a/0xa0 cpuidle_enter_state+0x94/0x273 cpu_startup_entry+0x15e/0x260 start_secondary+0x8a/0x90 secondary_startup_64_no_verify+0xfa/0xfb kfence-#1: 0x00000000a72cc7b6-0x00000000d97616d9, size=2376, cache=TCPv6 allocated by task 0 on cpu 9 at 260507.901592s: sk_prot_alloc+0x35/0x140 sk_clone_lock+0x1f/0x3f0 inet_csk_clone_lock+0x15/0x160 tcp_create_openreq_child+0x1f/0x410 tcp_v6_syn_recv_sock+0x1da/0x700 tcp_check_req+0x1fb/0x510 tcp_v6_rcv+0x98b/0x1420 ipv6_list_rcv+0x2258/0x26e0 napi_complete_done+0x5b1/0x2990 mlx5e_napi_poll+0x2ae/0x8d0 net_rx_action+0x13e/0x590 irq_exit_rcu+0xf5/0x320 common_interrupt+0x80/0x90 asm_common_interrupt+0x22/0x40 cpuidle_enter_state+0xfb/0x273 cpu_startup_entry+0x15e/0x260 start_secondary+0x8a/0x90 secondary_startup_64_no_verify+0xfa/0xfb freed by task 0 on cpu 9 at 260507.927527s: rcu_core_si+0x4ff/0xf10 irq_exit_rcu+0xf5/0x320 sysvec_apic_timer_interrupt+0x6d/0x80 asm_sysvec_apic_timer_interrupt+0x16/0x20 cpuidle_enter_state+0xfb/0x273 cpu_startup_entry+0x15e/0x260 start_secondary+0x8a/0x90 secondary_startup_64_no_verify+0xfa/0xfb

CVSS metrics

4 scores · 4 sources · 1 version

EPSS trend

Probability

0.56%

Chance of exploitation in the next 30 days

Percentile

47%

Versus all other CVEs

30-day change

No change 0.00 pp

From 0.56% on 04-10-2026

04-10-202603-11-2026

Known exploited

Compare KEV catalogs
CISA KEV

Not in the CISA KEV catalog.

ENISA CNW

Not in the ENISA CNW catalog.

CIRCL

Not in the CIRCL catalog.

Public exploits

0 found

No public exploits indexed.

Weaknesses

CWE · root cause

Affected systems

Version check

Known conditions: network-reachable, no authentication, no user interaction (CVSS vector). Other conditions: not stated in public data.

Ubuntu134 products
  • linuxAll versions (No fix recorded) | < 5.15.0-133.144 | < 6.8.0-58.60
  • linux-allwinner-5.19All versions (No fix recorded)
  • linux-awsAll versions (No fix recorded) | < 5.15.0-1078.85 | < 6.8.0-1027.29
  • linux-aws-5.0All versions (No fix recorded)
  • linux-aws-5.11All versions (No fix recorded)
Linux2 products
  • linux≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < 106e457953315e476b3642ef24be25ed862aaba3 | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < c964bf65f80a14288d767023a1b300b30f5b9cd0 | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < 8459d61fbf24967839a70235165673148c7c7f17 | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < 5071beb59ee416e8ab456ac8647a4dabcda823b1 | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < 997ae8da14f1639ce6fb66a063dab54031cd61b3 | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < 51e34db64f4e43c7b055ccf881b7f3e0c31bb26d | ≥ 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af, < e8c526f2bdf1845bedaf6a478816a3d06fa78b8f | d3a1196bfc462943694623412d8e03aaf172bdc1 | ≥ 4.1.11, < 4.2 | 4.2
  • linux_kernel≥ 4.1.11, < 4.2 | ≥ 4.2, < 5.15.170 | ≥ 5.16, < 6.1.115 | ≥ 6.2, < 6.6.59 | ≥ 6.7, < 6.11.6 | 6.12:rc1 | 6.12:rc2 | 6.12:rc3
Debian1 product
  • linux< 6.1.115-1 | < 6.11.6-1

3 vendors · 137 products

References

40 links
Show all 40 references