
대소문자 구분 없는 파일 시스템에서 악성 Git 훅을 통한 CVE-2021-21300 임의 코드 실행을 시연하며, 익스플로잇 단계와 방어 조치를 포함합니다.
CVE-2021-21300은 심볼릭 링크와 대소문자 구분 없는 파일 시스템을 악용하여 공격자가 피해자 시스템에서 임의 코드를 실행할 수 있게 하는 Git(버전 2.14.2~2.30.1)의 치명적인 취약점입니다.
A/post-checkout을 .git/hooks/post-checkout으로 해석합니다.Git은 .git/hooks/에 저장된 사용자 정의 훅을 허용합니다. 대소문자 구분 없는 파일 시스템에서는:
A/post-checkout과 같은 교묘하게 제작된 폴더가 .git/hooks/post-checkout으로 해석될 수 있습니다.A/를 .git/hooks/로 대체하여 제한을 우회합니다.A와 악성 명령이 포함된 파일 A/post-checkout을 생성합니다.A를 .git/hooks/에 대한 심볼릭 링크로 교체합니다.A/post-checkout을 실행할 때 실제로는 .git/hooks/의 악성 파일을 실행합니다..git/hooks/에 대한 심볼릭 링크.A/post-checkout에 대한 LFS 처리를 트리거하도록 .gitattributes를 생성합니다.A/post-checkout(예: "PWNED" 출력)을 추가합니다.A/a, A/b를 추가합니다.A/를 .git/hooks/에 대한 심볼릭 링크로 교체합니다.git clone -c core.symlinks=true
git config --system core.symlinks true
##💡 기타 잠재적 방어 대책
Git 별칭으로 안전한 클론 자동화
디렉터리를 생성합니다.
대소문자 구분 활성화(Windows):
fsutil file setcasesensitiveinfo <DESTINATION FOLDER> enable
해당 디렉터리에 클론합니다.
더 안전한 클론을 위해 이러한 단계를 자동화하는 Git 별칭을 생성합니다.