English
◀◁ 뒤로
취약점ID 16047
위험도 40
포트 21
프로토콜 TCP
분류 FTP
상세설명 해당 BFTPD 데몬은 NLST 명령어에 Format String 취약점을 가지고 있다.
Max-Wilhelm Bruker's FTP 서버인 BFTPD 데몬은 Linux, BSD/OS, FreeBSD, DG-UN, Tru64 상에서 inetd 데몬에 종속되어 또는 독립적으로 동작할 수 있는 FTP 서버 프로그램이다. 그 중 BFTPD 1.0.12 버전은 "distlir.c" 파일에 존재하는 "sendstrf" 와 "dirlist" 함수 구현에 있어 몇 가지 버그를 가지고 있다.
버그들 중 특히, 이 Format String 취약점은 "sendstrf" 함수가 파일명이 format string %p%p%p%p 를 포함하는 파일을 리스팅(listing) 하기위해 요청된 NLST 명령어에 의해서 호출될 경우, 발생하게 된다. 만약, 파일 "%p%p%p%p" 이 존재하고 NLST 명령을 전달할 경우, 다음과 같은 결과가 반환된다.

#ls
%p%p%p%p
ftp>nlist
200 PORT … OK
150 Data connection established.
….0xbffdde140x499e8100x424000bb…....
226 Directory list has been submitted
ftp>

이것은 vsprintf 함수에 올바르게 format string을 전달할 수 없게 되며 vsprintf 의 버퍼를 오버플로우(overflow)시킬 수 있다. 만약, 원격지 공격자가 FTP 서버 상의 임의의 디렉토리에 대해서 쓰기 액세스(access) 권한을 갖는다면, 이 취약점을 이용하여 시스템 루트 권한을 획득할 수 있으며 임의의 코드 실행도 가능하다.

* 참고 사이트:
http://www.securiteam.com/unixfocus/6N00E0A0KW.html

* 영향을 미치는 플랫폼:
BSD 모든 버전
DG/UX 모든 버전
FreeBSD 모든 버전
Linux 모든 버전
Solaris 모든 버전
Tru64 UNIX 모든 버전
bftpd 1.0.12
해결책 BFTPD 웹 사이트 http://bftpd.sourceforge.net/ 를 참조하여 BFTPD1.0.13 이상의 버전으로 업그레이드 해야 한다.

임시 조치방법으로, bftpd-1.0.11/dirlist.c 파일 중 62줄을 다음과 같이 변경하고 재 컴파일하여 설치한다:
sendstrf(s, entry->d_name) => sendstrf(s, "%s", entry->d_name)
관련 URL (CVE)
관련 URL (SecurityFocus)
관련 URL (ISS)