BSD 4.2 - 'fingerd' Remote Buffer Overflow

Author: anonymous
type: remote
platform: bsd
port: 
date_added: 1988-10-01  
date_updated: 2012-06-10  
verified: 1  
codes: OSVDB-1538;OSVDB-112523  
tags:   
aliases:   
screenshot_url:   
application_url:   

raw file: 19039.txt  
source: https://www.securityfocus.com/bid/2/info

fingerd is a remote user information server that implements
the protocol defined in RFC742. There exists a buffer
overflow in finderd that allows a remote attacker to execute
any local binaries.

finderd reads input from its socket using the gets()
standard C library call passing it a 512-byte automatic
buffer allocated in main(). gets() reads the input and
stores it into the buffer without performing any bounds
checking. This results in a standard stack buffer
overflow when main() return.


The Internet Worm used a string of 536 bytes to
overflow the input buffer of fingerd on the VAX. The
VAX machine code it used was:

pushl $68732f 'sh\0'
pushl $6e69622f '/bin'
movl sp, r10
pushl $0
pushl $0
pushl r10
pushl $3
movl sp, ap
chmk $3b

This code executed execve("/bin/sh", 0, 0).