Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

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

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于内存释放后重用。

CVSS 9.8 · Critical EPSS 0.56% · P45

Possible ATT&CK Techniques 1 AI

T1059 · Command and Scripting Interpreter

Affected Version Matrix 18

VendorProduct Version RangeStatus
Linux Linux 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< 106e457953315e476b3642ef24be25ed862aaba3 affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< c964bf65f80a14288d767023a1b300b30f5b9cd0 affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< 8459d61fbf24967839a70235165673148c7c7f17 affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< 5071beb59ee416e8ab456ac8647a4dabcda823b1 affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< 997ae8da14f1639ce6fb66a063dab54031cd61b3 affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< 51e34db64f4e43c7b055ccf881b7f3e0c31bb26d affected
83fccfc3940c4a2db90fd7e7079f5b465cd8c6af< e8c526f2bdf1845bedaf6a478816a3d06fa78b8f affected
d3a1196bfc462943694623412d8e03aaf172bdc1 affected
… +10 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-50154

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
tcp/dccp: Don't use timer_pending() in reqsk_queue_unlink().
Source: CVE Program / CVE List V5
Vulnerability 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
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于内存释放后重用。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 83fccfc3940c4a2db90fd7e7079f5b465cd8c6af ~ 106e457953315e476b3642ef24be25ed862aaba3 -
Linux Linux 4.2 -

II. Public POCs for CVE-2024-50154

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-50154

请登录查看更多情报信息。

Patches & Fixes for CVE-2024-50154 (7)

Same Patch Batch · Linux · 2024-11-07 · 34 CVEs total

CVE-2024-50162 9.8 CRITICAL bpf: devmap: provide rxq after redirect
CVE-2024-50152 9.8 CRITICAL smb: client: fix possible double free in smb2_set_ea()
CVE-2024-50139 7.9 HIGH KVM: arm64: Fix shift-out-of-bounds bug
CVE-2024-50150 7.8 HIGH usb: typec: altmode should keep reference to parent
CVE-2024-50161 7.8 HIGH bpf: Check the remaining info_cnt before repeating btf fields
CVE-2024-50158 7.8 HIGH RDMA/bnxt_re: Fix out of bound check
CVE-2024-50164 7.8 HIGH bpf: Fix overloading of MEM_UNINIT's meaning
CVE-2024-50165 7.8 HIGH bpf: Preserve param->string when parsing mount options
CVE-2024-50151 7.8 HIGH smb: client: fix OOBs when building SMB2_IOCTL request
CVE-2024-50149 7.8 HIGH drm/xe: Don't free job in TDR
CVE-2024-50143 7.8 HIGH udf: fix uninit-value use in udf_get_fileshortad
CVE-2024-50141 7.8 HIGH ACPI: PRM: Find EFI_MEMORY_RUNTIME block for PRM handler and context
CVE-2024-50145 7.5 HIGH octeon_ep: Add SKB allocation failures handling in __octep_oq_process_rx()
CVE-2024-50170 7.5 HIGH net: bcmasp: fix potential memory leak in bcmasp_xmit()
CVE-2024-50159 7.0 HIGH firmware: arm_scmi: Fix the double free in scmi_debugfs_common_setup()
CVE-2024-50167 be2net: fix potential memory leak in be_xmit()
CVE-2024-50156 drm/msm: Avoid NULL dereference in msm_disp_state_print_regs()
CVE-2024-50168 net/sun3_82586: fix potential memory leak in sun3_82586_send_packet()
CVE-2024-50169 vsock: Update rx_bytes on read_skb()
CVE-2024-50166 fsl/fman: Fix refcount handling of fman-related devices

Showing top 20 of 34 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-50154

No comments yet


Leave a comment