Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2017-1000117]Git ssh URL Command Execution
작성일 2017-08-25 조회 1157

개요


Git client에 명령 실행 취약점이 발견되었다. 해당 취약점은 ssh:// URL 부분을 제대로 검증하지 않아 발생한다. 현재 해당 취약점과 관련된 POC는 공개되었으며, 해당 벤더사로부터 패치가 진행 된 상황이다.
 
해당 취약점은 Linux kernel, GitHub와 Gitlab을 기반으로 하는 Git에 영향을 받는다.
취약점이 패치된 버전은 Git v2.14.1, v2.7.6, v2.8.6, v2.9.5, v2.10.4, v2.11.3, v2.12.4, v2.13.5 이다.
 
 

확인 내역


해당 취약점은 공격자는 특별히 변조한 ssh:// URL을 전달하여, 해당 링크로 접속 시 취약점을 통해 임의의 코드가 실행되는 취약점이다. 악성 URL을 프로젝트의 ".gitmodules" 폴더에 추가해 놓은 상태에서 "git clone --recurse-submodules"를 실행시키게 되면 바로 취약점을 악용하여 임의의 코드를 실행 할 수 있게 된다. 
 
일단 기본적으로 해당 취약점은 ssh:// URL 부분을 파싱 시, 해당 부분을 제대로 검증하지 못해 발생하는 취약점이다. 
 
공격 예시) git clone ssh://-oProxyCommand=notepad.exe/ /tmp/git_vulnerability
 
위 공격 예시를 살펴보면, ssh:// 뒤에 -o 옵션이 사용되었다. -o 옵션은 ssh 명령 줄 옵션으로, 구성 파일의 형식을 따르는 사용자 정의 옵션이다. 해당 취약점은 -o 옵션을 옵션으로 처리하는 것이 아닌 명령으로 해석되어 ProxyCommand 를 통해 전달되는 메모장을 실행시키게 된다.
 
이런 점을 악용하여 Git 저장소 하위 모듈의 .gitmodules 파일을 편집하여 공격하는 방법은 다음과 같다.
아래 구문은 위에서 설명한 익스플로잇이 실행 될 수 있도록 .lfsconfig 파일을 변경한 경우이다.
 
[submodule "pwned"]
path = pwned
url = ssh://-oProxyCommand-notepad.exe
 
다음과 같이 파일을 변경 한 뒤, 공격자는 다음과 같은 구문을 통해 메모장을 실행 할 수 있다.
 
[그림1] 공격 실행
 
git clone --recursive-submoduels를 실행함으로 인해 위에서 설정 해둔 pwned 위치에 설정되어 있는 url를 실행하게 되며, -oProxyCommand를 통해서 메모장이 실행된다.
 
 
 
 
 

대응방안


해당 벤더사에서 제공한 보안 권고문을 참고하여, 취약한 버전에 대해 패치를 진행 한다.
https://lkml.org/lkml/2017/8/10/757
 
 

 

참고

https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1466490.html

http://blog.recurity-labs.com/2017-08-10/scm-vulns

https://blogs.msdn.microsoft.com/devops/2017/08/15/git-vulnerability-with-submodules/

첨부파일 첨부파일이 없습니다.
태그 CVE-2017-1000117  Git  ssh