Description
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.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
Linux Linux
Default version status: unaffected
07afe1ba288c04280622fa002ed385f1ac0b6fe6 to < da1f5aa7ec93f2cc17f5cd30efc54f62af433cf2affected07afe1ba288c04280622fa002ed385f1ac0b6fe6 to < 916ec741e65af072b98e475feaad98c063da1b7caffected07afe1ba288c04280622fa002ed385f1ac0b6fe6 to < 1b466746fe109127fd983100a228cdd1f1f6ece2affected07afe1ba288c04280622fa002ed385f1ac0b6fe6 to < 2b46baa591d0a7c16b62f150917187e70d053be6affected07afe1ba288c04280622fa002ed385f1ac0b6fe6 to < f12c2de4f542e3220e17e0606f492110064f04cbaffected
Linux Linux
Default version status: affected
6.8affected0 to < 6.8unaffected6.12.108 to ≤ 6.12.*unaffected6.18.49 to ≤ 6.18.*unaffected7.1.13 to ≤ 7.1.*unaffected7.2.3 to ≤ 7.2.*unaffected7.3 to ≤ *unaffected
References
- https://git.kernel.org/stable/c/da1f5aa7ec93f2cc17f5cd30efc54f62af433cf2 ↗
- https://git.kernel.org/stable/c/916ec741e65af072b98e475feaad98c063da1b7c ↗
- https://git.kernel.org/stable/c/1b466746fe109127fd983100a228cdd1f1f6ece2 ↗
- https://git.kernel.org/stable/c/2b46baa591d0a7c16b62f150917187e70d053be6 ↗
- https://git.kernel.org/stable/c/f12c2de4f542e3220e17e0606f492110064f04cb ↗