CVE-2026-19673
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
ethernet_recv() w subsys/net/l2/ethernet/ethernet.c sprawdza tylko, czy pierwszy net_buf odebranej ramki zawiera zwykłą 14-bajtową strukturę net_eth_hdr. Gdy typ eteru to 0x8100, a na interfejsie włączona jest sieć VLAN, ten sam bufor jest ponownie interpretowany jako 18-bajtowa struktura net_eth_vlan_hdr bez ponownego sprawdzania długości: TCI sieci VLAN i wewnętrzny typ eteru są odczytywane z przesunięć 14..17, za punktem->buffer->len, a hdr_len jest podnoszony do 18, więc kolejna funkcja net_buf_pull() usuwa więcej bajtów niż bufor trzyma.
Wyzwala to pojedyncza nieuwierzytelniona ramka o długości od 14 do 17 bajtów, zawierająca typ eterowy sieci VLAN. Nie jest wymagana znajomość konfiguracji sieci VLAN węzła: net_eth_get_vlan_iface() zwraca podstawowy interfejs dla znacznika priorytetu 0, a adres docelowy emisji spełnia test „ramka jest dla mnie”, więc 16-bajtowa ramka rozgłoszeniowa z typem eteru 0x8100 i TCI 0x0000 dociera do ściągania. Nic w ścieżce odbiorczej nie wymusza 60-bajtowego minimum Ethernet — klasy gadżetów USB CDC ECM i CDC NCM w szczególności przekazują dostarczane przez hosta ramki o dowolnej niezerowej długości bezpośrednio do funkcji net_recv_data().
Po włączeniu asercji funkcja net_buf_simple_pull() potwierdza, a węzeł wpada w panikę. W wersji produkcyjnej (asercje i wyłączenie CONFIG_NET_BUF_HARDENING) długość bufora uint16_t jest mniejsza niż 65534, a buf->data jest przesuwana poza koniec pamięci fragmentu, więc każdy późniejszy parser czyta daleko poza buforem i dowolna funkcja net_buf_add() na tym fragmencie oblicza przestrzeń końcową na podstawie niedopełnionej długości. Rezultatem jest niezawodna zdalna odmowa usługi i dostęp poza granicami, co może skutkować ujawnieniem informacji i korupcją.
Dotyczy to tylko konfiguracji zbudowanych z ustawieniem CONFIG_NET_VLAN=y, które mają włączoną sieć VLAN na odbiorczym interfejsie Ethernet i których adres MAC nie usuwa sprzętowo znaczników VLAN (ETHERNET_HW_VLAN_TAG_STRIP). Poprawka odrzuca ramkę przed odczytaniem znacznika, więc hdr_len ma następnie wartość 14 lub 18, przy czym oba rozmiary są sprawdzane względem pkt->buffer->len.
>_ Słabości (CWE)
>_ Referencje
Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.
This product uses the NVD API but is not endorsed or certified by the NVD.
Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.
CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org