CVE-2024-26882: net: ip_tunnel: make sure to pull inner header in ip_tunnel_rcv()
In the Linux kernel, the following vulnerability has been resolved:
net: iptunnel: make sure to pull inner header in iptunnelrcv()
Apply the same fix than ones found in :
8d975c15c0cd ("ip6tunnel: make sure to pull inner header in ip6tnlrcv()") 1ca1ba465e55 ("geneve: make sure to pull inner header in geneverx()")
We have to save skb->networkheader in a temporary variable in order to be able to recompute the networkheader pointer after a pskbinetmaypull() call.
pskbinetmaypull() makes sure the needed headers are in skb->head.
syzbot reported: 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 IPECNdecapsulate include/net/inetecn.h:302 [inline] BUG: KMSAN: uninit-value in iptunnelrcv+0xed9/0x2ed0 net/ipv4/iptunnel.c:409 INETECNdecapsulate include/net/inetecn.h:253 [inline] INETECNdecapsulate include/net/inetecn.h:275 [inline] IPECNdecapsulate include/net/inetecn.h:302 [inline] iptunnelrcv+0xed9/0x2ed0 net/ipv4/iptunnel.c:409 ipgrercv+0x9bc/0xbc0 net/ipv4/ipgre.c:389 ipgrercv net/ipv4/ipgre.c:411 [inline] grercv+0x423/0x19f0 net/ipv4/ipgre.c:447 grercv+0x2a4/0x390 net/ipv4/gredemux.c:163 ipprotocoldeliverrcu+0x264/0x1300 net/ipv4/ipinput.c:205 iplocaldeliverfinish+0x2b8/0x440 net/ipv4/ipinput.c:233 NFHOOK include/linux/netfilter.h:314 [inline] iplocaldeliver+0x21f/0x490 net/ipv4/ipinput.c:254 dstinput include/net/dst.h:461 [inline] iprcvfinish net/ipv4/ipinput.c:449 [inline] NFHOOK include/linux/netfilter.h:314 [inline] iprcv+0x46f/0x760 net/ipv4/ipinput.c:569 netifreceiveskbonecore net/core/dev.c:5534 [inline] netifreceiveskb+0x1a6/0x5a0 net/core/dev.c:5648 netifreceiveskbinternal net/core/dev.c:5734 [inline] netifreceiveskb+0x58/0x660 net/core/dev.c:5793 tunrxbatched+0x3ee/0x980 drivers/net/tun.c:1556 tungetuser+0x53b9/0x66e0 drivers/net/tun.c:2009 tunchrwriteiter+0x3af/0x5d0 drivers/net/tun.c:2055 callwriteiter include/linux/fs.h:2087 [inline] newsyncwrite fs/readwrite.c:497 [inline] vfswrite+0xb6b/0x1520 fs/readwrite.c:590 ksyswrite+0x20f/0x4c0 fs/readwrite.c:643 dosyswrite fs/readwrite.c:655 [inline] sesyswrite fs/readwrite.c:652 [inline] x64syswrite+0x93/0xd0 fs/readwrite.c:652 dosyscallx64 arch/x86/entry/common.c:52 [inline] dosyscall64+0xcf/0x1e0 arch/x86/entry/common.c:83 entrySYSCALL64afterhwframe+0x63/0x6b
Uninit was created at: allocpages+0x9a6/0xe00 mm/pagealloc.c:4590 allocpagesmpol+0x62b/0x9d0 mm/mempolicy.c:2133 allocpages+0x1be/0x1e0 mm/mempolicy.c:2204 skbpagefragrefill+0x2bf/0x7c0 net/core/sock.c:2909 tunbuildskb drivers/net/tun.c:1686 [inline] tungetuser+0xe0a/0x66e0 drivers/net/tun.c:1826 tunchrwriteiter+0x3af/0x5d0 drivers/net/tun.c:2055 callwriteiter include/linux/fs.h:2087 [inline] newsyncwrite fs/readwrite.c:497 [inline] vfswrite+0xb6b/0x1520 fs/readwrite.c:590 ksyswrite+0x20f/0x4c0 fs/readwrite.c:643 dosyswrite fs/readwrite.c:655 [inline] sesyswrite fs/readwrite.c:652 [inline] x64syswrite+0x93/0xd0 fs/readwrite.c:652 dosyscallx64 arch/x86/entry/common.c:52 [inline] dosyscall64+0xcf/0x1e0 arch/x86/entry/common.c:83 entrySYSCALL64afterhwframe+0x63/0x6b
Other sources
In the Linux kernel, the following vulnerability has been resolved:
net: iptunnel: make sure to pull inner header in iptunnelrcv()
The Linux kernel CVE team has assigned CVE-2024-26882 to this issue.
Upstream advisory: https://lore.kernel.org/linux-cve-announce/2024041741-CVE-2024-26882-be35@gregkh/T
— Red Hat
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 5.10.223-1Fixed in 5.10.234-1Fixed in 6.1.129-1Fixed in 6.1.135-1Fixed in 6.12.25-1Fixed in 6.12.27-1 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.4.273 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.10.214 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 5.15.153 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.1.83 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.6.23 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.7.11 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.8.2 - Upgrade
Upgrade
redhat/kernelto a version that resolves this vulnerability.Fixed in 6.9 - Configuration
In ip_tunnel_rcv() (net/ipv4/ip_tunnel.c), save skb->network_header in a temporary variable before calling pskb_inet_may_pull(), and recompute the network_header pointer after the pskb_inet_may_pull() call. This is the same fix referenced for ip6_tunnel (__ip6_tnl_rcv()) and geneve (geneve_rx()).
Linux kernel networking (ip_tunnel_rcv) skb->network_header handling around pskb_inet_may_pull() = Save skb->network_header to a temporary variable before pskb_inet_may_pull(), then recompute skb->network_header afterward
Event History
Frequently Asked Questions
What is the severity of CVE-2024-26882?
CVE-2024-26882 has a severity rating that has not been publicly disclosed but involves an issue in the Linux kernel's net subsystem.
How do I fix CVE-2024-26882?
To fix CVE-2024-26882, update the affected Linux kernel to the versions 5.4.273, 5.10.214, 5.15.153, 6.1.83, 6.6.23, 6.7.11, 6.8.2, or 6.9.
Which Linux kernel versions are vulnerable to CVE-2024-26882?
Versions of the Linux kernel from 3.10 up to 6.9 are vulnerable to CVE-2024-26882.
Is CVE-2024-26882 a local or remote vulnerability?
CVE-2024-26882 is typically considered a local vulnerability, affecting processes that can manipulate network protocols.
What impact does CVE-2024-26882 have on system security?
CVE-2024-26882 can potentially allow attackers to manipulate inner packet headers, which may lead to security breaches and unauthorized access.