Średni Odebrany

CVE-2026-18415

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

>_ Opis

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

ieee802154_send() w subsys/net/l2/ieee802154/ieee802154.c kopiuje wychodzący pakiet do pojedynczego stałego 125-bajtowego bufora transmisji (tx_frame_buf_pool, rozmiar IEEE802154_MTU). W kompilacjach z włączoną opcją CONFIG_NET_L2_IEEE802154_FRAGMENT (wartość domyślna, gdy ustawiono CONFIG_NET_6LO), gałąź wykonana, gdy fragmentacja 6LoWPAN nie jest wymagana, wykonywała niesprawdzoną funkcję net_buf_add_mem(frame_buf, pkt_buf->data, pkt_buf->len). Jedynym strażnikiem był __ASSERT_NO_MSG() wewnątrz funkcji net_buf_simple_add(), która jest kompilowana bez CONFIG_ASSERT, więc zbyt duży pakiet po cichu przekroczył bufor ramki.

Wada nie jest osiągalna z radia: dla pakietów NET_AF_INET6 ieee802154_6lo_encode_pkt() porównuje długość całego pakietu z IEEE802154_MTU i wybiera ścieżkę fragmentacji, gdy nie pasuje, więc każdy bufor skopiowany na niefragmentowaną gałąź mieści się w granicach. Jest osiągalny poprzez gniazda NET_AF_PACKET powiązane z interfejsem 802.15.4: w przypadku NET_SOCK_RAW blok 6LoWPAN jest całkowicie pomijany, a w przypadku NET_SOCK_DGRAM powraca wcześniej w teście rodziny adresów, nie pozostawiając żadnego sprawdzania długości w żadnym miejscu ścieżki transmisji (net_context_sendto() i net_if_tx() nie mają żadnego zastosowania, a opcja pkt_buffer_length() nie ma zastosowania zamknij przydział dla tego L2).

Aplikacja — lub w kompilacji CONFIG_USERSPACE nieuprzywilejowany wątek aplikacji korzystający z wywołań systemowych zsock_socket()/zsock_sendto() — może zatem w trybie nadzorcy przeprowadzić zapis wybranych bajtów poza 125-bajtowym buforem puli. Przy domyślnej CONFIG_NET_BUF_FIXED_DATA_SIZE wynoszącej 128 bajtów przekroczenie jest ograniczone do mniej więcej ll_hdr_len + 3 bajty; przy CONFIG_NET_BUF_VARIABLE_DATA_SIZE pojedynczy bufor pamięci może być tak duży jak CONFIG_NET_PKT_BUF_TX_DATA_POOL_SIZE, co powoduje, że przepełnienie jest znacznie większe. Konsekwencją jest uszkodzenie pamięci sąsiadującej z pulą, z awarią lub dalszym naruszeniem stanu jądra jako praktyczny skutek.

Poprawka sprawdza poprawność ll_hdr_len + net_pkt_get_len(pkt) + authtag_len względem IEEE802154_MTU przed jakąkolwiek kopią i dodaje pomocnika copy_pkt_to_frame() sprawdzającego zaplecze, który zwraca -EMSGSIZE zamiast przepełnienia bufora. Ta sama zmiana linearyzuje także cały łańcuch net_buf do jednej ramki MAC, więc granice przechowywania pakietów nie stają się już granicami ramek w sieci.

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