Skip to content
Fencer Vulns
high 7.8

CVE-2021-47099 json

veth: ensure skb entering GRO are not cloned.

published 2024-03-04 2 y ago modified 2026-08-05 3 mo ago also EUVD-2021-33747

cvss
7.8
version 3.1, CNA
cisa kev
Not listed
not in CISA's catalog
epss
0.2%
EPSS 0.2% chance of exploitation in 30 days, percentile 13%
public exploits
0
none known

Summary

In the Linux kernel, the following vulnerability has been resolved:

veth: ensure skb entering GRO are not cloned.

After commit d3256efd8e8b ("veth: allow enabling NAPI even without XDP"), if GRO is enabled on a veth device and TSO is disabled on the peer device, TCP skbs will go through the NAPI callback. If there is no XDP program attached, the veth code does not perform any share check, and shared/cloned skbs could enter the GRO engine.

Ignat reported a BUG triggered later-on due to the above condition:

[ 53.970529][ C1] kernel BUG at net/core/skbuff.c:3574! [ 53.981755][ C1] invalid opcode: 0000 [#1] PREEMPT SMP KASAN PTI [ 53.982634][ C1] CPU: 1 PID: 19 Comm: ksoftirqd/1 Not tainted 5.16.0-rc5+ #25 [ 53.982634][ C1] Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 [ 53.982634][ C1] RIP: 0010:skb_shift+0x13ef/0x23b0 [ 53.982634][ C1] Code: ea 03 0f b6 04 02 48 89 fa 83 e2 07 38 d0 7f 08 84 c0 0f 85 41 0c 00 00 41 80 7f 02 00 4d 8d b5 d0 00 00 00 0f 85 74 f5 ff ff <0f> 0b 4d 8d 77 20 be 04 00 00 00 4c 89 44 24 78 4c 89 f7 4c 89 8c [ 53.982634][ C1] RSP: 0018:ffff8881008f7008 EFLAGS: 00010246 [ 53.982634][ C1] RAX: 0000000000000000 RBX: ffff8881180b4c80 RCX: 0000000000000000 [ 53.982634][ C1] RDX: 0000000000000002 RSI: ffff8881180b4d3c RDI: ffff88810bc9cac2 [ 53.982634][ C1] RBP: ffff8881008f70b8 R08: ffff8881180b4cf4 R09: ffff8881180b4cf0 [ 53.982634][ C1] R10: ffffed1022999e5c R11: 0000000000000002 R12: 0000000000000590 [ 53.982634][ C1] R13: ffff88810f940c80 R14: ffff88810f940d50 R15: ffff88810bc9cac0 [ 53.982634][ C1] FS: 0000000000000000(0000) GS:ffff888235880000(0000) knlGS:0000000000000000 [ 53.982634][ C1] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 53.982634][ C1] CR2: 00007ff5f9b86680 CR3: 0000000108ce8004 CR4: 0000000000170ee0 [ 53.982634][ C1] Call Trace: [ 53.982634][ C1] <TASK> [ 53.982634][ C1] tcp_sacktag_walk+0xaba/0x18e0 [ 53.982634][ C1] tcp_sacktag_write_queue+0xe7b/0x3460 [ 53.982634][ C1] tcp_ack+0x2666/0x54b0 [ 53.982634][ C1] tcp_rcv_established+0x4d9/0x20f0 [ 53.982634][ C1] tcp_v4_do_rcv+0x551/0x810 [ 53.982634][ C1] tcp_v4_rcv+0x22ed/0x2ed0 [ 53.982634][ C1] ip_protocol_deliver_rcu+0x96/0xaf0 [ 53.982634][ C1] ip_local_deliver_finish+0x1e0/0x2f0 [ 53.982634][ C1] ip_sublist_rcv_finish+0x211/0x440 [ 53.982634][ C1] ip_list_rcv_finish.constprop.0+0x424/0x660 [ 53.982634][ C1] ip_list_rcv+0x2c8/0x410 [ 53.982634][ C1] __netif_receive_skb_list_core+0x65c/0x910 [ 53.982634][ C1] netif_receive_skb_list_internal+0x5f9/0xcb0 [ 53.982634][ C1] napi_complete_done+0x188/0x6e0 [ 53.982634][ C1] gro_cell_poll+0x10c/0x1d0 [ 53.982634][ C1] __napi_poll+0xa1/0x530 [ 53.982634][ C1] net_rx_action+0x567/0x1270 [ 53.982634][ C1] __do_softirq+0x28a/0x9ba [ 53.982634][ C1] run_ksoftirqd+0x32/0x60 [ 53.982634][ C1] smpboot_thread_fn+0x559/0x8c0 [ 53.982634][ C1] kthread+0x3b9/0x490 [ 53.982634][ C1] ret_from_fork+0x22/0x30 [ 53.982634][ C1] </TASK>

Address the issue by skipping the GRO stage for shared or cloned skbs. To reduce the chance of OoO, try to unclone the skbs before giving up.

v1 -> v2: - use avoid skb_copy and fallback to netif_receive_skb - Eric

Patch / fix

  • Linux Linux 5.15.12, 5.16
  • linux Debian 14, Debian 13, Debian 12 5.15.15-1

debian advisories DEBIAN-CVE-2021-47099

  • kernel RHEL 9 5.14.0-162.6.1.el9_1
  • perf RHEL 9 5.14.0-162.6.1.el9_1
  • bpftool RHEL 9 5.14.0-162.6.1.el9_1
  • kernel-core RHEL 9 5.14.0-162.6.1.el9_1
  • kernel-tools RHEL 9 5.14.0-162.6.1.el9_1
  • python3-perf RHEL 9 5.14.0-162.6.1.el9_1
  • kernel-modules RHEL 9 5.14.0-162.6.1.el9_1
  • kernel-zfcpdump RHEL 9 5.14.0-162.6.1.el9_1

red hat advisories RHSA-2022:8267RHSA-2022:7933RHSA-2022:7683RHSA-2024:1877RHSA-2022:7444

  • kernel-azure SLE Module for Public Cloud 15 SP5, openSUSE Leap 15.5 5.14.21-150500.33.48.1
  • kernel-syms-azure SLE Module for Public Cloud 15 SP5, openSUSE Leap 15.5 5.14.21-150500.33.48.1
  • kernel-source-azure SLE Module for Public Cloud 15 SP5, openSUSE Leap 15.5 5.14.21-150500.33.48.1
  • dtb-aarch64 openSUSE Leap 15.5 5.14.21-150500.55.59.1
  • kernel-64kb SLE Module for Basesystem 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.59.1
  • kernel-syms SLE Module for Development Tools 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.59.1
  • kernel-obs-qa openSUSE Leap 15.5 5.14.21-150500.55.59.1
  • kernel-source SLE Module for Development Tools 15 SP5, SLE Module for Basesystem 15 SP5, openSUSE Leap 15.5 5.14.21-150500.55.59.1

suse advisories SUSE-SU-2024:1490-1SUSE-SU-2024:1480-1SUSE-SU-2024:1466-1SUSE-SU-2024:1321-1SUSE-SU-2024:1320-1

Vendor advisories

What the vendors themselves say about their products: affected, fixed or not affected, and what to do.

red hat product security vex CVE-2021-47099 updated cvss 6.0

kernel: veth: ensure skb entering GRO are not cloned.

  • Red Hat Enterprise Linux 6 perf, kernel, python-perf, kernel-kdump, kernel-firmware, kernel-bootwrapper, +1 more Red Hat Enterprise Linux 7 perf, kernel, bpftool, kernel-rt, python-perf, kernel-kdump, +8 more
    affected: no fix planned “Out of support scope”
  • Red Hat CodeReady Linux Builder (v. 8) kernel-debuginfo-common-x86_64 4.18.0-425.3.1.el8, kernel-debuginfo-common-aarch64 4.18.0-425.3.1.el8, kernel-debuginfo-common-ppc64le 4.18.0-425.3.1.el8
    fixed: vendor fix RHSA-2022:7683
  • Red Hat CodeReady Linux Builder (v. 9) kernel-debuginfo-common-s390x 5.14.0-162.6.1.el9_1, kernel-debuginfo-common-x86_64 5.14.0-162.6.1.el9_1, kernel-debuginfo-common-aarch64 5.14.0-162.6.1.el9_1, kernel-debuginfo-common-ppc64le 5.14.0-162.6.1.el9_1
    fixed: vendor fix RHSA-2022:8267
  • Red Hat CodeReady Linux Builder EUS (v.8.6) kernel-debuginfo-common-x86_64 4.18.0-372.100.1.el8_6, kernel-debuginfo-common-aarch64 4.18.0-372.100.1.el8_6, kernel-debuginfo-common-ppc64le 4.18.0-372.100.1.el8_6
    fixed: vendor fix RHSA-2024:1877
  • Red Hat Enterprise Linux AppStream (v. 9) perf 5.14.0-162.6.1.el9_1, kernel-devel-matched 5.14.0-162.6.1.el9_1, kernel-debug-devel-matched 5.14.0-162.6.1.el9_1, kernel-debuginfo-common-s390x 5.14.0-162.6.1.el9_1, kernel-zfcpdump-devel-matched 5.14.0-162.6.1.el9_1, kernel-debuginfo-common-x86_64 5.14.0-162.6.1.el9_1, +2 more
    fixed: vendor fix RHSA-2022:8267
  • Red Hat Enterprise Linux BaseOS (v. 8) perf 4.18.0-425.3.1.el8, kernel 4.18.0-425.3.1.el8, bpftool 4.18.0-425.3.1.el8, kernel-core 4.18.0-425.3.1.el8, kernel-tools 4.18.0-425.3.1.el8, python3-perf 4.18.0-425.3.1.el8, +15 more
    fixed: vendor fix RHSA-2022:7683
  • Red Hat Enterprise Linux BaseOS (v. 9) kernel 5.14.0-162.6.1.el9_1, bpftool 5.14.0-162.6.1.el9_1, kernel-core 5.14.0-162.6.1.el9_1, kernel-tools 5.14.0-162.6.1.el9_1, python3-perf 5.14.0-162.6.1.el9_1, kernel-modules 5.14.0-162.6.1.el9_1, +14 more
    fixed: vendor fix RHSA-2022:8267
  • Red Hat Enterprise Linux BaseOS EUS (v.8.6) perf 4.18.0-372.100.1.el8_6, kernel 4.18.0-372.100.1.el8_6, bpftool 4.18.0-372.100.1.el8_6, kernel-core 4.18.0-372.100.1.el8_6, kernel-tools 4.18.0-372.100.1.el8_6, python3-perf 4.18.0-372.100.1.el8_6, +15 more
    fixed: vendor fix RHSA-2024:1877
show 5 more
  • Red Hat Enterprise Linux Real Time (v. 8) kernel-rt 4.18.0-425.3.1.rt7.213.el8, kernel-rt-core 4.18.0-425.3.1.rt7.213.el8, kernel-rt-modules 4.18.0-425.3.1.rt7.213.el8, kernel-rt-debug-core 4.18.0-425.3.1.rt7.213.el8, kernel-rt-debug-modules 4.18.0-425.3.1.rt7.213.el8, kernel-rt-modules-extra 4.18.0-425.3.1.rt7.213.el8, +2 more
    fixed: vendor fix RHSA-2022:7444
  • Red Hat Enterprise Linux Real Time (v. 9) kernel-rt 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-core 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-modules 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-debug-core 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-debug-modules 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-modules-extra 5.14.0-162.6.1.rt21.168.el9_1, +2 more
    fixed: vendor fix RHSA-2022:7933
  • Red Hat Enterprise Linux Real Time for NFV (v. 8) kernel-rt 4.18.0-425.3.1.rt7.213.el8, kernel-rt-kvm 4.18.0-425.3.1.rt7.213.el8, kernel-rt-core 4.18.0-425.3.1.rt7.213.el8, kernel-rt-modules 4.18.0-425.3.1.rt7.213.el8, kernel-rt-debug-kvm 4.18.0-425.3.1.rt7.213.el8, kernel-rt-debug-core 4.18.0-425.3.1.rt7.213.el8, +4 more
    fixed: vendor fix RHSA-2022:7444
  • Red Hat Enterprise Linux Real Time for NFV (v. 9) kernel-rt 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-kvm 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-core 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-modules 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-debug-kvm 5.14.0-162.6.1.rt21.168.el9_1, kernel-rt-debug-core 5.14.0-162.6.1.rt21.168.el9_1, +4 more
    fixed: vendor fix RHSA-2022:7933
  • Red Hat Virtualization 4 Hypervisor for RHEL 8 perf 4.18.0-372.100.1.el8_6, kernel-debuginfo-common-x86_64 4.18.0-372.100.1.el8_6
    fixed: vendor fix RHSA-2024:1877

Red Hat CSAF VEX © Red Hat, Inc., from https://security.access.redhat.com/data/csaf/v2/vex/; changed: reduced to product statuses and remediations. CC BY 4.0 · csaf

CISA SSVC

Exploitation
none
Automatable
no
Technical impact
partial
Assessed
2 y ago

Exploit prediction

0.23% chance of exploitation in the next 30 days, higher than 13% of all scored CVEs (FIRST EPSS, 2026-11-08).

CVSS scores

assigned by version score vector
CNA 3.1 7.8 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CISA ADP 3.1 6.0 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:H
CNA 3.1 6.0 CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:H

Affected products

  • Linux Linux

Classification

Technology feeds

References

Sources

Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.