CVE-2026-54410
WysokieCVSS 8.6Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 43 - wyżej niż 43% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący zdalnie może spowodować uszkodzenie pamięci, co może prowadzić do awarii usługi lub potencjalnie do wykonania kodu.
Rekomendacja
Zaktualizuj nanoMODBUS do wersji nowszej niż 1.23.0, jeśli dostępna, lub zastosuj obejście polegające na ograniczeniu dostępu do serwera Modbus/TCP.
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-71256Krytyczne
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].
- 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.
Oryginalny opis (angielski, źródło NVD)
nanoMODBUS through v1.23.0 contains an off-by-one buffer overflow in the recv_msg_header function of the Modbus/TCP server that allows remote unauthenticated attackers to write one attacker-controlled byte past the end of the 260-byte receive buffer by sending a crafted MBAP frame whose Length field is set to 255.

