CVE-2026-71256
KrytyczneCVSS 9.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 23 - wyżej niż 23% wszystkich znanych CVE
Streszczenie
nanoMODBUS do wersji v1.23.0 zawiera odczyt poza stosem prowadzący do zapisu przez dziki wskaźnik w nmbs_read_device_identification_basic / recv_read_device_identification_res w nanomodbus.c. Stała tablica stosowa order[3] = {0,1,2} mapuje identyfikatory obiektów na indeksy bufora. Pole object_id dostarczane przez serwer (0-255, odczytywane bezpośrednio z sieci) jest używane bez żadnego sprawdzenia granic jako buf_index = order[object_id].
Ocena ryzyka
Atakujący może spowodować awarię procesu lub potencjalnie wykonać dowolny kod, wykorzystując odczyt poza stosem i zapis przez dziki wskaźnik.
Rekomendacja
Należy dodać sprawdzenie granic dla object_id przed użyciem jako indeksu tablicy. Zaleca się również aktualizację do najnowszej wersji biblioteki, jeśli dostępna jest poprawka.
Inne podatności w nanoMODBUS
Zobacz wszystkie- CVE-2026-29972Wysokie
W nanoMODBUS w wersji do 1.22.0 występuje przepełnienie bufora na stosie w funkcji recv_read_registers_res() w pliku nanomodbus.c. Atakujący może wysłać złośliwą odpowiedź z serwera Modbus TCP, co prowadzi do przepełnienia bufora i potencjalnego zdalnego wykonania kodu.
- CVE-2026-71254Krytyczne
nanoMODBUS do wersji 1.23.0 zawiera zapis poza zakresem w funkcji handle_read_file_record (FC 0x14, Read File Record) w nanomodbus.c. Funkcja sprawdza, czy całkowity rozmiar żądania nie przekracza 245 bajtów i czy record_length każdego pod-żądania wynosi co najwyżej 124, ale nie sprawdza skumulowanego rozmiaru odpowiedzi przed przetworzeniem.
- CVE-2026-71255Wysokie
nanoMODBUS do wersji v1.23.0 zawiera zapis poza zakresem w funkcji recv_read_device_identification_res po stronie klienta Modbus (FC 0x2B/MEI 0x0E, Read Device Identification) w pliku nanomodbus.c. Pole object_length dostarczane przez serwer (0-246) jest walidowane tylko względem pozostałego rozmiaru PDU (res_size_left) i nigdy nie jest walidowane względem parametru buffers_length dostarczonego przez wywołującego.
- CVE-2026-54410Wysokie
Podatność przepełnienia bufora off-by-one w bibliotece nanoMODBUS do wersji 1.23.0 w funkcji recv_msg_header serwera Modbus/TCP. Zdalny nieuwierzytelniony atakujący może zapisać jeden bajt sterowany przez atakującego poza koniec 260-bajtowego bufora odbiorczego, wysyłając spreparowaną ramkę MBAP z polem Length ustawionym na 255.
Oryginalny opis (angielski, źródło NVD)
nanoMODBUS through v1.23.0 contains an out-of-bounds stack read leading to a wild-pointer write in nmbs_read_device_identification_basic / recv_read_device_identification_res in nanomodbus.c. A fixed 3-element stack array order[3] = {0,1,2} maps object IDs to buffer indices. The server-supplied object_id field (0-255, read directly from the wire) is used without any bounds check as buf_index = order[object_id].

