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.
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
| Attack Vector | LOCAL |
|---|---|
| Attack Complexity | LOW |
| Privileges Required | LOW |
| User Interaction | NONE |
| Scope | UNCHANGED |
| Confidentiality Impact | HIGH |
| Integrity Impact | HIGH |
| Availability Impact | HIGH |
Source: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Type: Secondary
Exploitability Score: 1.8
Impact Score: 5.9
| Source | Type | Description |
|---|---|---|
| [email protected] | Primary |
en
CWE-416
|
| Vendor | Product | Version | Update | Type |
|---|---|---|---|---|
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384626080> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd31b20e340> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd36a7ef000> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd38477fb80> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384627040> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd384625840> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd31b20ed80> | Operating System |
| linux | linux_kernel | * | <built-in method update of dict object at 0x7fd31b20ee80> | Operating System |
| linux | linux_kernel | 4.17 | <built-in method update of dict object at 0x7fd384624400> | Operating System |
| linux | linux_kernel | 4.17 | <built-in method update of dict object at 0x7fd384625600> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7fd31b20cd00> | Operating System |
| linux | linux_kernel | 7.1 | <built-in method update of dict object at 0x7fd34017f500> | Operating System |
| Vulnerable | CPE |
|---|---|
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:4.17:-:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:4.17:rc7:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* |
| Yes | cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* |