CVE-2026-98485

netfilter: ip6t_rt: fix zero-address non-strict match out-of-bounds read

State
Published
Severity
7.1 High
Published
Oct 18, 2026
Updated
Oct 24, 2026
Reserved
Sep 25, 2026

Read the record on cve.org

Description

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

netfilter: ip6t_rt: fix zero-address non-strict match out-of-bounds read

rt_mt6_check() permits rules to be configured with rtinfo->addrnr == 0 even when address matching (IP6T_RT_FST_MASK) is requested.

In the IP6T_RT_FST_NSTRICT path, rt_mt6() evaluates packet routing addresses against rtinfo->addrs[i] and terminates backwards at the bottom of the loop:

if (ipv6_addr_equal(ap, &rtinfo->addrs[i])) { i++; } if (i == rtinfo->addrnr) break;

When addrnr is 0, if the first packet address matches rtinfo->addrs[0], i is incremented to 1. Because i is now strictly greater than addrnr (0), the loop termination condition (i == rtinfo->addrnr) is bypassed and will never be satisfied.

If a crafted IPv6 packet contains matching routing addresses, i will advance past IP6T_RT_HOPS (16). The subsequent call to ipv6_addr_equal() reads beyond struct ip6t_rt, triggering UBSAN/KASAN out-of-bounds warnings or kernel panics.

Fix this by: 1. Rejecting rules in rt_mt6_check() where IP6T_RT_FST_MASK is set but rtinfo->addrnr is zero. 2. In rt_mt6(), moving the termination condition (i < rtinfo->addrnr) into the for-loop header condition and removing the backwards break at the end of the loop body.

Scores

CVSSScoreVectorSource
3.17.1 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 959d1829d1ce8b91b435b24a923b51bcc8897090Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before fe336bab13834394320997de8b16ca4a913b4f13Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 5a54f8b7f7fe207a5c14713015a5820588faf1adAffected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before b89249819a7d6698bed152feafd3bc6c08489d15Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before dd55c0ea87bf70e4e4b3b683acd29ef981335b26Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 191239b0939692e92459d8d32cad14247fa93f89Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before d9cf4ac6f326330e1fe4d95671d36a6ff3593f64Affected
  • 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 to before 82313c169eddc02b1bf5ba6b427803e272d3ec42Affected
LinuxLinux
  • 2.6.12Affected
  • before 2.6.12Not affected
  • 5.10.271 through 5.10.*Not affected
  • 5.15.222 through 5.15.*Not affected
  • 6.1.189 through 6.1.*Not affected
  • 6.6.158 through 6.6.*Not affected
  • 6.12.112 through 6.12.*Not affected
  • 6.18.55 through 6.18.*Not affected
  • 7.2.9 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.