libcurl contains a heap buffer overflow in the function
(tftp_receive_packet()
) that receives data from a TFTP server. It calls
recvfrom()
with the default size for the buffer rather than with the size
that was used to allocate it. Thus, the content that might overwrite the heap
memory is entirely controlled by the server.
The flaw exists if the user selects to use a blksize
of 504 or smaller
(default is 512). The smaller size that is used, the larger the possible
overflow becomes.
Users choosing a smaller size than default should be rare as the primary use case for changing the size is to make it larger.
It is rare for users to use TFTP across the Internet. It is most commonly used within local networks.