{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2021-47162","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-03-25T09:12:14.109Z","datePublished":"2024-03-25T09:16:15.857Z","dateUpdated":"2026-08-05T08:46:26.121Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T08:46:26.121Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\ntipc: skb_linearize the head skb when reassembling msgs\n\nIt's not a good idea to append the frag skb to a skb's frag_list if\nthe frag_list already has skbs from elsewhere, such as this skb was\ncreated by pskb_copy() where the frag_list was cloned (all the skbs\nin it were skb_get'ed) and shared by multiple skbs.\n\nHowever, the new appended frag skb should have been only seen by the\ncurrent skb. Otherwise, it will cause use after free crashes as this\nappended frag skb are seen by multiple skbs but it only got skb_get\ncalled once.\n\nThe same thing happens with a skb updated by pskb_may_pull() with a\nskb_cloned skb. Li Shuang has reported quite a few crashes caused\nby this when doing testing over macvlan devices:\n\n  [] kernel BUG at net/core/skbuff.c:1970!\n  [] Call Trace:\n  []  skb_clone+0x4d/0xb0\n  []  macvlan_broadcast+0xd8/0x160 [macvlan]\n  []  macvlan_process_broadcast+0x148/0x150 [macvlan]\n  []  process_one_work+0x1a7/0x360\n  []  worker_thread+0x30/0x390\n\n  [] kernel BUG at mm/usercopy.c:102!\n  [] Call Trace:\n  []  __check_heap_object+0xd3/0x100\n  []  __check_object_size+0xff/0x16b\n  []  simple_copy_to_iter+0x1c/0x30\n  []  __skb_datagram_iter+0x7d/0x310\n  []  __skb_datagram_iter+0x2a5/0x310\n  []  skb_copy_datagram_iter+0x3b/0x90\n  []  tipc_recvmsg+0x14a/0x3a0 [tipc]\n  []  ____sys_recvmsg+0x91/0x150\n  []  ___sys_recvmsg+0x7b/0xc0\n\n  [] kernel BUG at mm/slub.c:305!\n  [] Call Trace:\n  []  <IRQ>\n  []  kmem_cache_free+0x3ff/0x400\n  []  __netif_receive_skb_core+0x12c/0xc40\n  []  ? kmem_cache_alloc+0x12e/0x270\n  []  netif_receive_skb_internal+0x3d/0xb0\n  []  ? get_rx_page_info+0x8e/0xa0 [be2net]\n  []  be_poll+0x6ef/0xd00 [be2net]\n  []  ? irq_exit+0x4f/0x100\n  []  net_rx_action+0x149/0x3b0\n\n  ...\n\nThis patch is to fix it by linearizing the head skb if it has frag_list\nset in tipc_buf_append(). Note that we choose to do this before calling\nskb_unshare(), as __skb_linearize() will avoid skb_copy(). Also, we can\nnot just drop the frag_list either as the early time."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":9.8,"baseSeverity":"CRITICAL"},"scenarios":[{"lang":"en","value":"AV:N - The vulnerable tipc_buf_append() reassembly path is reached from tipc_udp_recv() → tipc_rcv() → tipc_link_rcv() → tipc_link_input() when processing MSG_FRAGMENTER packets over a configured TIPC UDP bearer, which is IP-routable and network-facing.\nAC:L - An attacker who can reach the UDP bearer fully controls discovery/link setup (default net_id 4711, optional crypto) and can reliably send the fragmented messages that drive reassembly; this is a deterministic shared-frag_list UAF, not a race beyond attacker control.\nPR:N - No privileges on the target are required; TIPC discovery and link establishment are unauthenticated by default, so a remote network peer can reach the reassembly code without local credentials.\nUI:N - Exploitation requires only attacker-sent TIPC packets; no victim user action such as mounting a filesystem or opening a file is needed.\nS:U - The UAF corrupts kernel memory and can elevate privilege within the same host kernel security authority; it does not cross a VM, IOMMU, or other security boundary.\nC:H - Use-after-free on sk_buff frag_list structures gives the attacker control over freed object contents and is therefore treatable as an arbitrary kernel read primitive.\nI:H - The same UAF enables heap reuse and write/control-flow hijacking primitives against kernel sk_buff state, supporting integrity compromise and code execution.\nA:H - The bug has been observed to trigger kernel BUG/oops paths (skb_clone, usercopy, slub), so availability impact includes reliable kernel crash."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tipc/msg.c"],"versions":[{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"b2c8d28c34b3070407cb1741f9ba3f15d0284b8b","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"5489f30bb78ff0dafb4229a69632afc2ba20765c","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"436d650d374329a591c30339a91fa5078052ed1e","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"4b1761898861117c97066aea6c58f68a7787f0bf","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"64d17ec9f1ded042c4b188d15734f33486ed9966","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"6da24cfc83ba4f97ea44fc7ae9999a006101755c","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"ace300eecbccaa698e2b472843c74a5f33f7dce8","status":"affected","versionType":"git"},{"version":"45c8b7b175ceb2d542e0fe15247377bf3bce29ec","lessThan":"b7df21cf1b79ab7026f545e7bf837bd5750ac026","status":"affected","versionType":"git"},{"version":"d45ed6c1ff20d3640a31f03816ca2d48fb7d6f22","status":"affected","versionType":"git"},{"version":"c19282fd54a19e4651a4e67836cd842082546677","status":"affected","versionType":"git"},{"version":"4.1.14","lessThan":"4.2","status":"affected","versionType":"semver"},{"version":"4.2.7","lessThan":"4.3","status":"affected","versionType":"semver"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["net/tipc/msg.c"],"versions":[{"version":"4.3","status":"affected"},{"version":"0","lessThan":"4.3","status":"unaffected","versionType":"semver"},{"version":"4.4.271","lessThanOrEqual":"4.4.*","status":"unaffected","versionType":"semver"},{"version":"4.9.271","lessThanOrEqual":"4.9.*","status":"unaffected","versionType":"semver"},{"version":"4.14.235","lessThanOrEqual":"4.14.*","status":"unaffected","versionType":"semver"},{"version":"4.19.193","lessThanOrEqual":"4.19.*","status":"unaffected","versionType":"semver"},{"version":"5.4.124","lessThanOrEqual":"5.4.*","status":"unaffected","versionType":"semver"},{"version":"5.10.42","lessThanOrEqual":"5.10.*","status":"unaffected","versionType":"semver"},{"version":"5.12.9","lessThanOrEqual":"5.12.*","status":"unaffected","versionType":"semver"},{"version":"5.13","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"4.4.271"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"4.9.271"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"4.14.235"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"4.19.193"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"5.4.124"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"5.10.42"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"5.12.9"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.3","versionEndExcluding":"5.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.1.14"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.2.7"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/b2c8d28c34b3070407cb1741f9ba3f15d0284b8b"},{"url":"https://git.kernel.org/stable/c/5489f30bb78ff0dafb4229a69632afc2ba20765c"},{"url":"https://git.kernel.org/stable/c/436d650d374329a591c30339a91fa5078052ed1e"},{"url":"https://git.kernel.org/stable/c/4b1761898861117c97066aea6c58f68a7787f0bf"},{"url":"https://git.kernel.org/stable/c/64d17ec9f1ded042c4b188d15734f33486ed9966"},{"url":"https://git.kernel.org/stable/c/6da24cfc83ba4f97ea44fc7ae9999a006101755c"},{"url":"https://git.kernel.org/stable/c/ace300eecbccaa698e2b472843c74a5f33f7dce8"},{"url":"https://git.kernel.org/stable/c/b7df21cf1b79ab7026f545e7bf837bd5750ac026"}],"title":"tipc: skb_linearize the head skb when reassembling msgs","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-26T20:36:04.317335Z","id":"CVE-2021-47162","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-06-26T20:36:12.629Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-04T05:24:39.945Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/b2c8d28c34b3070407cb1741f9ba3f15d0284b8b","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/5489f30bb78ff0dafb4229a69632afc2ba20765c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/436d650d374329a591c30339a91fa5078052ed1e","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/4b1761898861117c97066aea6c58f68a7787f0bf","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/64d17ec9f1ded042c4b188d15734f33486ed9966","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/6da24cfc83ba4f97ea44fc7ae9999a006101755c","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/ace300eecbccaa698e2b472843c74a5f33f7dce8","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/b7df21cf1b79ab7026f545e7bf837bd5750ac026","tags":["x_transferred"]}]}]}}