Podatność typu out-of-bounds write (CWE-787) w funkcji dns_unpack_name() systemu Zephyr RTOS pozwala atakującemu na zapis poza granicą bufora poprzez spreparowaną odpowiedź DNS. Błąd ma ocenę CVSS 9.4 i może prowadzić do naruszenia integralności systemu oraz jego dostępności bez konieczności uwierzytelnienia.
▸ Pokaż oryginał (EN)
dns_unpack_name() caches the buffer tailroom once and reuses it while appending DNS labels. As the buffer grows, the cached size becomes incorrect, and the final null terminator can be written past the buffer. With assertions disabled (default), a malicious DNS response can trigger an out-of-bounds write when CONFIG_DNS_RESOLVER is enabled.
Funkcja dns_unpack_name() jednorazowo pobiera i zapamiętuje dostępne miejsce (tailroom) w buforze, a następnie wielokrotnie korzysta z tej wartości podczas dołączania kolejnych etykiet DNS. W miarę zapełniania bufora zapamiętana wartość przestaje odzwierciedlać rzeczywisty stan i staje się nieprawidłowa. W efekcie końcowy terminator null może zostać zapisany poza granicą bufora. Warunek ten jest możliwy do wywołania zdalnie, gdy w konfiguracji systemu włączono opcję CONFIG_DNS_RESOLVER, a asercje są wyłączone (co stanowi domyślne ustawienie).
Atakujący zdalnie, bez uwierzytelnienia, może wywołać out-of-bounds write poprzez złośliwą odpowiedź DNS, co może skutkować uszkodzeniem pamięci, destabilizacją lub zatrzymaniem urządzenia (DoS), a potencjalnie również naruszeniem integralności przetwarzanych danych.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (https://github.com/zephyrproject-rtos/zephyr/security/advisories/GHSA-536f-h63g-hj42). Jako obejście tymczasowe można rozważyć wyłączenie CONFIG_DNS_RESOLVER, jeśli funkcja DNS nie jest wymagana, lub włączenie asercji w celu ograniczenia exploitacji.
Projekt Zephyr RTOS (Zephyrproject Zephyr) z włączoną opcją CONFIG_DNS_RESOLVER oraz wyłączonymi asercjami (konfiguracja domyślna); dokładne wersje wskazane w referencjach producenta.
Podatność wymaga, aby w konfiguracji systemu była aktywna opcja CONFIG_DNS_RESOLVER oraz aby asercje były wyłączone, co odpowiada domyślnej konfiguracji Zephyr RTOS.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:HZephyrproject Zephyr
OSZephyrproject≤ 4.3.0
Powiązane podatności
Błąd adresowania GP w Zephyr RTOS na architekturze RISC-V
Lack of proper validation in HCI Host stack initialization can cause a crash of the bluetooth stack
Inconsistent handling of error cases in bluetooth hci may lead to a double free condition of a network buffer.
A malicious / defect bluetooth controller can cause a Denial of Service due to unchecked input in le_read_buff...
usb device bluetooth class includes a buffer overflow related to implementation of net_buf_add_mem.