{"id":33386,"date":"2026-10-06T20:31:53","date_gmt":"2026-10-06T12:31:53","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98317"},"modified":"2026-10-06T20:31:53","modified_gmt":"2026-10-06T12:31:53","slug":"cve-2026-98317","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-98317","title":{"rendered":"CVE-2026-98317 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nneighbour: Enforce mi"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>neighbour: Enforce min\/max to NDTPA_INTERVAL_PROBE_TIME_MS.<\/p>\n<p>NDTPA_INTERVAL_PROBE_TIME_MS sets .type and .min but misses<br \/>\n.validation_type, so no validation is applied:<\/p>\n<p>  # ynl &#8211;family rt-neigh &#8211;do setneightbl<br \/>\n  &#8211;json &#8216;{&#8220;name&#8221;: &#8220;arp_cache&#8221;, &#8220;parms&#8221;: {&#8220;interval-probe-time-ms&#8221;: 0}}&#8217;<\/p>\n<p>  # ynl &#8211;family rt-neigh &#8211;dump getneightbl &#8211;output-json |<br \/>\n  jq &#8216;.[] | select(.name == &#8220;arp_cache&#8221; and has(&#8220;config&#8221;))<br \/>\n          | .parms[&#8220;interval-probe-time-ms&#8221;]&#8217;<br \/>\n  0<\/p>\n<p>Moreover, nla_get_msecs() uses msecs_to_jiffies(), and u64 is<br \/>\nsilently cast to u32, so a larger value can bypass the min check:<\/p>\n<p>  e.g. 4294967296 == 0x100000000<\/p>\n<p>  # ynl &#8211;family rt-neigh &#8211;do setneightbl<br \/>\n  &#8211;json &#8216;{&#8220;name&#8221;: &#8220;arp_cache&#8221;, &#8220;parms&#8221;: {&#8220;interval-probe-time-ms&#8221;: 4294967296}}&#8217;<\/p>\n<p>  # ynl &#8211;family rt-neigh &#8211;dump getneightbl &#8211;output-json |<br \/>\n  jq &#8216;.[] | select(.name == &#8220;arp_cache&#8221; and has(&#8220;config&#8221;))<br \/>\n          | .parms[&#8220;interval-probe-time-ms&#8221;]&#8217;<br \/>\n  0<\/p>\n<p>msecs_to_jiffies() returns MAX_JIFFY_OFFSET if the value is<br \/>\nlarger than INT_MAX.  Also, INT_MAX ms overflows int NEIGH_VAR()<br \/>\nwhen HZ &gt; 1000 (Alpha, MIPS), and passing a negative integer to<br \/>\nqueue_delayed_work(unsigned long delay) causes sign extension,<br \/>\nwhich wraps around the expiry time to the past, resulting in it<br \/>\nbeing handled as 0 delay in the timer wheel.<\/p>\n<p>Let&#8217;s use NLA_POLICY_FULL_RANGE() and limit the max to 1 day.<\/p>\n<p>The same max check is applied to sysctl as well.<\/p>\n<p>Note that this controls the probe interval for NTF_MANAGED<br \/>\nentries, so the max of 1 day is unlikely to break any<br \/>\ndeployments.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>neighbour: Enforce min\/max to NDTPA_INTERVAL_PROBE_TIME_MS.<\/p>\n<p>NDTPA_INTERVAL_PROBE_TIME_MS sets .type and .min but misses<br \/>\n.validatio<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-33386","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/33386","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=33386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=33386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=33386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}