In the Linux kernel, the following vulnerability has been resolved:
tipc: skb_linearize the head skb when reassembling msgs
It's not a good idea to append the frag skb to a skb's frag_list if the frag_list already has skbs from elsewhere, such as this skb was created by pskb_copy() where the frag_list was cloned (all the skbs in it were skb_get'ed) and shared by multiple skbs.
However, the new appended frag skb should have been only seen by the current skb. Otherwise, it will cause use after free crashes as this appended frag skb are seen by multiple skbs but it only got skb_get called once.
The same thing happens with a skb updated by pskb_may_pull() with a skb_cloned skb. Li Shuang has reported quite a few crashes caused by this when doing testing over macvlan devices:
[] kernel BUG at net/core/skbuff.c:1970! [] Call Trace: [] skb_clone+0x4d/0xb0 [] macvlan_broadcast+0xd8/0x160 [macvlan] [] macvlan_process_broadcast+0x148/0x150 [macvlan] [] process_one_work+0x1a7/0x360 [] worker_thread+0x30/0x390
[] kernel BUG at mm/usercopy.c:102! [] Call Trace: [] __check_heap_object+0xd3/0x100 [] __check_object_size+0xff/0x16b [] simple_copy_to_iter+0x1c/0x30 [] __skb_datagram_iter+0x7d/0x310 [] __skb_datagram_iter+0x2a5/0x310 [] skb_copy_datagram_iter+0x3b/0x90 [] tipc_recvmsg+0x14a/0x3a0 [tipc] [] ____sys_recvmsg+0x91/0x150 [] ___sys_recvmsg+0x7b/0xc0
[] kernel BUG at mm/slub.c:305! [] Call Trace: [] <IRQ> [] kmem_cache_free+0x3ff/0x400 [] __netif_receive_skb_core+0x12c/0xc40 [] ? kmem_cache_alloc+0x12e/0x270 [] netif_receive_skb_internal+0x3d/0xb0 [] ? get_rx_page_info+0x8e/0xa0 [be2net] [] be_poll+0x6ef/0xd00 [be2net] [] ? irq_exit+0x4f/0x100 [] net_rx_action+0x149/0x3b0
...
This patch is to fix it by linearizing the head skb if it has frag_list set in tipc_buf_append(). Note that we choose to do this before calling skb_unshare(), as __skb_linearize() will avoid skb_copy(). Also, we can not just drop the frag_list either as the early time.
CVSS Details
- CVSS 3.1 Base Score: 9.8
- CVSS 3.1 Vector: (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Covered by Rapid7
| Product | Vendor Advisory | Solution File | Added | Published |
|---|---|---|---|---|
| Amazon Linux Ami 2 | — | Upgrade kernel-develUpgrade kernelUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-toolsUpgrade bpftoolUpgrade kernel-tools-develUpgrade kernel-headersUpgrade kernel-debuginfoUpgrade python-perfUpgrade bpftool-debuginfoUpgrade kernel-tools-debuginfoUpgrade python-perf-debuginfoUpgrade perfUpgrade kernel-livepatch-4.14.238-182.421Upgrade perf-debuginfoUpgrade kernel-debuginfo-common-aarch64 | Aug 28, 2024 | Mar 25, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Mar 25, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernelUpgrade kernel-abi-stablelistsUpgrade kernel-tools | Jul 16, 2024 | Mar 25, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade python3-perfUpgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernel | Jul 17, 2024 | Mar 25, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Mar 25, 2024 |
| Suse | — | Upgrade kernel-default-baseUpgrade kernel-symsUpgrade kernel-develUpgrade kernel-default-develUpgrade kernel-docsUpgrade kernel-defaultUpgrade kernel-source-azureUpgrade kernel-default-manUpgrade kernel-devel-azureUpgrade kernel-azure-develUpgrade kernel-obs-buildUpgrade kernel-azureUpgrade kernel-syms-azureUpgrade kernel-macrosUpgrade kernel-default-extraUpgrade kernel-sourceUpgrade kernel-azure-base | Aug 9, 2024 | Mar 25, 2024 |
| Ubuntu | — | Upgrade linux-kvmUpgrade linux-oracleUpgrade linux-gcpUpgrade linux-azure-4.15Upgrade linux-azure-fipsUpgrade linux-gcp-4.15Upgrade linux-hwe-5.4Upgrade linux-azureUpgrade linux-gkeopUpgrade linux-azure-5.4Upgrade linux-hweUpgrade linux-gcp-5.4Upgrade linux-aws-fipsUpgrade linux-gcp-fipsUpgrade linux-aws-hweUpgrade linux-oracle-5.4Upgrade linuxUpgrade linux-raspi-5.4Upgrade linux-fipsUpgrade linux-bluefieldUpgrade linux-raspiUpgrade linux-aws-5.4Upgrade linux-aws | Nov 19, 2024 | Mar 25, 2024 |
Prioritise with Active Threat Intelligence
With curated Threat Intelligence, you can see which vulnerabilities truly put you at risk, prioritize what matters most, and act before attackers do.
Explore Intelligence Hub