CVE Catalog

CVE-2026-80839

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel's batman-adv module, there is an out-of-bounds read vulnerability. The batadv_tvlv_call_handler() function sets the network_header and transport_header fields in the sk_buff structure based on a received multicast TVLV, without checking whether the end offset is representable in a 16-bit field. If the offset exceeds the range, skb_set_transport_header() truncates it, causing the transport header to precede the network header, and skb_network_header_len() returns a large u32 value. The batadv_mcast_forw_packet() function then accepts an oversized multicast tracker and accesses memory beyond the skb data. The fix adds the skb_set_transport_header_careful() function and rejects unrepresentable TVLVs.

Risk Assessment

An attacker in a mesh network (batman-adv) can send a specially crafted multicast packet, potentially leading to kernel memory disclosure or system crash.

Recommendation

Install the Linux kernel update containing the fix for batman-adv. Limit trust in mesh network nodes.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: batman-adv: reject unrepresentable multicast TVLV offsets The network and transport header fields in struct sk_buff are 16-bit offsets from skb->head, and U16_MAX is reserved as the unset transport header value. batadv_tvlv_call_handler() sets both fields from a received multicast TVLV without checking whether the TVLV end is representable. If the end offset exceeds the field's range, skb_set_transport_header() truncates it so that the transport header precedes the network header. The negative difference is then returned by skb_network_header_len() as a large u32. batadv_mcast_forw_packet() consequently accepts an oversized multicast tracker and accesses memory beyond the skb data. Add skb_set_transport_header_careful(), an offset-aware counterpart to skb_reset_transport_header_careful(), which validates the final head-relative offset before assigning it. Use the new helper in batadv_tvlv_call_handler() and reject unrepresentable TVLVs before setting the network header.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS