CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's handling of packet transmission, specifically in the `packet_snd()` and `packet_sendmsg_spkt()` functions, where inconsistent reads of `dev->hard_header_len` can lead to out-of-bounds writes during socket operations. This flaw could allow an attacker to exploit memory corruption, potentially leading to denial of service or arbitrary code execution. Organizations using Linux-based systems, particularly those relying on raw socket communications, should prioritize addressing this vulnerability to mitigate associated risks.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: packet: use consistent hard_header_len in non-ring send paths packet_snd() reads dev->hard_header_len multiple times while allocating and constructing an skb. Device reconfiguration can change this value concurrently, for example through bonding device type changes. For SOCK_RAW, packet_snd() can save a larger value in reserve and later allocate headroom using a smaller value. Moving skb->data back by reserve then places it before skb->head, and the following copy from userspace can attempt an out-of-bounds write. packet_sendmsg_spkt() has the same issue because it calculates its reservation and header offset from separate reads before dropping the RCU read lock to allocate the skb. Add LL_RESERVED_SPACE_EX() for callers that already saved a header length. Read hard_header_len once in packet_snd() and use it for allocation and construction. In packet_sendmsg_spkt(), preserve the allocation-time value through the device lookup retry. The separate SOCK_DGRAM consistency problem between hard_header_len and header_ops->create is not addressed here.