Katalog CVE

CVE-2026-102721

ŚrednieCVSS 6.9
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Streszczenie

Serwer TFTP odpowiadający krótkim pakietem ERROR powoduje, że klient czyta do 64 bajtów poza odebranym datagramem. Pętla kopiująca komunikat błędu nie porównuje wskaźnika z końcem pakietu, co prowadzi do przepełnienia bufora sterty (heap-buffer-overflow).

Ocena ryzyka

Złośliwy serwer TFTP może wywołać odczyt poza granicami bufora, ujawniając sąsiednie dane z puli pakietów, które mogą zostać zalogowane lub wyświetlone. Może to prowadzić do wycieku informacji lub awarii klienta.

Rekomendacja

Zaktualizuj bibliotekę NetX TFTP do wersji z poprawką dodającą warunek `(buffer_ptr < packet_ptr->nx_packet_append_ptr)` w pętli we wszystkich trzech ścieżkach. Do czasu aktualizacji unikaj łączenia się z niezaufanymi serwerami TFTP.

Powiązane podatności

Oryginalny opis (angielski, źródło NVD)

A TFTP server that answers with a short ERROR packet makes the client read up to 64 bytes past the received datagram. Each receive path checks only that the datagram is at least four bytes long (nxd_tftp_client.c:1229, 1521, 1984). When the opcode is NX_TFTP_CODE_ERROR the message string is copied with a loop whose only limits are the destination buffer and a NUL byte: ```c /* addons/tftp/nxd_tftp_client.c:1769 */ for (i = 0; (i < (sizeof(tftp_client_ptr -> nx_tftp_client_error_string) - 1)) && (*buffer_ptr); i++) ``` Nothing compares `buffer_ptr` against `nx_packet_append_ptr`. An ERROR packet that carries no terminating NUL, which a server controls completely, walks the loop off the end of the packet until it happens to meet a zero byte or fills the 64 byte destination. ``` ERROR: AddressSanitizer: heap-buffer-overflow READ of size 1 at 0x60d0000000c8 thread T4 #0 _nxd_tftp_client_file_read addons/tftp/nxd_tftp_client.c:1769 0x60d0000000c8 is 0 bytes to the right of 136-byte region ``` The open path has the same loop at :1327 and reports the same way. What is read lands in `nx_tftp_client_error_string`, which the application is expected to display or log, so adjacent packet pool memory ends up in whatever the device does with the error text. Add `(buffer_ptr < packet_ptr -> nx_packet_append_ptr)` to the loop condition in all three paths.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS