Katalog CVE

CVE-2026-80839

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linuxa w module batman-adv występuje podatność na odczyt poza zakresem pamięci. Funkcja batadv_tvlv_call_handler() ustawia pola network_header i transport_header w strukturze sk_buff na podstawie odebranego multicast TVLV, bez sprawdzenia, czy końcowy offset jest reprezentowalny w 16-bitowym polu. Jeśli offset przekracza zakres, skb_set_transport_header() obcina go, co powoduje, że nagłówek transportowy znajduje się przed nagłówkiem sieciowym, a skb_network_header_len() zwraca dużą wartość u32. Funkcja batadv_mcast_forw_packet() akceptuje wtedy zbyt duży multicast tracker i uzyskuje dostęp do pamięci poza danymi skb. Poprawka dodaje funkcję skb_set_transport_header_careful() i odrzuca niereprezentowalne TVLV.

Ocena ryzyka

Atakujący w sieci mesh (batman-adv) może wysłać specjalnie spreparowany pakiet multicast, co może prowadzić do ujawnienia pamięci jądra lub awarii systemu.

Rekomendacja

Zainstaluj aktualizację jądra Linux zawierającą poprawkę dla batman-adv. Ogranicz zaufanie do węzłów sieci mesh.

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS