CVE-2021-47162: tipc: skb_linearize the head skb when reassembling msgs
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.
Security readout for executives and security teams
Plain-English summary
CVE-2021-47162 is a Linux kernel flaw in TIPC message handling that can trigger use-after-free crashes. The public record documents kernel BUG crashes during testing, not confirmed real-world exploitation. Business urgency depends on whether affected kernels run workloads that exercise TIPC, especially networking configurations involving macvlan.
Executive priority
Handle through normal kernel patch governance, with faster action for network infrastructure, container hosts, or systems using TIPC. No active exploitation is cited, but kernel memory-safety crashes can affect availability and may carry higher risk in exposed networking environments.
Technical view
The issue occurs when TIPC reassembles messages and appends a fragment skb to a head skb whose frag_list may already be shared. The appended fragment has insufficient reference handling across shared skbs, leading to use-after-free crashes. The stable fix linearizes the head skb in tipc_buf_append() when frag_list is set.
Likely exposure
Exposure is most likely on Linux systems running affected kernel versions where TIPC paths are used. The source lists affected kernel lines including 4.3 through 5.13-era ranges and references crashes seen during macvlan testing. The bundle does not identify affected distributions or default configurations.
Exploitation context
The bundle provides crash traces and a kernel fix, but no exploit code, no KEV listing, and no cited evidence of active exploitation. Treat this as a stability and potential kernel memory-safety risk until vendor advisories clarify local exposure and severity.
Researcher notes
Evidence is limited to the CVE description and Linux stable commits. The affected-version data includes both commit hashes and broad kernel version markers, so validate against vendor backports rather than upstream version numbers alone. The fix behavior is explicit: linearize the head skb before unsafe frag_list sharing.
Mitigation direction
Upgrade to a vendor kernel containing the referenced stable TIPC fix.
Prioritize affected Linux kernels that use TIPC or macvlan-heavy networking.
Check distribution advisories for exact fixed package versions.
If TIPC is unnecessary, review vendor-supported options to reduce exposure.
Track kernel maintenance status for unsupported 4.x and 5.x deployments.
Validation and detection
Inventory Linux kernel versions across servers, appliances, containers hosts, and virtual hosts.
Identify systems where TIPC is configured or operationally required.
Compare installed kernels against vendor advisories and referenced stable commits.
Review crash logs for BUG traces involving tipc_recvmsg, skb_clone, or skbuff handling.
Confirm patched systems run fixed kernel packages after reboot.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve · low confidence lookup
CVE-2021-47162 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.