Katalog CVE

CVE-2026-80925

Nieznane
Opublikowano: Przetłumaczono: NVD NIST

Streszczenie

W jądrze Linuxa wykryto podatność w mechanizmie VLAN, polegającą na dynamicznej zmianie pola hard_header_len podczas przełączania sprzętowego odciążania VLAN TX. Powoduje to wyścig danych w ścieżkach transmisji bez blokady RTNL, co może prowadzić do błędu skb_under_panic oraz niezgodności między zarezerwowaną przestrzenią nagłówka a faktycznym tworzeniem nagłówka.

Ocena ryzyka

Ryzyko obejmuje awarię systemu (panic) podczas wysyłania pakietów przez interfejsy VLAN, co może prowadzić do przerw w działaniu usług sieciowych. Ponadto wyścig danych może umożliwić nieprzewidziane zachowanie stosu sieciowego, potencjalnie ułatwiając ataki DoS.

Rekomendacja

Zaleca się natychmiastowe zaktualizowanie jądra Linux do wersji zawierającej poprawkę, która ustawia hard_header_len i needed_headroom w sposób statyczny. Należy również zastosować wymienione backporty (e16e960d55a4, cef51860becd) w stabilnych gałęziach jądra.

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: vlan: fix skb_under_panic and races when toggling HW VLAN offload Toggling hardware VLAN TX offload (NETIF_F_HW_VLAN_CTAG_TX or NETIF_F_HW_VLAN_STAG_TX) on a lower device invokes vlan_transfer_features(), which dynamically changed vlandev->hard_header_len. This causes two issues: 1. Lockless TX paths (e.g. packet_snd in af_packet.c, ip6_finish_output2) read dev->hard_header_len without holding RTNL lock. Mutating hard_header_len dynamically under RTNL creates a data race where upper layers reserve insufficient headroom based on a stale hard_header_len, resulting in skb_under_panic when vlan_dev_hard_header() is called. 2. In addition, vlan_transfer_features() updated hard_header_len without updating header_ops, causing a mismatch between allocated headroom and header creation. Always setting dev->hard_header_len = real_dev->hard_header_len and dev->needed_headroom = real_dev->needed_headroom + VLAN_HLEN unconditionally ensures: - dev->hard_header_len remains 100% static and immutable at real_dev->hard_header_len, eliminating all dynamic runtime updates and data races on hard_header_len. - Upper layers allocating skbs via LL_RESERVED_SPACE() will always reserve sufficient headroom for software VLAN tag insertion (real_dev->hard_header_len + real_dev->needed_headroom + VLAN_HLEN). - vlandev inherits real_dev->needed_tailroom so underlying trailer/padding/ICV requirements are honored. - AF_PACKET SOCK_RAW network header offsets remain correctly aligned at real_dev->hard_header_len. - vlan_header_ops is used unconditionally. Note to stable teams: Make sure to backport these commits: e16e960d55a4 ("ipvlan: inherit needed_headroom and needed_tailroom from phy_dev") cef51860becd ("macvlan: inherit needed_headroom and needed_tailroom from lowerdev")

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