{"id":33368,"date":"2026-10-06T20:31:52","date_gmt":"2026-10-06T12:31:52","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98299"},"modified":"2026-10-06T20:31:52","modified_gmt":"2026-10-06T12:31:52","slug":"cve-2026-98299","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98299","title":{"rendered":"CVE-2026-98299 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\ntcp: do not let tcp_r"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tcp: do not let tcp_rmem be set below 4096<\/p>\n<p>We can hit a division by zero crash in tcp_rcvbuf_grow()<br \/>\nand tcp_rcv_space_adjust():<\/p>\n<p>divide error: 0000 [#1] PREEMPT SMP<br \/>\nRIP: 0010:tcp_rcvbuf_grow+0x187\/0x450 net\/ipv4\/tcp_input.c:939<br \/>\n&#8230;<br \/>\ngrow = div_u64(((u64)rcvwin &lt;rcvq_space.space as divisor.<br \/>\nWhen tp-&gt;rcvq_space.space is zero, this leads to a divide-by-zero<br \/>\nexception.<\/p>\n<p>tp-&gt;rcvq_space.space is initialized in tcp_init_buffer_space():<br \/>\n    tp-&gt;rcvq_space.space = min3(tp-&gt;rcv_ssthresh, tp-&gt;rcv_wnd,<br \/>\n                                (u32)TCP_INIT_CWND * tp-&gt;advmss);<\/p>\n<p>If tcp_rmem[1] is configured to very small values (such as 1),<br \/>\nsk-&gt;sk_rcvbuf is initialized to 1. Then tcp_full_space(sk), which<br \/>\ncomputes (sk-&gt;sk_rcvbuf * scaling_ratio) &gt;&gt; 8, truncates to 0.<br \/>\nThis sets tp-&gt;window_clamp = 0, tp-&gt;rcv_ssthresh = 0, and<br \/>\ntp-&gt;rcvq_space.space = 0. Later, when data arrives and DRS is invoked,<br \/>\ntcp_rcvbuf_grow() divides by oldval == 0.<\/p>\n<p>Back in 2015, commit b1cb59cf2efe (&#8220;net: sysctl_net_core: check SNDBUF<br \/>\nand RCVBUF for min length&#8221;) ensured that net.core.rmem_default and<br \/>\nnet.core.rmem_max cannot be set below SOCK_MIN_RCVBUF. Similarly,<br \/>\nSO_RCVBUF setsockopt enforces max_t(int, val * 2, SOCK_MIN_RCVBUF).<\/p>\n<p>However, net.ipv4.tcp_rmem still had .extra1 = SYSCTL_ONE, allowing<br \/>\narbitrarily small values.<\/p>\n<p>Because SOCK_MIN_RCVBUF depends on sizeof(struct sk_buff) and cacheline<br \/>\nalignment, its value varies across architectures and configuration options.<br \/>\nUsing a fixed constant of 4096 ensures a predictable, architecture-<br \/>\nindependent lower bound that is safely above SOCK_MIN_RCVBUF everywhere<br \/>\nand matches the documented 4K default.<\/p>\n<p>Fix this by setting tcp_rmem.extra1 to 4096 and updating the documentation.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>tcp: do not let tcp_rmem be set below 4096<\/p>\n<p>We can hit a division by zero crash in tcp_rcvbuf_grow()<br \/>\nand tcp_rcv_space_adjust():<\/p>\n<p>d<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33368","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33368","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=33368"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33368"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33368"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}