HIGH Public exploit Introduced in 6.19
macvlan NewLink UAF
CVE-2026-23273
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
KernelScan AI6.9MEDIUM
01Description
In the Linux kernel, the following vulnerability has been resolved: macvlan: observe an RCU grace period in macvlan_common_newlink() error path valis reported that a race condition still happens after my prior patch. macvlan_common_newlink() might have made @dev visible before detecting an error, and its caller will directly call free_netdev(dev). We must respect an RCU period, either in macvlan or the core networking stack. After adding a temporary mdelay(1000) in macvlan_forward_source_one() to open the race window, valis repro was: ip link add p1 type veth peer p2 ip link set address 00:00:00:00:00:20 dev p1 ip link set up dev p1 ip link set up dev p2 ip link add mv0 link p2 type macvlan mode source (ip link add invalid% link p2 type macvlan mode source macaddr add 00:00:00:00:00:20 &) ; sleep 0.5 ; ping -c1 -I p1 1.2.3.4 PING 1.2.3.4 (1.2.3.4): 56 data bytes RTNETLINK answers: Invalid argument BUG: KASAN: slab-use-after-free in macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) Read of size 8 at addr ffff888016bb89c0 by task e/175 CPU: 1 UID: 1000 PID: 175 Comm: e Not tainted 6.19.0-rc8+ #33 NONE Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.14.0-2 04/01/2014 Call Trace: <IRQ> dump_stack_lvl (lib/dump_stack.c:123) print_report (mm/kasan/report.c:379 mm/kasan/report.c:482) ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) kasan_report (mm/kasan/report.c:597) ? macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) macvlan_forward_source (drivers/net/macvlan.c:408 drivers/net/macvlan.c:444) ? tasklet_init (kernel/softirq.c:983) macvlan_handle_frame (drivers/net/macvlan.c:501) Allocated by task 169: kasan_save_stack (mm/kasan/common.c:58) kasan_save_track (./arch/x86/include/asm/current.h:25 mm/kasan/common.c:70 mm/kasan/common.c:79) __kasan_kmalloc (mm/kasan/common.c:419) __kvmalloc_node_noprof (./include/linux/kasan.h:263 mm/slub.c:5657 mm/slub.c:7140) alloc_netdev_mqs (net/core/dev.c:12012) rtnl_create_link (net/core/rtnetlink.c:3648) rtnl_newlink (net/core/rtnetlink.c:3830 net/core/rtnetlink.c:3957 net/core/rtnetlink.c:4072) rtnetlink_rcv_msg (net/core/rtnetlink.c:6958) netlink_rcv_skb (net/netlink/af_netlink.c:2550) netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206) __x64_sys_sendto (net/socket.c:2209) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131) Freed by task 169: kasan_save_stack (mm/kasan/common.c:58) kasan_save_track (./arch/x86/include/asm/current.h:25 mm/kasan/common.c:70 mm/kasan/common.c:79) kasan_save_free_info (mm/kasan/generic.c:587) __kasan_slab_free (mm/kasan/common.c:287) kfree (mm/slub.c:6674 mm/slub.c:6882) rtnl_newlink (net/core/rtnetlink.c:3845 net/core/rtnetlink.c:3957 net/core/rtnetlink.c:4072) rtnetlink_rcv_msg (net/core/rtnetlink.c:6958) netlink_rcv_skb (net/netlink/af_netlink.c:2550) netlink_unicast (net/netlink/af_netlink.c:1319 net/netlink/af_netlink.c:1344) netlink_sendmsg (net/netlink/af_netlink.c:1894) __sys_sendto (net/socket.c:727 net/socket.c:742 net/socket.c:2206) __x64_sys_sendto (net/socket.c:2209) do_syscall_64 (arch/x86/entry/syscall_64.c:63 arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:131)
02KernelScan AI Analysis
Risk summary
Local attackers with CAP_NET_ADMIN (obtainable via user namespaces) can trigger a use-after-free in the macvlan driver by racing malformed macvlan interface creation against packet processing. Successful exploitation can lead to arbitrary kernel memory read/write or a kernel panic due to the UAF occurring in interrupt context.
Vulnerability analysis
The vulnerability is a race condition in macvlan_common_newlink(). When macvlan interface creation fails after the device has been made visible to the network stack, the error path calls free_netdev() without waiting for an RCU grace period. RCU-protected packet forwarding paths (macvlan_forward_source) may still reference the freed netdev, resulting in a slab use-after-free. The fix adds synchronize_net() to ensure RCU readers complete before the device is freed. The trigger requires CAP_NET_ADMIN via netlink (RTM_NEWLINK), which unprivileged processes can acquire through user namespaces on default kernels. The crash manifests in interrupt context (<IRQ>) during packet processing, making this both an information disclosure/memory corruption vector and a high-availability-impact bug.
Exploit availability
KernelScan found public exploit code for this CVE. Open it in the CVE browser to see what we found, where, and how strong the evidence is — that needs a free account with a confirmed email address.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 5.10 | 5.10.250 | 5.10.252 | 91e4ff8d9669 |
| 5.15 | 5.15.200 | 5.15.202 | 3d94323c80d7 |
| 6.1 | 6.1.163 | 6.1.165 | 721eb342d9ba |
| 6.12 | 6.12.70 | 6.12.75 | a1f686d273d1 |
| 6.18 | 6.18.10 | 6.18.14 | d34f7a8aa9a2 |
| 6.19 | 6.19 | 6.19.4 | 1e58ae87ad1e |
| 6.6 | 6.6.124 | 6.6.128 | 19c7d8ac5198 |
| mainline | 6.19 | 7.0 | e3f000f0dee1 |
| cip/4.19 | 6.19 | 4.19.325-cip131 | ba442ecf3184 |
| cip/4.19-rt | 6.19 | 4.19.325-cip132-rt48 | ba442ecf3184 |
| cip/5.10 | 6.19 | 5.10.252-cip71 | 91e4ff8d9669 |
| cip/5.10-rt | 6.19 | 5.10.254-cip72-rt32 | 91e4ff8d9669 |
| cip/6.1 | 6.19 | 6.1.167-cip53 | 721eb342d9ba |
| cip/6.1-rt | 6.19 | 6.1.167-cip53-rt29 | 721eb342d9ba |
| cip/6.12 | 6.19 | 6.12.76-cip18 | a1f686d273d1 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.76-cip18 |
| cip/6.1 | Fixed in 6.1.167-cip53 |
| cip/6.1-rt | Fixed in 6.1.167-cip53-rt29 |
| cip/5.10 | Fixed in 5.10.252-cip71 |
| cip/5.10-rt | Fixed in 5.10.254-cip72-rt32 |
| cip/4.19 | Fixed in 4.19.325-cip131 |
| cip/4.19-rt | Fixed in 4.19.325-cip132-rt48 |