{"id":22438,"date":"2026-09-15T04:30:52","date_gmt":"2026-09-14T20:30:52","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-15893"},"modified":"2026-09-15T04:30:52","modified_gmt":"2026-09-14T20:30:52","slug":"cve-2026-15893","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-15893","title":{"rendered":"CVE-2026-15893 [MEDIUM] &#8211; net_if_ipv6_calc_reachable_time() in subsys\/net\/ip\/net_if.c derives a randomized ND reacha"},"content":{"rendered":"<p>net_if_ipv6_calc_reachable_time() in subsys\/net\/ip\/net_if.c derives a randomized ND reachable time from ipv6-&gt;base_reachable_time as min_reachable + sys_rand32_get() % (max_reachable &#8211; min_reachable), where min_reachable = base\/2 and max_reachable = 3*base\/2 using integer division. When base_reachable_time is 1, both min_reachable and the modulus collapse so the function returns 0, and net_if_ipv6_set_reachable_time() stores that 0 into ipv6-&gt;reachable_time.<\/p>\n<p>The base_reachable_time is attacker-controlled: handle_ra_input() in subsys\/net\/ip\/ipv6_nbr.c accepts the Reachable Time field of an incoming Router Advertisement whenever it is nonzero and &lt;= MAX_REACHABLE_TIME, so a single unauthenticated, link-local RA carrying a Reachable Time of 1 drives the computed reachable time to 0. Router Advertisements are unauthenticated by default and require only adjacency to the target link.<\/p>\n<p>When a neighbor is subsequently confirmed reachable, net_ipv6_nbr_set_reachable_timer() reads the value and executes NET_ASSERT(time, &quot;Zero reachable timeout!&quot;). On builds with CONFIG_ASSERT enabled this triggers a fatal kernel assertion \u2014 a remote denial of service; on builds without assertions the reachable timer is armed with K_MSEC(0) and fires immediately, forcing reachable neighbors into perpetual re-solicitation (STALE), degrading Neighbor Discovery. The impact is limited to availability; there is no memory-safety, confidentiality, or integrity consequence.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>net_if_ipv6_calc_reachable_time() in subsys\/net\/ip\/net_if.c derives a randomized ND reachable time from ipv6-&gt;base_reachable_time as min_reachable + sys_rand32_get() % (max_reachable &#8211; min_reachable),<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-22438","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/22438","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=22438"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=22438"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=22438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}