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