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-aarch64Upgrade perfUpgrade kernel-tools-develUpgrade bpftool-debuginfoUpgrade kernel-livepatch-4.14.238-182.421Upgrade perf-debuginfoUpgrade python-perf-debuginfoUpgrade kernel-tools-debuginfoUpgrade python-perfUpgrade kernel-headersUpgrade kernel-debuginfoUpgrade kernel-toolsUpgrade kernel-develUpgrade kernelUpgrade bpftoolUpgrade kernel-debuginfo-common-x86_64 | 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 kernel-abi-stablelistsUpgrade kernelUpgrade 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-default-develUpgrade kernel-symsUpgrade kernel-develUpgrade kernel-docsUpgrade kernel-defaultUpgrade kernel-azure-baseUpgrade kernel-syms-azureUpgrade kernel-devel-azureUpgrade kernel-default-extraUpgrade kernel-macrosUpgrade kernel-sourceUpgrade kernel-azureUpgrade kernel-obs-buildUpgrade kernel-default-manUpgrade kernel-azure-develUpgrade kernel-source-azure | Aug 9, 2024 | Mar 25, 2024 |
| Ubuntu | — | Upgrade linux-fipsUpgrade linux-bluefieldUpgrade linux-raspi-5.4Upgrade linux-aws-hweUpgrade linux-awsUpgrade linux-raspiUpgrade linux-aws-5.4Upgrade linuxUpgrade linux-oracle-5.4Upgrade linux-gcp-fipsUpgrade linux-aws-fipsUpgrade linux-gcp-4.15Upgrade linux-hweUpgrade linux-azure-fipsUpgrade linux-gcp-5.4Upgrade linux-kvmUpgrade linux-gkeopUpgrade linux-oracleUpgrade linux-azure-4.15Upgrade linux-azure-5.4Upgrade linux-gcpUpgrade linux-hwe-5.4Upgrade 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