Wysoki Odebrany

CVE-2026-19577

opublikowano:
modyfikacja:
Ocena CVSS
7.1
Wysoki · v3.1
wektor: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:H

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

net_route_ipv6_packet() w subsys/net/ip/route_ipv6.c rozwiązała adres warstwy łącza następnego przeskoku za pomocą net_nbr_get_lladdr(nbr->idx) bez uprzedniego sprawdzenia, czy wpis pamięci podręcznej sąsiada rzeczywiście ma połączony adres warstwy łącza. Nierozwiązany sąsiad przenosi idx == NET_NBR_LLADDR_UNKNOWN (0xff) i net_nbr_get_lladdr() w subsys/net/ip/nbr.c nie sprawdza granic czasu wykonywania poza NET_ASSERT, zwracając &net_neighbor_lladdr[255] — około 2,5 KB za końcem tablicy, której domyślny rozmiar to CONFIG_NET_IPV6_MAX_NEIGHBORS (8). Ponieważ zwrócony wskaźnik nigdy nie ma wartości NULL, następujący strażnik lladdr == NULL go nie przechwytuje.

Funkcja jest osiągalna z ipv6_route_packet() w subsys/net/ip/ipv6.c dla każdego odebranego pakietu IPv6 emisji pojedynczej, którego miejscem docelowym nie jest adres lokalny w interfejsie odbierającym; CONFIG_NET_IPV6_ROUTE jest domyślnie włączona zawsze, gdy jest włączona pamięć podręczna sąsiada IPv6, więc nie jest wymagana żadna konfiguracja routera ani przekazywania. net_route_ipv6_get_info() zwraca samo miejsce docelowe pakietu jako następny skok, jeśli istnieje dla niego wpis w pamięci podręcznej sąsiada, a przeszukiwanie pamięci podręcznej nie pomija NIEKOMPLETNYCH wpisów. Nieuwierzytelniony atakujący na tym samym łączu może zatem wymusić stan nierozwiązany — na przykład wywołując ruch do fałszywego, nieistniejącego adresu sąsiada, tak że funkcja net_ipv6_send_ns() tworzy NIEKOMPLETNY wpis, lub wysyłając ogłoszenie routera bez opcji adresu źródłowego warstwy łącza, co tworzy trwale nierozwiązanego sąsiada routera — a następnie wysłać pakiet zaadresowany do tego sąsiada.

Rezultatem jest odczyt spoza zakresu przy stałym indeksie za sąsiednią tablicą adresów warstwy łącza. W kompilacjach z włączoną opcją CONFIG_ASSERT uruchamia się potwierdzenie, a urządzenie wpada w panikę, powodując powtarzalną zdalną odmowę usługi. Po wyłączeniu asercji przestarzała struktura net_linkaddr poza granicami steruje funkcją memcmp() na długość, na którą atakujący nie ma wpływu, a gdy jej bajt len ​​przejdzie kontrolę NET_LINK_ADDR_MAX_LENGTH, do 8 bajtów niepowiązanej statycznej pamięci RAM jest kopiowanych na docelowy adres warstwy łącza ramki wychodzącej i przesyłane łączem, ujawniając je dowolnemu słuchaczowi. Nie ma zapisu poza zakresem, a przesunięcie nie jest kontrolowane przez osobę atakującą, co ogranicza wpływ.

>_ 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