CVE-2026-23300

net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop

State
Published
Severity
Not scored
Published
Mar 25, 2026
Updated
Oct 15, 2026
Reserved
Jan 13, 2026

Read the record on cve.org

Description

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

net: ipv6: fix panic when IPv4 route references loopback IPv6 nexthop

When a standalone IPv6 nexthop object is created with a loopback device (e.g., "ip -6 nexthop add id 100 dev lo"), fib6_nh_init() misclassifies it as a reject route. This is because nexthop objects have no destination prefix (fc_dst=::), causing fib6_is_reject() to match any loopback nexthop. The reject path skips fib_nh_common_init(), leaving nhc_pcpu_rth_output unallocated. If an IPv4 route later references this nexthop, __mkroute_output() dereferences NULL nhc_pcpu_rth_output and panics.

Simplify the check in fib6_nh_init() to only match explicit reject routes (RTF_REJECT) instead of using fib6_is_reject(). The loopback promotion heuristic in fib6_is_reject() is handled separately by ip6_route_info_create_nh(). After this change, the three cases behave as follows:

1. Explicit reject route ("ip -6 route add unreachable 2001:db8::/64"): RTF_REJECT is set, enters reject path, skips fib_nh_common_init(). No behavior change.

2. Implicit loopback reject route ("ip -6 route add 2001:db8::/32 dev lo"): RTF_REJECT is not set, takes normal path, fib_nh_common_init() is called. ip6_route_info_create_nh() still promotes it to reject afterward. nhc_pcpu_rth_output is allocated but unused, which is harmless.

3. Standalone nexthop object ("ip -6 nexthop add id 100 dev lo"): RTF_REJECT is not set, takes normal path, fib_nh_common_init() is called. nhc_pcpu_rth_output is properly allocated, fixing the crash when IPv4 routes reference this nexthop.

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before 607e68c1b7c5a30c795571be1906d716e989a644Affected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before c11d7c56c2076ee9cd72004f1976fe0734df2ae9Affected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before b5062fc2150614c9ea8a611c2e0cb6e047ebfa3aAffected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before b299121e7453d23faddf464087dff513a495b4fcAffected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before f7c9f8e3607440fe39300efbaf46cf7b5eecb23fAffected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before b3b5a037d520afe3d5276e653bc0ff516bbda34cAffected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before 8650db85b4259d2885d2a80fbc2317ce24194133Affected
  • 493ced1ac47c48bb86d9d4e8e87df8592be85a0e to before 21ec92774d1536f71bdc90b0e3d052eff99cf093Affected
LinuxLinux
  • 5.3Affected
  • before 5.3Not affected
  • 5.10.253 through 5.10.*Not affected
  • 5.15.203 through 5.15.*Not affected
  • 6.1.167 through 6.1.*Not affected
  • 6.6.130 through 6.6.*Not affected
  • 6.12.77 through 6.12.*Not affected
  • 6.18.17 through 6.18.*Not affected
  • 6.19.7 through 6.19.*Not affected
  • 7.0 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.