All vulnerabilities
CVE-2026-98317

Linux: neighbour: Enforce min/max to NDTPA_INTERVAL_PROBE_TIME_MS.

Linux LinuxOperating systems
CVSS
NoneNot scored
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.18%Chance of exploitation activity in the next 30 days, higher than 7% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in982c7f66c04134b77126edbfd8a63ecd6928cfd9Also 8550b50e49b01b572e653e572f24ddd73949aa74, 6d79b223ec44ada58ad37db42f539b60985a7722CVE List
Published6 Oct 2026Updated 19 Oct 2026CVE List

What fixes it

  • 982c7f66c04134b77126edbfd8a63ecd6928cfd9LinuxCVE List
  • 8550b50e49b01b572e653e572f24ddd73949aa74LinuxCVE List
  • 6d79b223ec44ada58ad37db42f539b60985a7722LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

neighbour: Enforce min/max to NDTPA_INTERVAL_PROBE_TIME_MS.

NDTPA_INTERVAL_PROBE_TIME_MS sets .type and .min but misses .validation_type, so no validation is applied:

ynl --family rt-neigh --do setneightbl \

--json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 0}}'

ynl --family rt-neigh --dump getneightbl --output-json | \

jq '.[] | select(.name == "arp_cache" and has("config")) | .parms["interval-probe-time-ms"]' 0

Moreover, nla_get_msecs() uses msecs_to_jiffies(), and u64 is silently cast to u32, so a larger value can bypass the min check:

e.g. 4294967296 == 0x100000000

ynl --family rt-neigh --do setneightbl \

--json '{"name": "arp_cache", "parms": {"interval-probe-time-ms": 4294967296}}'

ynl --family rt-neigh --dump getneightbl --output-json | \

jq '.[] | select(.name == "arp_cache" and has("config")) | .parms["interval-probe-time-ms"]' 0

msecs_to_jiffies() returns MAX_JIFFY_OFFSET if the value is larger than INT_MAX. Also, INT_MAX ms overflows int NEIGH_VAR() when HZ > 1000 (Alpha, MIPS), and passing a negative integer to queue_delayed_work(unsigned long delay) causes sign extension, which wraps around the expiry time to the past, resulting in it being handled as 0 delay in the timer wheel.

Let's use NLA_POLICY_FULL_RANGE() and limit the max to 1 day.

The same max check is applied to sysctl as well.

Note that this controls the probe interval for NTF_MANAGED entries, so the max of 1 day is unlikely to break any deployments.

Text from CVE List

Affected versions 8

  • Linuxaffected: 211da42eaa45db7b0edfde187dd88a85fbd466b5 before 982c7f66c04134b77126edbfd8a63ecd6928cfd9CVE List
  • Linuxaffected: 211da42eaa45db7b0edfde187dd88a85fbd466b5 before 8550b50e49b01b572e653e572f24ddd73949aa74CVE List
  • Linuxaffected: 211da42eaa45db7b0edfde187dd88a85fbd466b5 before 6d79b223ec44ada58ad37db42f539b60985a7722CVE List
  • Linuxaffected: 6.0CVE List
  • Linuxunaffected: all versions before 6.0CVE List
  • Linuxunaffected: 6.18.54 through 6.18.*CVE List
  • Linuxunaffected: 7.2.8 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 3