CVE-2026-18747
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
Transport MCUmgr SMP przez konsolę dekoduje ramkę base64, odczytuje z niej 16-bitowy pakiet, weryfikuje CRC, a następnie bezwarunkowo usuwa końcowy CRC za pomocą rx_ctxt->nb->len -= 2U; w mcumgr_serial_process_frag() (subsys/mgmt/mcumgr/transport/src/serial_util.c). Funkcja mcumgr_serial_extract_len() akceptuje dowolną zadeklarowaną długość, łącznie z 0 i 1, a pakiet deklarujący długość 0 przechodzi test sumy kontrolnej za darmo, ponieważ funkcja crc16_itu_t() powyżej zerowych bajtów zwraca zerowy materiał siewny. Ponieważ net_buf::len jest uint16_t, odejmowanie jest niewystarczające i bufor jest przekazywany do SMP, żądając około 65 KB ładunku, podczas gdy jego obszar danych to tylko CONFIG_MCUMGR_TRANSPORT_NETBUF_SIZE bajtów (domyślnie 384).
Wyzwalaczem jest pojedyncza nieuwierzytelniona 7-bajtowa linia w konsoli zarządzania — znacznik pakietu 0x06 0x09, po którym następuje grupa base64 AAA= i nowa linia — dostarczana do dowolnego transportu zbudowanego na tym pomocniku: CONFIG_MCUMGR_TRANSPORT_UART (smp_uart.c) lub CONFIG_MCUMGR_TRANSPORT_SHELL (smp_shell.c), oba wybierają MCUMGR_TRANSPORT_SERIAL_HAS_SMP_OVER_CONSOLE. Do wywołania niedomiaru nie jest wymagany żaden wcześniejszy stan sesji, fragmentacja ani poświadczenia, a zniekształcona ramka jest nieprawidłowo obsługiwana przed uruchomieniem jakiejkolwiek procedury obsługi poleceń lub kontroli dostępu na poziomie poleceń. Osoba atakująca potrzebuje jedynie dostępu do zapisu do tej konsoli, która na wielu płytach jest portem USB CDC-ACM, a nie gołym nagłówkiem UART.
Przy zawyżonej długości funkcja smp_process_request_packet() w subsys/mgmt/mcumgr/smp/src/smp.c traci swoje powiązanie: cbor_nb_reader_init() daje dekoderowi CBOR okno ~65 KB w 384-bajtowym buforze, a nh_len każdego nagłówka żądania jest sprawdzany tylko pod kątem zawyżonej długości. Sama 7-bajtowa ramka ponownie analizuje wszystkie nieaktualne bajty, które nadal przechowuje ponownie używany bufor puli, zazwyczaj jest to powtórka poprzednio otrzymanego żądania, po którym następuje błąd analizy, bez opuszczania bufora. Ponieważ jednak transport nie jest uwierzytelniony, osoba atakująca kontroluje również ramki wysłane przed wyzwalaczem i może przygotować zawartość bufora tak, aby żądanie zakończyło się pomyślnie z nh_len większym niż bufor; net_buf_pull(), strzeżona jedynie przez __ASSERT_NO_MSG, następnie przesuwa kursor analizy poza zakres i pętla odczytuje dalsze nagłówki i CBOR z sąsiedniej pamięci. Konsekwencją jest odczyt spoza zakresu, który może spowodować błąd wątku MCUmgr (odmowa usługi). ujawnienie pamięci jest również możliwe, ponieważ domyślnie włączona procedura obsługi echa systemu operacyjnego (CONFIG_MCUMGR_GRP_OS_ECHO) dekoduje swój ciąg znaków w tym oknie i kopiuje go do swojej odpowiedzi. Nie ma żadnej poprawy integralności wykraczającej poza to, na co pozwala już nieuwierzytelniony transport.
Poprawka odrzuca każdą zadeklarowaną długość pakietu wynoszącą dwa bajty lub mniej w mcumgr_serial_extract_len(), więc odejmowanie paska CRC nie może już przekraczać wartości. Identyczny wzorzec pozostaje w przeznaczonym tylko do testowania transporcie zwrotnym subsys/mgmt/mcumgr/transport/src/smp_dummy.c (CONFIG_MCUMGR_TRANSPORT_DUMMY), który nie ma zewnętrznej ścieżki wejściowej i dlatego nie ma praktycznego narażenia.
>_ 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