ipv6: Fix null-ptr-deref in fib6_nh_mtu_change().
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.261, 5.15.212, 6.1.178, 6.6.145, 6.12.97, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: ipv6: Fix null-ptr-deref in fib6_nh_mtu_change(). fib6_nh_mtu_change() re-fetches idev via __in6_dev_get(arg->dev) and dereferences idev->cnf.mtu6 without a NULL check. addrconf_ifdown() clears dev->ip6_ptr with RCU_INIT_POINTER() after rt6_disable_ip() has released tb6_lock, so the RA-driven MTU walk can observe a NULL idev and oops. The caller rt6_mtu_change_route() guards its own __in6_dev_get(), but this re-fetch is unguarded; nexthop-backed routes survive addrconf_ifdown()'s flush, so the walk still reaches it after ip6_ptr is nulled. Return 0 when idev is NULL, matching rt6_mtu_change_route() and the fib6_mtu() fix in commit 5ad509c1fdad ("ipv6: Fix null-ptr-deref in fib6_mtu()."). Oops: general protection fault, ... KASAN: null-ptr-deref in range [0x00000000000002a8-0x00000000000002af] RIP: 0010:fib6_nh_mtu_change+0x203/0x990 rt6_mtu_change_route+0x141/0x1d0 __fib6_clean_all+0xd0/0x160 rt6_mtu_change+0xb4/0x100 ndisc_router_discovery+0x24b5/0x2cb0 icmpv6_rcv+0x12e9/0x1710 ipv6_rcv+0x39b/0x410
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in d08d019f2f43a6f9a71e81868bbc326b3afaf37b; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in 1451deca9896957159f0666520a792c1b861af4f; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in b2c70dd3326809429b709a9c7e9220d29923051a; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in 302d57ed7872838b40e56a868fb4c7da7da606e9; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in 80600b5d0f3ecb9324120dc95b5e915130f516c5; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in b0d0eb13a0441a8ebf4f227843deaf494f1e2c33; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in 6428634f7a0b7878144b4925c37856bef3224967; From c0b220cf7d80eb8a36ae9f12cae6df4577a6814e · fixed in 46c3b8191aad3d032776bf3bebf03efdf5f4b905
- Linux Linux
5.3
- KernelLinux
From 5.3.0 · fixed in 5.10.261; From 5.11.0 · fixed in 5.15.212; From 5.16.0 · fixed in 6.1.178; From 6.2.0 · fixed in 6.6.145; From 6.7.0 · fixed in 6.12.97; From 6.13.0 · fixed in 6.18.40; From 6.19.0 · fixed in 7.1.5
References 8
git.kernel.org
- stable/c/d08d019f2f43a6f9a71e81868bbc326b3afaf37b
- stable/c/1451deca9896957159f0666520a792c1b861af4f
- stable/c/b2c70dd3326809429b709a9c7e9220d29923051a
- stable/c/302d57ed7872838b40e56a868fb4c7da7da606e9
- stable/c/80600b5d0f3ecb9324120dc95b5e915130f516c5
- stable/c/b0d0eb13a0441a8ebf4f227843deaf494f1e2c33
- stable/c/6428634f7a0b7878144b4925c37856bef3224967
- stable/c/46c3b8191aad3d032776bf3bebf03efdf5f4b905