Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-26804— net: ip_tunnel: prevent perpetual headroom growth

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 存在安全漏洞,该漏洞源于 net ip_tunnel中存在安全问题。

CVSS 7.8 · High EPSS 0.25% · P15

Possible ATT&CK Techniques 1 AI

T1498.001 · Direct Network Flood

Affected Version Matrix 18

VendorProduct Version RangeStatus
Linux Linux 243aad830e8a4cdda261626fbaeddde16b08d04a< f81e94d2dcd2397137edcb8b85f4c5bed5d22383 affected
243aad830e8a4cdda261626fbaeddde16b08d04a< 2e95350fe9db9d53c701075060ac8ac883b68aee affected
243aad830e8a4cdda261626fbaeddde16b08d04a< afec0c5cd2ed71ca95a8b36a5e6d03333bf34282 affected
243aad830e8a4cdda261626fbaeddde16b08d04a< ab63de24ebea36fe73ac7121738595d704b66d96 affected
243aad830e8a4cdda261626fbaeddde16b08d04a< a0a1db40b23e8ff86dea2786c5ea1470bb23ecb9 affected
243aad830e8a4cdda261626fbaeddde16b08d04a< 049d7989c67e8dd50f07a2096dbafdb41331fb9b affected
243aad830e8a4cdda261626fbaeddde16b08d04a< 5ae1e9922bbdbaeb9cfbe91085ab75927488ac0f affected
03017375b0122453e6dda833ff7bd4191915def5 affected
… +10 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-26804

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
net: ip_tunnel: prevent perpetual headroom growth
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: net: ip_tunnel: prevent perpetual headroom growth syzkaller triggered following kasan splat: BUG: KASAN: use-after-free in __skb_flow_dissect+0x19d1/0x7a50 net/core/flow_dissector.c:1170 Read of size 1 at addr ffff88812fb4000e by task syz-executor183/5191 [..] kasan_report+0xda/0x110 mm/kasan/report.c:588 __skb_flow_dissect+0x19d1/0x7a50 net/core/flow_dissector.c:1170 skb_flow_dissect_flow_keys include/linux/skbuff.h:1514 [inline] ___skb_get_hash net/core/flow_dissector.c:1791 [inline] __skb_get_hash+0xc7/0x540 net/core/flow_dissector.c:1856 skb_get_hash include/linux/skbuff.h:1556 [inline] ip_tunnel_xmit+0x1855/0x33c0 net/ipv4/ip_tunnel.c:748 ipip_tunnel_xmit+0x3cc/0x4e0 net/ipv4/ipip.c:308 __netdev_start_xmit include/linux/netdevice.h:4940 [inline] netdev_start_xmit include/linux/netdevice.h:4954 [inline] xmit_one net/core/dev.c:3548 [inline] dev_hard_start_xmit+0x13d/0x6d0 net/core/dev.c:3564 __dev_queue_xmit+0x7c1/0x3d60 net/core/dev.c:4349 dev_queue_xmit include/linux/netdevice.h:3134 [inline] neigh_connected_output+0x42c/0x5d0 net/core/neighbour.c:1592 ... ip_finish_output2+0x833/0x2550 net/ipv4/ip_output.c:235 ip_finish_output+0x31/0x310 net/ipv4/ip_output.c:323 .. iptunnel_xmit+0x5b4/0x9b0 net/ipv4/ip_tunnel_core.c:82 ip_tunnel_xmit+0x1dbc/0x33c0 net/ipv4/ip_tunnel.c:831 ipgre_xmit+0x4a1/0x980 net/ipv4/ip_gre.c:665 __netdev_start_xmit include/linux/netdevice.h:4940 [inline] netdev_start_xmit include/linux/netdevice.h:4954 [inline] xmit_one net/core/dev.c:3548 [inline] dev_hard_start_xmit+0x13d/0x6d0 net/core/dev.c:3564 ... The splat occurs because skb->data points past skb->head allocated area. This is because neigh layer does: __skb_pull(skb, skb_network_offset(skb)); ... but skb_network_offset() returns a negative offset and __skb_pull() arg is unsigned. IOW, we skb->data gets "adjusted" by a huge value. The negative value is returned because skb->head and skb->data distance is more than 64k and skb->network_header (u16) has wrapped around. The bug is in the ip_tunnel infrastructure, which can cause dev->needed_headroom to increment ad infinitum. The syzkaller reproducer consists of packets getting routed via a gre tunnel, and route of gre encapsulated packets pointing at another (ipip) tunnel. The ipip encapsulation finds gre0 as next output device. This results in the following pattern: 1). First packet is to be sent out via gre0. Route lookup found an output device, ipip0. 2). ip_tunnel_xmit for gre0 bumps gre0->needed_headroom based on the future output device, rt.dev->needed_headroom (ipip0). 3). ip output / start_xmit moves skb on to ipip0. which runs the same code path again (xmit recursion). 4). Routing step for the post-gre0-encap packet finds gre0 as output device to use for ipip0 encapsulated packet. tunl0->needed_headroom is then incremented based on the (already bumped) gre0 device headroom. This repeats for every future packet: gre0->needed_headroom gets inflated because previous packets' ipip0 step incremented rt->dev (gre0) headroom, and ipip0 incremented because gre0 needed_headroom was increased. For each subsequent packet, gre/ipip0->needed_headroom grows until post-expand-head reallocations result in a skb->head/data distance of more than 64k. Once that happens, skb->network_header (u16) wraps around when pskb_expand_head tries to make sure that skb_network_offset() is unchanged after the headroom expansion/reallocation. After this skb_network_offset(skb) returns a different (and negative) result post headroom expansion. The next trip to neigh layer (or anything else that would __skb_pull the network header) makes skb->data point to a memory location outside skb->head area. v2: Cap the needed_headroom update to an arbitarily chosen upperlimit to prevent perpetual increase instead of dropping the headroom increment completely.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel 存在安全漏洞,该漏洞源于 net ip_tunnel中存在安全问题。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

