[하루한줄] CVE-2020-26233: Git CLI RCE

URL

https://blog.blazeinfosec.com/attack-of-the-clones-2-git-command-client-remote-code-execution-strikes-back/

Target

Git Credential Manager core < 2.0.289

Explain

악성 repository를 fork 한 피해자의 시스템에 임의의 실행파일을 실행시킬 수 있는 CVE-2020-26233에 대한 세부 정보가 공개되었습니다. 유사한 취약점으로 CVE-2020-27955가 있습니다.

git clone은 기본적으로 top-level 디렉터리를 clone 한 후 새로운 git 프로세스를 생성해 재귀적으로 submodule들을 clone 합니다. 만약 repository의 root디렉터리 안에 git.exe라는 이름의 실행파일이 있다면 Git Credential Manager core가 configuration을 읽는 과정에서 해당 파일을 실행하게 됩니다.

이런 취약점이 발생하는 이유는 다음과 같습니다. 만약 git.exe를 실행하라는 명령어를 받으면 Windows는 우선적으로 현재 디렉터리에 git.exe 실행파일이 있는지 확인하고, 없을 때만 %PATH% 환경 변수를 순회하면서 git.exe를 찾아 실행합니다.

PoC는 아래와 같습니다.

  1. 새로운 Repository생성, 혹은 기존 Repository에 파일 추가할 수 있는 권한 획득
  2. windows 실행파일의 파일명을 git.exe로 수정해 업로드
  3. 임의의 사용자가 Repository를 fork 하기를 기다림
  4. RCE 성공