In the Linux kernel, the following vulnerability has been resolved:
net: gro: fix double aggregation of flush-marked skbs
Commit 0ab03f353d36 ("net-gro: Fix GRO flush when receiving a GSO packet.") added a flush check to skb_gro_receive(), but skb_gro_receive_list() lacks the same validation.
As a result, packets marked with NAPI_GRO_CB(skb)->flush may still be re-aggregated.
This allows already-GRO'd packets with existing frag_list to be re-aggregated into a new GRO session, corrupting the frag_list chain structure. When skb_segment() attempts to unpack these malformed packets, it encounters invalid state and triggers a kernel panic.
Scenario (Tethering/Device forwarding): 1. Driver: Generated aggregated packet P1 via LRO with frag_list 2. Dev A: Receives aggregated fraglist packet and flush flag set 3. Dev A: Re-enters GRO, skb_gro_receive_list() is called 4. Missing flush check allows re-aggregation despite flush flag 5. Frag_list chain becomes corrupted (loops or dangling refs) 6. Dev B: TX path calls skb_segment(), crashes on corrupted frag_list
Root cause in skb_segment(): The check at line ~4891: if (hsize <= 0 && i >= nfrags && skb_headlen(list_skb) && (skb_headlen(list_skb) == len || sg)) {
When frag_list is corrupted by double aggregation, when list_skb is a NULL pointer from skb->next, skb_headlen(list_skb) dereference NULL/corrupted pointers occurs.
Call Trace: skb_headlen(NULL skb) skb_segment tcp_gso_segment tcp4_gso_segment inet_gso_segment skb_mac_gso_segment __skb_gso_segment skb_gso_segment validate_xmit_skb validate_xmit_skb_list sch_direct_xmit qdisc_restart __qdisc_run qdisc_run net_tx_action
Fix: Add NAPI_GRO_CB(skb)->flush validation to the early-return check in skb_gro_receive_list(), matching the defensive programming pattern of skb_gro_receive().
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_2023 | — | Upgrade kernel-livepatch-6.12.103-127.188Upgrade perf6.18Upgrade bpftool6.12Upgrade perf6.12Upgrade kernel6.12-headersUpgrade kernel6.18-tools-develUpgrade kernel6.18-debuginfoUpgrade bpftool6.18Upgrade kernel6.18-debuginfo-common-x86_64Upgrade bpftool6.12-debuginfoUpgrade kernel6.12-tools-debuginfoUpgrade kernel6.18-debuginfo-common-aarch64Upgrade kernel6.18-develUpgrade python3-perf6.18Upgrade bpftool6.18-debuginfoUpgrade kernel6.18-tools-debuginfoUpgrade python3-perf6.18-debuginfoUpgrade kernel6.18-modules-extra-commonUpgrade kernel6.18-headersUpgrade python3-perf6.12Upgrade kernel6.12-debuginfo-common-aarch64Upgrade kernel-livepatch-6.18.44-99.149Upgrade kernel6.12-toolsUpgrade kernel6.12-modules-extra-commonUpgrade kernel6.12-tools-develUpgrade kernel6.12-modules-extraUpgrade kernel6.18-modules-extraUpgrade perf6.18-debuginfoUpgrade microvm-kernel6.18Upgrade perf6.12-debuginfoUpgrade kernel6.12-develUpgrade kernel6.18Upgrade kernel6.18-toolsUpgrade kernel6.12-debuginfo-common-x86_64Upgrade kernel6.12Upgrade kernel6.12-debuginfoUpgrade python3-perf6.12-debuginfo | Sep 1, 2026 | Aug 10, 2026 |
| Debian | — | Upgrade linuxUpgrade linux-6.12 | Aug 11, 2026 | Aug 11, 2026 |
| Redhat_linux | — | No solution exists | Aug 13, 2026 | Aug 10, 2026 |
| Ubuntu | — | Upgrade linux-image-6.8.0-1035-nvidia-tegraUpgrade linux-image-nvidia-tegra-rtUpgrade linux-image-nvidia-tegra-6.8No solution existsUpgrade linux-image-6.8.0-1035-nvidia-tegra-rtUpgrade linux-image-nvidia-tegra-rt-6.8Upgrade linux-image-nvidia-tegra | Sep 21, 2026 | Sep 18, 2026 |
| Vmware Photon_os | — | Use 'tdnf update' to upgrade all packages to the latest version. | Aug 17, 2026 | Aug 10, 2026 |
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