🇰🇷 한글 설명
Git 2.14.2 이전 버전의 perl 스크립트에서 모듈명에 대한 입력 검증 부족으로 인해, cvsserver 등의 서브커맨드를 통해 공격자가 셸 메타문자를 주입하여 임의의 OS 명령을 실행할 수 있는 취약점입니다. git-shell을 통해서도 CVS 지원 여부와 관계없이 공격이 가능합니다.
💡 쉬운 설명
Git이라는 소프트웨어에서 파일 이름에 특수 문자를 넣으면 컴퓨터를 조종하는 사람이 원하는 명령을 몰래 실행시킬 수 있습니다. 특히 서버에서 사용자의 Git 명령을 처리하는 부분(git-shell)을 통해 이 공격이 가능합니다.
🇺🇸 원문 (English)
Git before 2.10.5, 2.11.x before 2.11.4, 2.12.x before 2.12.5, 2.13.x before 2.13.6, and 2.14.x before 2.14.2 uses unsafe Perl scripts to support subcommands such as cvsserver, which allows attackers to execute arbitrary OS commands via shell metacharacters in a module name. The vulnerable code is reachable via git-shell even without CVS support.
📍 영향받는 시스템
Git < 2.10.5, 2.11.x < 2.11.4, 2.12.x < 2.12.5, 2.13.x < 2.13.6, 2.14.x < 2.14.2
⚔️ 공격 벡터
git-shell 또는 CVS 서브커맨드(cvsserver 등)에 모듈명으로 셸 메타문자(;, |, &, `, $(command) 등)를 포함한 악의적 입력을 전달하여 임의 명령 실행
🛡️ 대응 방법
Git을 안전한 버전으로 업그레이드 (2.10.5, 2.11.4, 2.12.5, 2.13.6, 2.14.2 이상)
🔧 검증 코드
위 명령 실행 시 'VULNERABLE'이 나오면 취약한 버전이며, 'PATCHED'가 나오면 패치된 버전입니다. git --version으로 먼저 현재 버전을 확인 후 위 범위와 비교하세요.
git --version | awk -F'[. ]' '{print ($3 < 10 || ($3==10 && $4<5) || ($3==11 && $4<4) || ($3==12 && $4<5) || ($3==13 && $4<6) || ($3==14 && $4<2)) ? "VULNERABLE" : "PATCHED"}'