[하루한줄] CVE-2020-7468: FreeBSD local privilege escalation

URL

CVE-2020-7468: TURNING IMPRISONMENT TO ADVANTAGE IN THE FREEBSD FTPD CHROOT JAIL

Target

FreeBSD ftpd

Explain

FreeBSD의 ftp 데몬에서 root 로 권한 상승이 가능한 취약점이 발견되었습니다.

취약점은 chroot 함수의 로그인 처리 부분의 결함으로 인해 발생합니다.

chroot 함수에서 chdir이 실패할 경우 ftpd는 chroot의 jail에서 새로운 로그인 연결을 기다립니다. 이를 이용해 강제로 chdir이 실패하도록 유도하면 해커가 업로드한 파일을 시스템 파일인 것처럼 속일 수 있습니다.

취약점의 상세 공격 단계는 다음과 같습니다.

  1. 해커가 FTP 유저 계정으로 로그인합니다.
  2. etc/spwd.db 에 임의의 root 패스워드를 설정해 업로드합니다.
  3. chmod 0 으로 홈 디렉터리에 대한 권한을 변경하고 유저 계정으로 다시 로그인합니다.
  4. 3번으로 인해 로그인 중 chdir이 실패하고 ftpd chroot jail 내부에서 새로운 연결을 기다립니다. 이후 모든 시스템 파일 액세스는 해커 계정의 홈 디렉터리를 기준으로 이루어집니다.
  5. 결과적으로 이후 root로 로그인할 때 해커가 업로드한 etc/spwd.db 의 root 패스워드 테이블을 참조해 패스워드를 검증하고 해커가 root 계정에 접근할 수 있습니다.

해당 취약점을 악용하면 리버스쉘을 실행시키는 명령어를 포함한 파일을 업로드해 root 권한으로 쉘을 실행하고, chroot jail을 벗어나 임의의 명령어 또한 실행할 수 있습니다.