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 moreaffected: 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.el8fixed: 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_1fixed: 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_6fixed: 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 morefixed: 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 morefixed: 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 morefixed: 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 morefixed: vendor fix RHSA-2024:1877
show 5 moreshow fewer
-
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 morefixed: 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 morefixed: 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 morefixed: 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 morefixed: 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_6fixed: 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
- CVE List CVE-2021-47099
- NVD CVE-2021-47099
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.