Vendor Product Affected Versions CPE Subscribe
Linux Linux 243aad830e8a4cdda261626fbaeddde16b08d04a ~ f81e94d2dcd2397137edcb8b85f4c5bed5d22383 -
Linux Linux 2.6.34 -

II. Public POCs for CVE-2024-26804

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-26804

请登录查看更多情报信息。

Mailing List Discussions for CVE-2024-26804 (1)

Other References for CVE-2024-26804 (7)

Same Patch Batch · Linux · 2024-04-04 · 32 CVEs total

CVE-2024-26782 9.8 CRITICAL mptcp: fix double-free on socket dismantle
CVE-2024-26800 9.8 CRITICAL tls: fix use-after-free on failed backlog decryption
CVE-2024-26801 8.8 HIGH Bluetooth: Avoid potential use-after-free in hci_error_reset
CVE-2024-26792 7.8 HIGH btrfs: fix double free of anonymous device after snapshot creation failure
CVE-2024-26809 7.8 HIGH netfilter: nft_set_pipapo: release elements in clone only from destroy path
CVE-2024-26808 7.8 HIGH netfilter: nft_chain_filter: handle NETDEV_UNREGISTER for inet/ingress basechain
CVE-2024-26807 7.8 HIGH spi: cadence-qspi: fix pointer reference in runtime PM hooks
CVE-2024-26802 7.8 HIGH stmmac: Clear variable when destroying workqueue
CVE-2024-26797 7.8 HIGH drm/amd/display: Prevent potential buffer overflow in map_hw_resources
CVE-2024-26795 7.8 HIGH riscv: Sparse-Memory/vmemmap out-of-bounds fix
CVE-2024-26793 7.8 HIGH gtp: fix use-after-free and null-ptr-deref in gtp_newlink()
CVE-2024-26789 7.8 HIGH crypto: arm64/neonbs - fix out-of-bounds access on short input
CVE-2024-26786 7.8 HIGH iommufd: Fix iopt_access_list_id overwrite bug
CVE-2024-26799 7.0 HIGH ASoC: qcom: Fix uninitialized pointer dmactl
CVE-2024-26746 dmaengine: idxd: Ensure safe user copy of completion record
CVE-2024-26788 dmaengine: fsl-qdma: init irq after reg initialization
CVE-2024-26750 af_unix: Drop oob_skb ref before purging queue in GC.
CVE-2024-26780 af_unix: Fix task hung while purging oob_skb in GC.
CVE-2024-26806 spi: cadence-qspi: remove system-wide suspend helper calls from runtime PM hooks
CVE-2024-26805 netlink: Fix kernel-infoleak-after-free in __skb_datagram_iter

Showing top 20 of 32 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-26804

No comments yet


Leave a comment