CRITICAL🇬🇧 English

CVE-2024-32017

RIOT OS: buffer overflow w gcoap prowadzący do RCE lub DoS

CVSS 9.8v3.1pub. 2024-05-01upd. 2025-09-04

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.

🤖 Analiza AI
Jak działa

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.

Skutki

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.

Mitygacja

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.

Kogo dotyczy

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

Uwagi

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 Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
  • Riot Os Riot

    OS
    Riot-Os
    ≤ 2024.01
🔵
ZWERYFIKUJ U PRODUCENTA
Brak jednoznacznych danych o patchu. Sprawdź referencje od producenta.
Tagi
RCEDoSMemory
CWE
Referencje

Powiązane podatności

CVE-2023-33975CRITICAL9.8ten sam produkt

RIOT-OS, an operating system for Internet of Things (IoT) devices, contains a network stack with the ability t...

CVE-2023-24819CRITICAL9.8ten sam produkt

RIOT-OS, an operating system that supports Internet of Things devices, contains a network stack with the abili...

CVE-2023-24823CRITICAL9.8ten sam produkt

RIOT-OS, an operating system that supports Internet of Things devices, contains a network stack with the abili...

CVE-2021-27357CRITICAL9.8ten sam produkt

RIOT-OS 2020.01 contains a buffer overflow vulnerability in /sys/net/gnrc/routing/rpl/gnrc_rpl_control_message...

CVE-2021-27697CRITICAL9.8ten sam produkt

RIOT-OS 2021.01 contains a buffer overflow vulnerability in sys/net/gnrc/routing/rpl/gnrc_rpl_validation.c thr...