Niski Odebrany

CVE-2026-18416

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

>_ Opis

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

Pomocnik formatu łącza CoAP match_path_uri() w subsys/net/lib/coap/coap_link_format.c porównuje zarejestrowaną ścieżkę zasobu z identyfikatorem URI przenoszonym w opcji Uri-Query href=. Ten identyfikator URI nie jest zakończony NUL, ale wewnętrzna pętla znakowa zwiększa swój indeks k raz na znak ścieżki, nigdy nie testując go pod kątem długości opcji len. Kiedy zarejestrowany segment ścieżki jest dłuższy niż podany URI i URI jest jego przedrostkiem, pętla odczytuje wartość uri[len] i dalej, poza końcem wartości opcji.

Ścieżka jest osiągana z coap_well_known_core_get_len() i coap_well_known_core_get() poprzez match_queries_resource(), czyli przez dowolne nieuwierzytelnione żądanie GET /.well-known/core?href=/<prefix> do urządzenia obsługującego /.well-known/core (dla podsystemu serwera CoAP, CONFIG_COAP_SERVER_WELL_KNOWN_CORE, domyślnie y) i ma co najmniej jeden zasób, który deklaruje atrybuty struktury coap_core_metadata.

Nadczytanie nie dociera do bufora odbiorczego. Dobrze znani twórcy rdzenia analizują zapytanie do lokalnej struktury stosu coap_option, której wartością jest stała tablica (wartość [12] lub bajty CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE), do której kopiowane są bajty opcji, więc uri wskazuje na tę kopię. Dlatego odczytanie przeszłości len powoduje odczytanie nieużywanego, niezainicjowanego końca tablicy, a gdy opcja go zapełni, bajty znajdujące się tuż za nim w tej samej ramce stosu. (W bibliotece ZoAP w wersjach od 1.8.0 do 1.9.x wartość opcji była zamiast tego wskaźnikiem do odebranego pakietu, a nadmierny odczyt przekroczył opcję w buforze pakietu.)

Wpływ jest ograniczony. Liczba bajtów odczytanych za końcem jest ograniczona długością segmentu ścieżki zasobu, a każdy dodatkowy bajt jest odczytywany tylko wtedy, gdy jest równy następnemu znakowi ścieżki, więc w praktyce nadmierny odczyt wynosi jeden bajt. Nie może to również wpłynąć na odpowiedź: zwrócenie dopasowania wymaga, aby końcowy porównywany indeks miał wartość len - 1 lub len, oba w granicach, więc bajty spoza zakresu kierują pętlę tylko do następnego kandydującego zasobu. Konsekwencją jest niezdefiniowane zachowanie, a nie ujawnienie informacji i błąd dopasowania.

Poprawka dodaje osłonę k >= len na górze wewnętrznej pętli, więc każde wyłuskanie uri[k] mieści się w wartości opcji, jednocześnie umożliwiając końcowemu * symbolowi wieloznacznemu dopasowanie dłuższej ścieżki.

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