W bibliotece CoAP systemu Arm Mbed OS 5.15.3 odkryto błędy typu buffer over-read (CWE-125), umożliwiające odczyt danych spoza przeznaczonego obszaru pamięci. Podatność jest krytyczna, ponieważ może być wykorzystana zdalnie bez uwierzytelnienia i prowadzi do ujawnienia danych z pamięci lub naruszenia stabilności systemu.
▸ Pokaż oryginał (EN)
Buffer over-reads were discovered in the CoAP library in Arm Mbed OS 5.15.3. The CoAP parser is responsible for parsing received CoAP packets. The function sn_coap_parser_options_parse() parses CoAP input linearly using a while loop. Once an option is parsed in a loop, the current point (*packet_data_pptr) is increased correspondingly. The pointer is restricted by the size of the received buffer, as well as by the option delta and option length bytes. The actual input packet length is not verified against the number of bytes read when processing the option extended delta and the option extended length. Moreover, the calculation of the message_left variable, in the case of non-extended option deltas, is incorrect and indicates more data left for processing than provided in the function input. All of these lead to heap-based or stack-based memory location read access that is outside of the intended boundary of the buffer. Depending on the platform-specific memory management mechanisms, it can lead to processing of unintended inputs or system memory access violation errors.
Funkcja sn_coap_parser_options_parse() przetwarza przychodzące pakiety CoAP w pętli while, przesuwając wskaźnik bieżącej pozycji w buforze po każdej sparsowanej opcji. Rzeczywista długość pakietu wejściowego nie jest weryfikowana względem liczby faktycznie odczytanych bajtów podczas przetwarzania rozszerzonych pól delta i długości opcji. Dodatkowo, w przypadku nierozszerzonych wartości delta opcji, obliczanie zmiennej message_left jest błędne i wskazuje większą ilość pozostałych danych niż faktycznie dostarczona. W konsekwencji dochodzi do odczytu pamięci sterty (heap) lub stosu (stack) poza zamierzonym obszarem bufora.
Atakujący może uzyskać nieautoryzowany dostęp do fragmentów pamięci systemowej (ujawnienie wrażliwych danych) lub wywołać błąd naruszenia dostępu do pamięci skutkujący odmową usługi (DoS). Efekt zależy od mechanizmów zarządzania pamięcią konkretnej platformy.
Należy zastosować patche dostępne u producenta zgodnie z referencjami — poprawka dostępna w repozytorium mbed-coap (pull request #116 na GitHub ARMmbed/mbed-coap). Zaleca się aktualizację biblioteki mbed-coap do wersji zawierającej łatkę oraz śledzenie poprawek w repozytorium ARMmbed/mbed-os (issues #12925, #12926, #12927).
Arm Mbed OS 5.15.3 z biblioteką mbed-coap
Podatność obejmuje trzy odrębne warianty błędów zgłoszone jako osobne issues w repozytorium Arm Mbed OS (#12925, #12926, #12927). Urządzenia IoT korzystające z protokołu CoAP i oparte na Arm Mbed OS 5.15.3 powinny być priorytetowo zaktualizowane ze względu na sieciowy wektor ataku bez wymogu uwierzytelnienia (AV:N/PR:N/UI:N).
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HArm Mbed Os
OSArm5.15.3
Powiązane podatności
Buffer overflow w parserze HCI raportów BLE w Arm Mbed OS 6.16.0
Buffer over-read w parserze CoAP biblioteki Arm Mbed OS
Buffer over-read w bibliotece CoAP systemu Arm Mbed OS
Buffer Overflow vulnerability in ARM mbed-os v.6.17.0 allows a remote attacker to execute arbitrary code via a...
An infinite loop was discovered in the CoAP library in Arm Mbed OS 5.15.3. The CoAP parser is responsible for ...