Description
In the Linux kernel, the following vulnerability has been resolved: ip6_gre: Use cached t->net in ip6erspan_changelink(). After commit 5e72ce3e3980 ("net: ipv6: Use link netns in newlink() of rtnl_link_ops"), ip6erspan_newlink() correctly resolves the per-netns ip6gre hash via link_net. ip6erspan_changelink() was not converted in that series and still uses dev_net(dev), which diverges from the device's creation netns after IFLA_NET_NS_FD migration. This re-inserts the tunnel into the wrong per-netns hash. The original netns keeps a stale entry. When that netns is later destroyed, ip6gre_exit_rtnl_net() walks the stale entry, producing a slab-use-after-free reported by KASAN, followed by a kernel BUG at net/core/dev.c (LIST_POISON1) in unregister_netdevice_many_notify(). Reachable from an unprivileged user namespace (unshare --user --map-root-user --net). ip6gre_changelink() earlier in the same file already uses the cached t->net; only ip6erspan_changelink() has the wrong shape.
Product status
2d665034f239412927b1e71329f20f001c92da09 (git) before 7bd0f2b162b426b343a114e1b329f0d8d14fdc6e
2d665034f239412927b1e71329f20f001c92da09 (git) before 01b71ff2857d3598337de11e7840a8e3ff21553c
2d665034f239412927b1e71329f20f001c92da09 (git) before 0fcf6731706f73494245a9c0d64f93bebf95bb51
2d665034f239412927b1e71329f20f001c92da09 (git) before eca62bb0569de4d43a4dac06a2092a9d4ca1d702
2d665034f239412927b1e71329f20f001c92da09 (git) before 311fdd26eb4443d43b909cc67a10f3a5fd1b21b2
2d665034f239412927b1e71329f20f001c92da09 (git) before e70cfb40c3a99b232cd42c6a6a10f0d8e039dc82
2d665034f239412927b1e71329f20f001c92da09 (git) before cf7fc624329e76c6394653d12353e1d033adea91
2d665034f239412927b1e71329f20f001c92da09 (git) before 1d324c2f43f70c965f25c58cc3611c779adbe47e
c6d72628352c949629af619b77b042e0fb5245e7 (git)
4.16.12 (semver) before 4.17
4.17
Any version before 4.17
5.10.258 (semver)
5.15.209 (semver)
6.1.175 (semver)
6.6.140 (semver)
6.12.88 (semver)
6.18.30 (semver)
7.0.7 (semver)
7.1-rc3 (original_commit_for_fix)
References
git.kernel.org/...c/7bd0f2b162b426b343a114e1b329f0d8d14fdc6e
git.kernel.org/...c/01b71ff2857d3598337de11e7840a8e3ff21553c
git.kernel.org/...c/0fcf6731706f73494245a9c0d64f93bebf95bb51
git.kernel.org/...c/eca62bb0569de4d43a4dac06a2092a9d4ca1d702
git.kernel.org/...c/311fdd26eb4443d43b909cc67a10f3a5fd1b21b2
git.kernel.org/...c/e70cfb40c3a99b232cd42c6a6a10f0d8e039dc82
git.kernel.org/...c/cf7fc624329e76c6394653d12353e1d033adea91
git.kernel.org/...c/1d324c2f43f70c965f25c58cc3611c779adbe47e