天下漏洞,尽知其名
MEDIUM

CVE-2026-102721 TFTP 客户端越界读取漏洞

MEDIUM
暂无 CVSS 评分
原始情报

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 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 nx_packet_append_ptr)` to the loop condition in all three paths.