CVE-2026-74667

net/packet: reset the MAC header on the packet-socket transmit path

State
Published
Severity
7.8 High
Published
Aug 22, 2026
Updated
Oct 16, 2026
Reserved
Aug 15, 2026

Read the record on cve.org

Description

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

net/packet: reset the MAC header on the packet-socket transmit path

packet_parse_headers() resets the MAC header only for a SOCK_RAW frame whose socket did not bind a protocol. A protocol-bound SOCK_RAW socket, any SOCK_DGRAM frame, and the legacy SOCK_PACKET path therefore leave skb->mac_header unset here.

For frames sent via __dev_queue_xmit() this is harmless: it resets the MAC header unconditionally. But the packet-socket PACKET_QDISC_BYPASS path uses dev_direct_xmit(), which does not, so the frame reaches ndo_start_xmit() with the MAC header unset. A driver that reads eth_hdr(skb) on transmit then dereferences skb->head + (u16)~0, an out-of-bounds access ~64 KiB past the head -- the same class fixed for one consumer in commit f5089008f90c ("macsec: do not read an unset MAC header in macsec_encrypt()").

packet_parse_headers() runs only on the transmit path, where skb->data points at the start of the L2 header for every packet-socket type regardless of its length: SOCK_RAW and SOCK_PACKET carry a user-supplied header and SOCK_DGRAM has one built by dev_hard_header(). Reset the MAC header unconditionally, mirroring __dev_queue_xmit(), so the frame is anchored on the bypass path too.

Found by 0sec (https://0sec.ai) using automated source analysis; verified against source and matched to the macsec KASAN report in f5089008f90c. Compile-tested.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before 1e43a1d66615f411d427f9df1f46dd049d9e3681Affected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before 4057853a91fb796c4f47c7d1baf1aa085394148eAffected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before 2610ed4e86a4590234a9d70518c469751c5af231Affected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before b47ba8fe6e1d2df8c92048de5afafd059447dc30Affected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before 284f3e7a3f1a743fdf89e304fd1f19d5ffcff46dAffected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before 971aa7d99242bbf09513e27b7a243f0b29ff23aeAffected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before fdd4d7d52358a58e351dd9d82530c04eba8ccd7aAffected
  • 75c65772c3d18447d62d3aca5f91b06c16cc25e4 to before c2707480cfbf19c7619acc9c089d17f20869821fAffected
LinuxLinux
  • 5.1Affected
  • before 5.1Not affected
  • 5.10.265 through 5.10.*Not affected
  • 5.15.216 through 5.15.*Not affected
  • 6.1.183 through 6.1.*Not affected
  • 6.6.152 through 6.6.*Not affected
  • 6.12.104 through 6.12.*Not affected
  • 6.18.45 through 6.18.*Not affected
  • 7.1.9 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.