CVE-2025-68291 in Linux
Summary
by MITRE • 12/16/2025
In the Linux kernel, the following vulnerability has been resolved:
mptcp: Initialise rcv_mss before calling tcp_send_active_reset() in mptcp_do_fastclose().
syzbot reported divide-by-zero in __tcp_select_window() by MPTCP socket. [0]
We had a similar issue for the bare TCP and fixed in commit 499350a5a6e7 ("tcp: initialize rcv_mss to TCP_MIN_MSS instead of 0").
Let's apply the same fix to mptcp_do_fastclose().
[0]:
Oops: divide error: 0000 [#1] SMP KASAN PTI
CPU: 0 UID: 0 PID: 6068 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(full) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025 RIP: 0010:__tcp_select_window+0x824/0x1320 net/ipv4/tcp_output.c:3336 Code: ff ff ff 44 89 f1 d3 e0 89 c1 f7 d1 41 01 cc 41 21 c4 e9 a9 00 00 00 e8 ca 49 01 f8 e9 9c 00 00 00 e8 c0 49 01 f8 44 89 e0 99 <f7> 7c 24 1c 41 29 d4 48 bb 00 00 00 00 00 fc ff df e9 80 00 00 00 RSP: 0018:ffffc90003017640 EFLAGS: 00010293 RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff88807b469e40 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 RBP: ffffc90003017730 R08: ffff888033268143 R09: 1ffff1100664d028 R10: dffffc0000000000 R11: ffffed100664d029 R12: 0000000000000000 R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000 FS: 000055557faa0500(0000) GS:ffff888126135000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f64a1912ff8 CR3: 0000000072122000 CR4: 00000000003526f0 Call Trace: <TASK> tcp_select_window net/ipv4/tcp_output.c:281 [inline]
__tcp_transmit_skb+0xbc7/0x3aa0 net/ipv4/tcp_output.c:1568 tcp_transmit_skb net/ipv4/tcp_output.c:1649 [inline]
tcp_send_active_reset+0x2d1/0x5b0 net/ipv4/tcp_output.c:3836 mptcp_do_fastclose+0x27e/0x380 net/mptcp/protocol.c:2793 mptcp_disconnect+0x238/0x710 net/mptcp/protocol.c:3253 mptcp_sendmsg_fastopen+0x2f8/0x580 net/mptcp/protocol.c:1776 mptcp_sendmsg+0x1774/0x1980 net/mptcp/protocol.c:1855 sock_sendmsg_nosec net/socket.c:727 [inline]
__sock_sendmsg+0xe5/0x270 net/socket.c:742 __sys_sendto+0x3bd/0x520 net/socket.c:2244 __do_sys_sendto net/socket.c:2251 [inline]
__se_sys_sendto net/socket.c:2247 [inline]
__x64_sys_sendto+0xde/0x100 net/socket.c:2247 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xfa/0xfa0 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f66e998f749 Code: ff ff c3 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 40 00 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 a8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007ffff9acedb8 EFLAGS: 00000246 ORIG_RAX: 000000000000002c RAX: ffffffffffffffda RBX: 00007f66e9be5fa0 RCX: 00007f66e998f749 RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000003 RBP: 00007ffff9acee10 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007f66e9be5fa0 R14: 00007f66e9be5fa0 R15: 0000000000000006 </TASK>
If you want to get the best quality for vulnerability data then you always have to consider VulDB.
Analysis
by VulDB Data Team • 02/22/2026
The vulnerability CVE-2025-68291 resides within the Linux kernel's Multipath TCP (MPTCP) implementation, specifically in the mptcp_do_fastclose() function. This flaw manifests as a divide-by-zero error occurring in the __tcp_select_window() function, which is triggered when a MPTCP socket attempts to send an active reset. The root cause stems from the uninitialized rcv_mss field within the MPTCP socket structure, leading to a division operation that attempts to use a zero value as a divisor. This condition is particularly critical because it can result in a kernel panic or system crash, thereby compromising system stability and availability. The issue is analogous to a previously identified problem in standard TCP implementations, where the rcv_mss field was not properly initialized, leading to similar divide-by-zero conditions.
The technical flaw is deeply embedded in the socket state management during fast closure operations. When mptcp_do_fastclose() is invoked, it calls tcp_send_active_reset(), which in turn relies on __tcp_select_window() to determine window scaling parameters. The rcv_mss field, which should contain the minimum receive maximum segment size, is not initialized to a valid value before this sequence of operations. This initialization gap causes the kernel to perform a division by zero, as the divisor is computed using the uninitialized rcv_mss value. The call trace shows the execution path from mptcp_do_fastclose through tcp_send_active_reset to __tcp_select_window, where the arithmetic error occurs. This pattern aligns with the common class of software defects categorized under CWE-369: Divide by Zero, which is a fundamental error in input validation and initialization practices.
The operational impact of this vulnerability is severe, particularly in environments where MPTCP is actively utilized for high-performance networking or in systems handling large volumes of concurrent connections. An attacker could potentially exploit this condition to cause a denial-of-service attack against a target system, leading to kernel crashes and system instability. The vulnerability is especially concerning in cloud environments or server infrastructure where MPTCP is used for enhanced connectivity, as such crashes could result in cascading failures affecting multiple services. Additionally, the presence of KASAN (Kernel Address Sanitizer) in the crash report indicates that the kernel has been compiled with memory debugging features, suggesting that this issue could be detected in production environments with enhanced security configurations. The vulnerability is classified under the ATT&CK technique T1499.004 (Endpoint Denial of Service) as it can be leveraged to cause system instability and resource unavailability.
The fix for CVE-2025-68291 is straightforward and follows a proven precedent established in the TCP subsystem. The solution involves initializing the rcv_mss field to TCP_MIN_MSS instead of leaving it uninitialized, mirroring the resolution applied in commit 499350a5a6e7 for the standard TCP implementation. This approach ensures that all MPTCP socket operations have valid segment size parameters before they are used in arithmetic operations. The patch should be applied across all kernel versions that support MPTCP to prevent the divide-by-zero condition from occurring during fast closure operations. System administrators should prioritize updating their kernel versions to include this fix, particularly in production environments where MPTCP is enabled, as the vulnerability can be exploited remotely under certain conditions. The fix demonstrates the importance of proper initialization of all socket parameters in kernel networking code and underscores the necessity of consistent security practices across different protocol implementations within the kernel.