A TFTP server that answers with a short ERROR packet makes the client read up to 64 bytes past the received datagram. Each receive pat
위협 신호 · CVSS · EPSS · KEV
이론적 심각도 점수
예측 데이터 없음
실측 악용 기록 없음
계획된 패치 주기 내 조치(60일 이내)
CVSS 벡터 · 메트릭
CVSS 벡터 정보 없음
약점 (CWE)
- CWE-125
경계 밖 읽기 — 버퍼 범위를 벗어난 메모리를 읽어 민감 정보 유출·충돌 유발.
상세 설명
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:
1 2 3 4/* addons/tftp/nxd_tftp_client.c:1769 */ 5 6 7 8for (i = 0; (i < (sizeof(tftp_client_ptr -> nx_tftp_client_error_string) - 1)) && (*buffer_ptr); i++) 9 10 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.
1 2 3 4ERROR: AddressSanitizer: heap-buffer-overflow 5 6 7 8READ of size 1 at 0x60d0000000c8 thread T4 9 10 #0 _nxd_tftp_client_file_read addons/tftp/nxd_tftp_client.c:176911 12 130x60d0000000c8 is 0 bytes to the right of 136-byte region14 15 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.
AI 심층 분석
공격 시나리오 · 재현 가능한 PoC 페이로드 · 즉시 적용 가능한 차단 패치를 한 번에 받아 보세요. 보안 운영팀이 그대로 점검·티켓팅에 쓸 수 있는 형태로 정리해 드립니다.