Skip to main content

CVE-2024-36905: Vulnerability in Linux Linux

High
VulnerabilityCVE-2024-36905cvecve-2024-36905
Published: Thu May 30 2024 (05/30/2024, 15:29:06 UTC)
Source: CVE
Vendor/Project: Linux
Product: Linux

Description

In the Linux kernel, the following vulnerability has been resolved: tcp: defer shutdown(SEND_SHUTDOWN) for TCP_SYN_RECV sockets TCP_SYN_RECV state is really special, it is only used by cross-syn connections, mostly used by fuzzers. In the following crash [1], syzbot managed to trigger a divide by zero in tcp_rcv_space_adjust() A socket makes the following state transitions, without ever calling tcp_init_transfer(), meaning tcp_init_buffer_space() is also not called. TCP_CLOSE connect() TCP_SYN_SENT TCP_SYN_RECV shutdown() -> tcp_shutdown(sk, SEND_SHUTDOWN) TCP_FIN_WAIT1 To fix this issue, change tcp_shutdown() to not perform a TCP_SYN_RECV -> TCP_FIN_WAIT1 transition, which makes no sense anyway. When tcp_rcv_state_process() later changes socket state from TCP_SYN_RECV to TCP_ESTABLISH, then look at sk->sk_shutdown to finally enter TCP_FIN_WAIT1 state, and send a FIN packet from a sane socket state. This means tcp_send_fin() can now be called from BH context, and must use GFP_ATOMIC allocations. [1] divide error: 0000 [#1] PREEMPT SMP KASAN NOPTI CPU: 1 PID: 5084 Comm: syz-executor358 Not tainted 6.9.0-rc6-syzkaller-00022-g98369dccd2f8 #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 03/27/2024 RIP: 0010:tcp_rcv_space_adjust+0x2df/0x890 net/ipv4/tcp_input.c:767 Code: e3 04 4c 01 eb 48 8b 44 24 38 0f b6 04 10 84 c0 49 89 d5 0f 85 a5 03 00 00 41 8b 8e c8 09 00 00 89 e8 29 c8 48 0f af c3 31 d2 <48> f7 f1 48 8d 1c 43 49 8d 96 76 08 00 00 48 89 d0 48 c1 e8 03 48 RSP: 0018:ffffc900031ef3f0 EFLAGS: 00010246 RAX: 0c677a10441f8f42 RBX: 000000004fb95e7e RCX: 0000000000000000 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: 0000000027d4b11f R08: ffffffff89e535a4 R09: 1ffffffff25e6ab7 R10: dffffc0000000000 R11: ffffffff8135e920 R12: ffff88802a9f8d30 R13: dffffc0000000000 R14: ffff88802a9f8d00 R15: 1ffff1100553f2da FS: 00005555775c0380(0000) GS:ffff8880b9500000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f1155bf2304 CR3: 000000002b9f2000 CR4: 0000000000350ef0 Call Trace: <TASK> tcp_recvmsg_locked+0x106d/0x25a0 net/ipv4/tcp.c:2513 tcp_recvmsg+0x25d/0x920 net/ipv4/tcp.c:2578 inet6_recvmsg+0x16a/0x730 net/ipv6/af_inet6.c:680 sock_recvmsg_nosec net/socket.c:1046 [inline] sock_recvmsg+0x109/0x280 net/socket.c:1068 ____sys_recvmsg+0x1db/0x470 net/socket.c:2803 ___sys_recvmsg net/socket.c:2845 [inline] do_recvmmsg+0x474/0xae0 net/socket.c:2939 __sys_recvmmsg net/socket.c:3018 [inline] __do_sys_recvmmsg net/socket.c:3041 [inline] __se_sys_recvmmsg net/socket.c:3034 [inline] __x64_sys_recvmmsg+0x199/0x250 net/socket.c:3034 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf5/0x240 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7faeb6363db9 Code: 28 00 00 00 75 05 48 83 c4 28 c3 e8 c1 17 00 00 90 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffcc1997168 EFLAGS: 00000246 ORIG_RAX: 000000000000012b RAX: ffffffffffffffda RBX: 0000000000000000 RCX: 00007faeb6363db9 RDX: 0000000000000001 RSI: 0000000020000bc0 RDI: 0000000000000005 RBP: 0000000000000000 R08: 0000000000000000 R09: 000000000000001c R10: 0000000000000122 R11: 0000000000000246 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000001 R15: 0000000000000001

AI-Powered Analysis

AILast updated: 06/29/2025, 09:57:33 UTC

Technical Analysis

CVE-2024-36905 is a vulnerability identified in the Linux kernel's TCP networking stack, specifically related to the handling of TCP sockets in the TCP_SYN_RECV state. This state is a transitional phase during the TCP three-way handshake, primarily used for cross-SYN connections, often encountered in fuzz testing scenarios. The vulnerability arises from an improper state transition triggered during a socket shutdown operation. Normally, a socket transitions through states such as TCP_CLOSE, TCP_SYN_SENT, TCP_SYN_RECV, and TCP_FIN_WAIT1 during connection establishment and teardown. However, in this case, the kernel incorrectly allows a transition from TCP_SYN_RECV directly to TCP_FIN_WAIT1 upon a shutdown call, bypassing necessary initialization functions like tcp_init_transfer() and tcp_init_buffer_space(). This leads to uninitialized buffer space and ultimately causes a divide-by-zero error in the tcp_rcv_space_adjust() function, resulting in a kernel crash. The root cause is the tcp_shutdown() function performing an invalid state transition. The fix involves deferring the shutdown until the socket reaches the TCP_ESTABLISHED state, ensuring that tcp_send_fin() is called from a valid context with appropriate memory allocation flags (GFP_ATOMIC) to avoid race conditions or deadlocks. The vulnerability was discovered via syzbot fuzzing and affects Linux kernel version 6.9.0-rc6 and possibly other recent versions. No known exploits are currently reported in the wild. The issue is technical and low-level, impacting kernel stability and potentially leading to denial of service (DoS) through kernel crashes triggered by crafted TCP connection sequences.

Potential Impact

For European organizations, this vulnerability poses a risk primarily to systems running vulnerable Linux kernel versions, including servers, network appliances, and embedded devices. The impact is mainly a denial of service condition caused by kernel crashes, which can disrupt critical services, degrade network availability, and potentially cause downtime. Organizations relying on Linux-based infrastructure for web hosting, cloud services, or internal networking could experience service interruptions if exploited. Although the vulnerability does not appear to allow privilege escalation or remote code execution directly, the induced kernel panic could be leveraged in targeted denial of service attacks, especially in environments with high network traffic or exposure to untrusted networks. This could affect sectors such as finance, telecommunications, government, and critical infrastructure in Europe, where Linux servers are widely deployed. The lack of known exploits reduces immediate risk, but the presence of a kernel-level bug means that attackers with network access could craft packets or connection sequences to trigger the crash. The vulnerability's exploitation does not require user interaction but does require the ability to initiate TCP connections to the target system, which may be mitigated by network controls.

Mitigation Recommendations

European organizations should prioritize updating their Linux kernel to the latest patched versions that include the fix for CVE-2024-36905. Kernel updates should be applied promptly, especially on internet-facing servers and critical infrastructure. Network administrators should implement strict ingress filtering and firewall rules to limit unsolicited TCP connection attempts, particularly from untrusted sources, reducing the attack surface. Monitoring network traffic for unusual SYN flood patterns or abnormal TCP handshake sequences can help detect attempts to exploit this vulnerability. For environments where immediate patching is not feasible, consider isolating vulnerable systems behind additional network segmentation or proxy layers that can filter or block suspicious TCP connection attempts. Additionally, organizations should review and harden kernel parameters related to TCP connection handling and shutdown behavior if configurable. Regularly auditing kernel versions and maintaining an up-to-date inventory of Linux systems will facilitate timely remediation. Finally, engage with Linux distribution vendors and subscribe to security advisories to stay informed about patches and related vulnerabilities.

Need more detailed analysis?Get Pro

Technical Details

Data Version
5.1
Assigner Short Name
Linux
Date Reserved
2024-05-30T15:25:07.067Z
Cisa Enriched
true
Cvss Version
null
State
PUBLISHED

Threat ID: 682d9828c4522896dcbe262b

Added to database: 5/21/2025, 9:08:56 AM

Last enriched: 6/29/2025, 9:57:33 AM

Last updated: 8/4/2025, 7:01:18 PM

Views: 12

Actions

PRO

Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.

Please log in to the Console to use AI analysis features.

Need enhanced features?

Contact root@offseq.com for Pro access with improved analysis and higher rate limits.

Latest Threats