W systemie operacyjnym Contiki-NG w wersjach 4.4–4.5 wykryto podatność typu buffer overflow w funkcji kodującej odpowiedź na żądanie SNMP bulk get. Luka umożliwia zdalnemu, nieuwierzytelnionemu atakującemu przejęcie kontroli nad przepływem wykonania kodu, co w skrajnym przypadku prowadzi do zdalnego wykonania kodu (RCE).
▸ Pokaż oryginał (EN)
Buffer overflows were discovered in Contiki-NG 4.4 through 4.5, in the SNMP bulk get request response encoding function. The function parsing the received SNMP request does not verify the input message's requested variables against the capacity of the internal SNMP engine buffer. When a bulk get request response is assembled, a stack buffer dedicated for OIDs (with a limited capacity) is allocated in snmp_engine_get_bulk(). When snmp_engine_get_bulk() is populating the stack buffer, an overflow condition may occur due to lack of input length validation. This makes it possible to overwrite stack regions beyond the allocated buffer, including the return address from the function. As a result, the code execution path may be redirected to an address provided in the SNMP bulk get payload. If the target architecture uses common addressing space for program and data memory, it may also be possible to supply code in the SNMP request payload, and redirect the execution path to the remotely injected code, by modifying the function's return address.
Funkcja przetwarzająca przychodzące żądanie SNMP nie weryfikuje liczby i długości żądanych zmiennych (OID) względem pojemności wewnętrznego bufora silnika SNMP. W trakcie assembla odpowiedzi na bulk get żądanie, funkcja snmp_engine_get_bulk() alokuje na stosie bufor o ograniczonej pojemności przeznaczony na OID-y. Brak walidacji długości danych wejściowych powoduje przepełnienie (stack buffer overflow, CWE-787), co umożliwia nadpisanie obszarów stosu poza przydzielonym buforem — w tym adresu powrotu z funkcji. Na architekturach ze wspólną przestrzenią adresową dla pamięci programu i danych atakujący może dodatkowo umieścić shellcode bezpośrednio w payloadzie żądania SNMP i przekierować tam wykonanie.
Atakujący może przekierować przepływ wykonania do dowolnego adresu dostarczonego w payloadzie SNMP bulk get, a w sprzyjających warunkach architektonicznych wykonać zdalnie wstrzyknięty kod (RCE) na podatnym urządzeniu bez żadnego uwierzytelnienia.
Należy zastosować patche dostępne u producenta zgodnie z referencjami (zgłoszenie GitHub issue #1353). Jeżeli aktualizacja nie jest możliwa, zaleca się ograniczenie dostępu sieciowego do interfejsu SNMP urządzeń z Contiki-NG wyłącznie do zaufanych hostów lub sieci, a w miarę możliwości wyłączenie usługi SNMP.
Contiki-NG w wersjach 4.4 oraz 4.5
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HContiki Ng
OSContiki-Ng4.0 – 4.5
Powiązane podatności
Contiki-Ng: nieprawidłowa losowość TCP ISN umożliwia ataki na sesje sieciowe
Off-by-one w bazie Antelope (Contiki-NG) — odczyt poza buforem
Out-of-bounds read w stosie SNMP systemu Contiki-NG
Buffer overflow w parsowaniu DNS w Contiki i Contiki-NG (NAT64)
Contiki-NG: błędy pamięci w enkoderze/dekoderze BER protokołu SNMP