Skip to main content
← All vulnerabilities
CVE-2026-98306

seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, and 2 more
None on Exploit-DB, Metasploit or GitHub

Summary

In the Linux kernel, the following vulnerability has been resolved: seg6: set IPSKB_L3SLAVE from IP6SKB_L3SLAVE on IPIP decapsulation When an SRv6 packet arrives on an interface enslaved to a VRF, vrf_ip6_rcv() sets IP6SKB_L3SLAVE in IP6CB, but decap_and_validate() has never set IPSKB_L3SLAVE in IPCB. The bit stayed clear in the common case, and with CONFIG_IPV6_MIP6 the leftover frag_max_size of a reassembled outer packet could even set it, with no VRF involved. Commit 44930446dde4 ("ipv6: seg6: clear IPv4 control block on IPIP decapsulation") then made the unreliable bit reliably clear. The effect of the missing flag is visible with End.DX4 when a delivery to a local address of the node reaches the socket lookup. For example, a UDP socket bound to the enslaved ingress interface does not receive any of the decapsulated packets, while an unbound socket outside the VRF does. This contradicts Documentation/networking/vrf.rst: by default the scope of an unbound UDP or TCP socket is limited to the default VRF. Set IPSKB_L3SLAVE for IPv4 in decap_and_validate(), which already does the same for IPv6. The socket lookup then matches the decapsulated packet like any other packet received on that enslaved interface. Such a packet matches an unbound UDP or TCP socket only when udp_l3mdev_accept or tcp_l3mdev_accept is set.

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in 1d9f5c78903dd25a3556229eb716dd465c5f3573; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in 72f410616000d21a0a6ec6c93a60301b9c92e95c; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in e4d7c52f15f572608374947c6c802052e1a2fc82; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in 5130afa025c95faa621adf8bac525baeb2b290d2; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in f8fb4738ccef5f9d107845b05734a56352747b1a; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in ddf60220c925b54a1714c4722fdbdb12833232d0; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in 8c16e1ccc082a3763dfc6bc2d3f658c1a6336f9d; From 891ef8dd2a8d14e4e73a81dcdb135b574c57f556 · fixed in 7616242a2b37883f7322aaa1d2bd6cd0fed28315

  • Linux Linux

    4.14

  • KernelLinux

    From 4.14.0 · fixed in 5.10.271; From 5.11.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.112; From 6.13.0 · fixed in 6.18.54; From 6.19.0 · fixed in 7.2.8

References 8

git.kernel.org