CVE-2026-23003: ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()
In the Linux kernel, the following vulnerability has been resolved:
ip6tunnel: use skbvlaninetprepare() in ip6tnlrcv()
Blamed commit did not take care of VLAN encapsulations as spotted by syzbot [1].
Use skbvlaninetprepare() instead of pskbinetmaypull().
[1] BUG: KMSAN: uninit-value in INETECNdecapsulate include/net/inetecn.h:253 [inline] BUG: KMSAN: uninit-value in INETECNdecapsulate include/net/inetecn.h:275 [inline] BUG: KMSAN: uninit-value in IP6ECNdecapsulate+0x7a8/0x1fa0 include/net/inetecn.h:321 INETECNdecapsulate include/net/inetecn.h:253 [inline] INETECNdecapsulate include/net/inetecn.h:275 [inline] IP6ECNdecapsulate+0x7a8/0x1fa0 include/net/inetecn.h:321 ip6ip6dscpecndecapsulate+0x16f/0x1b0 net/ipv6/ip6tunnel.c:729 ip6tnlrcv+0xed9/0x1b50 net/ipv6/ip6tunnel.c:860 ip6tnlrcv+0xc3/0x100 net/ipv6/ip6tunnel.c:903 grercv+0x1529/0x1b90 net/ipv6/ip6gre.c:-1 ip6protocoldeliverrcu+0x1c89/0x2c60 net/ipv6/ip6input.c:438 ip6inputfinish+0x1f4/0x4a0 net/ipv6/ip6input.c:489 NFHOOK include/linux/netfilter.h:318 [inline] ip6input+0x9c/0x330 net/ipv6/ip6input.c:500 ip6mcinput+0x7ca/0xc10 net/ipv6/ip6input.c:590 dstinput include/net/dst.h:474 [inline] ip6rcvfinish+0x958/0x990 net/ipv6/ip6input.c:79 NFHOOK include/linux/netfilter.h:318 [inline] ipv6rcv+0xf1/0x3c0 net/ipv6/ip6input.c:311 netifreceiveskbonecore net/core/dev.c:6139 [inline] netifreceiveskb+0x1df/0xac0 net/core/dev.c:6252 netifreceiveskbinternal net/core/dev.c:6338 [inline] netifreceiveskb+0x57/0x630 net/core/dev.c:6397 tunrxbatched+0x1df/0x980 drivers/net/tun.c:1485 tungetuser+0x5c0e/0x6c60 drivers/net/tun.c:1953 tunchrwriteiter+0x3e9/0x5c0 drivers/net/tun.c:1999 newsyncwrite fs/readwrite.c:593 [inline] vfswrite+0xbe2/0x15d0 fs/readwrite.c:686 ksyswrite fs/readwrite.c:738 [inline] dosyswrite fs/readwrite.c:749 [inline] sesyswrite fs/readwrite.c:746 [inline] x64syswrite+0x1fb/0x4d0 fs/readwrite.c:746 x64syscall+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls64.h:2 dosyscallx64 arch/x86/entry/syscall64.c:63 [inline] dosyscall64+0xd3/0xf80 arch/x86/entry/syscall64.c:94 entrySYSCALL64afterhwframe+0x77/0x7f
Uninit was created at: slabpostallochook mm/slub.c:4960 [inline] slaballocnode mm/slub.c:5263 [inline] kmemcacheallocnodenoprof+0x9e7/0x17a0 mm/slub.c:5315 kmallocreserve+0x13c/0x4b0 net/core/skbuff.c:586 allocskb+0x805/0x1040 net/core/skbuff.c:690 allocskb include/linux/skbuff.h:1383 [inline] allocskbwithfrags+0xc5/0xa60 net/core/skbuff.c:6712 sockallocsendpskb+0xacc/0xc60 net/core/sock.c:2995 tunallocskb drivers/net/tun.c:1461 [inline] tungetuser+0x1142/0x6c60 drivers/net/tun.c:1794 tunchrwriteiter+0x3e9/0x5c0 drivers/net/tun.c:1999 newsyncwrite fs/readwrite.c:593 [inline] vfswrite+0xbe2/0x15d0 fs/readwrite.c:686 ksyswrite fs/readwrite.c:738 [inline] dosyswrite fs/readwrite.c:749 [inline] sesyswrite fs/readwrite.c:746 [inline] x64syswrite+0x1fb/0x4d0 fs/readwrite.c:746 x64syscall+0x30ab/0x3e70 arch/x86/include/generated/asm/syscalls64.h:2 dosyscallx64 arch/x86/entry/syscall64.c:63 [inline] dosyscall64+0xd3/0xf80 arch/x86/entry/syscall64.c:94 entrySYSCALL64afterhwframe+0x77/0x7f
CPU: 0 UID: 0 PID: 6465 Comm: syz.0.17 Not tainted syzkaller #0 PREEMPT(none) Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Configuration
Fix the KMSAN uninitialized-value in INET_ECN_decapsulate (__INET_ECN_decapsulate / INET_ECN_decapsulate / IP6_ECN_decapsulate) by replacing pskb_inet_may_pull() with skb_vlan_inet_prepare() in the inet_ecn decapsulation flow, and ensure VLAN encapsulations are handled (as noted: "Blamed commit did not take care of VLAN encapsulations").
Linux kernel netfilter / inet_ecn decapsulation path (include/net/inet_ecn.h) skb VLAN preparation function (Use skb_vlan_inet_prepare() instead of pskb_inet_may_pull()) = Use skb_vlan_inet_prepare() - Configuration
In ip6_tnl_rcv() / ip6_tunnel: replace pskb_inet_may_pull() usage with skb_vlan_inet_prepare() as indicated in the report ("ip6_tunnel: use skb_vlan_inet_prepare() in __ip6_tnl_rcv()"), so the decapsulation skb preparation handles VLAN encapsulations correctly.
Linux kernel IPv6 tunnel receive path (net/ipv6/ip6_tunnel.c) VLAN skb preparation in __ip6_tnl_rcv = Use skb_vlan_inet_prepare()
Event History
Frequently Asked Questions
What is the severity of CVE-2026-23003?
CVE-2026-23003 has been classified with a medium severity level due to its potential impact on VLAN encapsulations.
How do I fix CVE-2026-23003?
To fix CVE-2026-23003, update your Linux kernel to the latest stable version where the vulnerability has been resolved.
What are the potential impacts of CVE-2026-23003?
The potential impacts of CVE-2026-23003 include issues with VLAN packet handling, which could lead to data loss or network instability.
Which versions of Linux are affected by CVE-2026-23003?
The specific versions of Linux affected by CVE-2026-23003 have not been detailed, but it primarily impacts Linux kernels using the ip6_tunnel feature.
Is CVE-2026-23003 being actively exploited?
As of the current information available, there are no known active exploits for CVE-2026-23003 in the wild.