W systemie operacyjnym RIOT wykryto dwie luki typu buffer overflow w składniku gcoap (implementacja CoAP). Podatności mogą zostać wykorzystane przez zdalnego atakującego bez uwierzytelnienia do wywołania odmowy usługi lub wykonania dowolnego kodu.
▸ Pokaż oryginał (EN)
RIOT is a real-time multi-threading operating system that supports a range of devices that are typically 8-bit, 16-bit and 32-bit microcontrollers. The size check in the `gcoap_dns_server_proxy_get()` function contains a small typo that may lead to a buffer overflow in the subsequent `strcpy()`. In detail, the length of the `_uri` string is checked instead of the length of the `_proxy` string. The `_gcoap_forward_proxy_copy_options()` function does not implement an explicit size check before copying data to the `cep->req_etag` buffer that is `COAP_ETAG_LENGTH_MAX` bytes long. If an attacker can craft input so that `optlen` becomes larger than `COAP_ETAG_LENGTH_MAX`, they can cause a buffer overflow. If the input above is attacker-controlled and crosses a security boundary, the impact of the buffer overflow vulnerabilities could range from denial of service to arbitrary code execution. This issue has yet to be patched. Users are advised to add manual bounds checking.
Pierwsza luka wynika z błędu typograficznego w funkcji `gcoap_dns_server_proxy_get()`: sprawdzana jest długość ciągu `_uri` zamiast ciągu `_proxy`, co prowadzi do przepełnienia bufora podczas następującego wywołania `strcpy()`. Druga luka dotyczy funkcji `_gcoap_forward_proxy_copy_options()`, która nie weryfikuje rozmiaru danych przed ich skopiowaniem do bufora `cep->req_etag` o stałej długości `COAP_ETAG_LENGTH_MAX` bajtów — jeśli atakujący sprawi, że wartość `optlen` przekroczy tę granicę, dochodzi do przepełnienia bufora (CWE-120). Obie podatności mogą być wyzwolone zdalnie poprzez spreparowane dane wejściowe przekraczające granicę bezpieczeństwa.
Atakujący może doprowadzić do odmowy usługi (DoS) lub wykonać dowolny kod (RCE) na urządzeniu z podatną wersją RIOT OS, potencjalnie przejmując pełną kontrolę nad systemem wbudowanym.
Na moment publikacji podatność nie została załatana przez producenta (brak patcha). Zaleca się ręczne dodanie weryfikacji granic buforów (manual bounds checking) w funkcjach `gcoap_dns_server_proxy_get()` oraz `_gcoap_forward_proxy_copy_options()`. Należy monitorować repozytorium RIOT-OS oraz advisory producenta pod kątem pojawienia się oficjalnej poprawki.
RIOT OS (Riot-Os RIOT) — wszystkie wersje zawierające podatny kod w plikach `sys/net/application_layer/gcoap/dns.c` oraz `sys/net/application_layer/gcoap/forward_proxy.c`; szczegółowe wersje wskazane w referencjach producenta
Producent potwierdził brak patcha w momencie publikacji advisory (2024-05-01) i zalecił użytkownikom samodzielne wdrożenie ręcznego sprawdzania granic buforów jako tymczasowe obejście.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HRiot Os Riot
OSRiot-Os≤ 2024.01
Powiązane podatności
RIOT-OS, an operating system for Internet of Things (IoT) devices, contains a network stack with the ability t...
RIOT-OS, an operating system that supports Internet of Things devices, contains a network stack with the abili...
RIOT-OS, an operating system that supports Internet of Things devices, contains a network stack with the abili...
RIOT-OS 2020.01 contains a buffer overflow vulnerability in /sys/net/gnrc/routing/rpl/gnrc_rpl_control_message...
RIOT-OS 2021.01 contains a buffer overflow vulnerability in sys/net/gnrc/routing/rpl/gnrc_rpl_validation.c thr...