HIGH Introduced in 6.17
dsa LegacyFcs OOB
CVE-2026-97614
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: net: dsa: tag_brcm: legacy FCS: request needed tailroom The legacy FCS tagger calculates the CRC over skb->len bytes starting at skb->data. When a nonlinear skb reaches the tagger, this reads past the linear head into unrelated slab memory. The tagger appends an Ethernet FCS but does not declare that tailroom. As a result, DSA leaves NETIF_F_SG and NETIF_F_FRAGLIST enabled on the user port, and nonlinear skbs can reach the CRC calculation. Declare the required tailroom. DSA will then clear those features and the networking core will linearize skbs before the tagger runs. A KASAN-enabled dsa_loop test using this tagger reports: BUG: KASAN: slab-out-of-bounds in crc32_le Read of size 1 at addr ffff8880397086c0 by task exp/135 Call Trace: crc32_le (lib/crc/crc32-main.c:38) brcm_leg_fcs_tag_xmit (net/dsa/tag_brcm.c:343) dsa_user_xmit (net/dsa/user.c:942) dev_hard_start_xmit (net/core/dev.c:3937) __dev_queue_xmit (net/core/dev.c:4926) packet_sendmsg (net/packet/af_packet.c:3110) __sys_sendto (net/socket.c:2281) The buggy address belongs to the object at ffff888039708400 which belongs to the cache skbuff_small_head of size 704 The buggy address is located 0 bytes to the right of allocated 704-byte region [ffff888039708400, ffff8880397086c0)
02KernelScan AI Analysis
Risk summary
Systems using Broadcom DSA switches configured with the legacy FCS tag protocol are vulnerable to an out-of-bounds slab read in the packet transmit path. A local unprivileged user can trigger this by sending network traffic through the DSA user port, potentially leaking kernel heap data or causing a kernel crash. The vulnerability requires a Broadcom switch (BCM5325/BCM5365) using the legacy FCS tag mode.
Vulnerability analysis
The Broadcom legacy FCS DSA tagger computes an Ethernet checksum over the entire packet length, but when a packet is split across multiple fragments (a nonlinear skb), the calculation reads past the end of the linear buffer into adjacent kernel slab memory. This happens because the tagger does not declare the tailroom it needs, so the networking stack leaves scatter-gather enabled on the port and allows fragmented packets to reach the tagger without linearization. The fix declares the required tailroom, which causes DSA to disable scatter-gather features so the networking core linearizes packets before the tagger processes them. Any local process on a system with a Broadcom DSA switch using the legacy FCS tag mode can trigger this by sending traffic through the DSA user port; no special privileges are required beyond a normal user account.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.18 | 6.17 | 6.18.53 | 709451db123d |
| 7.2 | 6.17 | 7.2.7 | 3eb5c7e1c154 |
| mainline | 6.17 | 7.3 | 5be081b83abd |