CyberRota Analysis
AI-GeneratedThe vulnerability affects the Linux kernel's handling of VXLAN packets, specifically in the route_shortcircuit() function, which improperly checks the availability of network header data. This oversight can lead to potential out-of-bounds memory access when dereferencing IP header fields, posing a risk of data corruption or system instability. System administrators and developers utilizing affected Linux kernel versions should prioritize applying the fix to mitigate these risks.
Original NVD Description
In the Linux kernel, the following vulnerability has been resolved: vxlan: use pskb_network_may_pull() in route_shortcircuit() route_shortcircuit() currently calls pskb_may_pull(skb, sizeof(struct iphdr)) (or ipv6hdr), which checks if bytes are available starting from skb->data. However, in vxlan_xmit(), skb->data points to the MAC header, so skb_network_offset(skb) is ETH_HLEN (14 bytes). Using pskb_may_pull(skb, 20) only checks 20 bytes from skb->data (which is 14 bytes MAC header + 6 bytes of IP header), leaving the rest of the IP header potentially un-pulled in non-linear frags. Subsequent dereferences of ip_hdr(skb)->daddr can read beyond the pulled linear buffer length. Fix this by using pskb_network_may_pull(), which adds skb_network_offset(skb) to the length check to ensure the full network header is present in the linear buffer.