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 perf-debuginfoUpgrade kernel-livepatch-4.14.238-182.421Upgrade kernel-headersUpgrade kernel-debuginfo-common-aarch64Upgrade python-perf-debuginfoUpgrade kernel-tools-develUpgrade python-perfUpgrade kernel-debuginfoUpgrade perfUpgrade kernel-tools-debuginfoUpgrade bpftool-debuginfoUpgrade bpftoolUpgrade kernel-debuginfo-common-x86_64Upgrade kernel-develUpgrade kernel-toolsUpgrade kernel | Aug 28, 2024 | Mar 25, 2024 |
| Debian | — | Upgrade linux | Jul 30, 2024 | Mar 25, 2024 |
| Huawei Euleros 2_0_sp10 | — | Upgrade kernelUpgrade kernel-abi-stablelistsUpgrade python3-perfUpgrade kernel-tools-libsUpgrade kernel-tools | Jul 16, 2024 | Mar 25, 2024 |
| Huawei Euleros 2_0_sp9 | — | Upgrade kernel-tools-libsUpgrade kernel-toolsUpgrade kernelUpgrade python3-perf | Jul 17, 2024 | Mar 25, 2024 |
| Redhat_linux | — | No solution exists | Jul 9, 2025 | Mar 25, 2024 |
| Suse | — | Upgrade kernel-default-develUpgrade kernel-develUpgrade kernel-docsUpgrade kernel-defaultUpgrade kernel-symsUpgrade kernel-default-baseUpgrade kernel-macrosUpgrade kernel-default-extraUpgrade kernel-sourceUpgrade kernel-azure-baseUpgrade kernel-azure-develUpgrade kernel-azureUpgrade kernel-source-azureUpgrade kernel-syms-azureUpgrade kernel-default-manUpgrade kernel-devel-azureUpgrade kernel-obs-build | Aug 9, 2024 | Mar 25, 2024 |
| Ubuntu | — | Upgrade linux-gcpUpgrade linux-oracleUpgrade linux-gcp-4.15Upgrade linux-azure-fipsUpgrade linux-kvmUpgrade linux-azure-5.4Upgrade linux-hwe-5.4Upgrade linux-gcp-5.4Upgrade linux-gkeopUpgrade linux-aws-fipsUpgrade linux-azureUpgrade linux-azure-4.15Upgrade linux-gcp-fipsUpgrade linux-hweUpgrade linux-raspi-5.4Upgrade linuxUpgrade linux-raspiUpgrade linux-aws-5.4Upgrade linux-bluefieldUpgrade linux-fipsUpgrade linux-awsUpgrade linux-aws-hweUpgrade linux-oracle-5.4 | 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