CVE-2026-16512
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Funkcja gptp_handle_msg() w subsys/net/l2/ethernet/gptp/gptp.c wyłuskała nagłówek gPTP zwrócony przez GPTP_HDR() i włączyła hdr->message_type bez uprzedniego sprawdzenia, czy odebrana ramka zawiera co najmniej sizeof(struct gptp_hdr) (34) bajtów ładunku. Metoda dostępu nagłówka gptp_get_hdr() celowo nigdy nie zawodzi w przypadku krótkiego bufora — zwraca pkt->frags->data i pozostawia weryfikację swoim obiektom wywołującym — zatem obcięta ramka utworzyła wskaźnik nagłówka obejmujący pamięć poza odebranymi danymi. Poniższe sprawdzenia typu wiadomości nie kompensują: GPTP_VALID_LEN() zmniejsza się do len > 60 po pobraniu nagłówka Ethernet, co jest fałszywe w przypadku każdej wiadomości gPTP o stałym rozmiarze, więc GPTP_CHECK_LEN() nigdy nie odrzuca obciętego komunikatu SYNC, FOLLOWUP, PDELAY_RESP lub SIGNALING.
Wada zostaje osiągnięta przez nieuwierzytelnionego partnera na tym samym łączu, wysyłającego ramkę Ethernet o typie eteru 0x88F7 na adres multiemisji PTP na interfejsie skonfigurowanym jako port gPTP z włączoną opcją CONFIG_NET_GPTP. Ponieważ zgodne z Ethernetem ramki są przesyłane do 60 bajtów, ładunek krótszy niż 34 bajty zazwyczaj wymaga łącza, które może dostarczać ramki poniżej minimalnej — na przykład sterownik native_sim TAP (drivers/ethernet/eth_native_tap.c), który przekazuje dalej dowolną długość dostarczaną przez urządzenie hosta, lub adres MAC skonfigurowany do akceptowania niewymiarowych ramek.
Krótki pakiet jest zachowywany (net_pkt_ref() w rcvd_sync_ptr, rcvd_follow_up_ptr, rcvd_pdelay_resp_ptr lub rcvd_announce_ptr), a później analizowany przez maszyny stanu zależne i niezależne od mediów w subsys/net/l2/ethernet/gptp/gptp_md.c i subsys/net/l2/ethernet/gptp/gptp_mi.c, który odczytuje dziesiątki dalszych bajtów i kopiuje część z nich (wektor priorytetu ogłaszania, hdr->port_id) do stanu, który jest następnie przesyłany. W ramach domyślnego alokatora buforów o stałym rozmiarze (CONFIG_NET_BUF_FIXED_DATA_SIZE, fragmenty 128-bajtowe) dostępy pozostają wewnątrz przydzielonego fragmentu i ujawniają nieaktualną zawartość odzyskanego bufora; w ramach eksperymentalnego alokatora CONFIG_NET_BUF_VARIABLE_DATA_SIZE, w którym fragmenty są przydzielane na stercie dokładnie na taką samą długość ramki, są to rzeczywiste odczyty spoza zakresu. Nie ma zapisu ani wpływu na dostępność.
>_ 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