
GIT 취약점 | 클로닝 시 캐리지 리턴 및 RCE
CVE-2025-48384는 널리 사용되는 분산 버전 관리 시스템인 Git에서 발견된 치명적인 취약점입니다. 이 취약점은 구성 값에서 캐리지 리턴(CR) 문자를 부적절하게 처리하여 서브모듈 체크아웃 중 경로 탐색 문제를 일으킬 수 있습니다. 이 결함으로 인해 특정 조건에서 임의 코드 실행이 가능할 수 있습니다. 이 취약점은 2025년 7월 8일에 공개적으로 공표되었으며, 2025년 8월 26일에 마지막으로 수정되었습니다. 또한 2025년 8월 25일 미국 사이버보안 및 인프라 보안국(CISA)의 알려진 악용 취약점(KEV) 목록에 추가되어 실제 환경에서 활발히 악용되고 있음을 나타내며, 시정 기한은 2025년 9월 15일입니다.
이 문제는 Git이 구성 값을 처리하는 방식에서 비롯됩니다.
이러한 불일치로 인해 서브모듈 경로에 후행 CR이 포함된 경우 서브모듈이 잘못된 위치에 체크아웃될 수 있습니다. 공격자가 이 변경된 경로를 서브모듈의 hooks 디렉터리를 가리키는 심볼릭 링크로 설정하고, 해당 서브모듈에 실행 가능한 post-checkout 훅이 포함되어 있다면, 체크아웃 후 훅 스크립트가 의도치 않게 실행되어 임의 코드 실행으로 이어질 수 있습니다.
이 취약점은 Git의 구성 파싱에서 발생하는 해석 충돌을 악용합니다.
.git/hooks/post-checkout)로 이어지는 심볼릭 링크를 생성하여, git submodule update 또는 git clone --recurse-submodules 같은 작업 중에 악성 훅이 실행되도록 허용할 수 있습니다.이 취약점은 다음으로 분류됩니다:
공격 벡터는 네트워크 기반(AV:N)이며, 높은 복잡성(AC:H), 낮은 권한 필요(PR:L), 사용자 상호 작용 필요(UI:R), 범위 변경(S:C) 속성을 가지며 기밀성, 무결성, 가용성에 높은 영향(C:H/I:H/A:H)을 미칩니다.
이 취약점은 다음 패치 릴리스 이전의 Git 버전에 영향을 미칩니다:
이 취약점은 Linux, macOS, Windows를 포함한 다양한 플랫폼의 Git에 영향을 미치지만, 특히 개발자 환경, CI/CD 파이프라인(예: GitHub Actions, GitLab CI), 그리고 신뢰할 수 없는 저장소에서 Git 서브모듈을 클론하는 모든 환경에서 중요합니다.
--recurse-submodules 옵션을 사용한 저장소 클론과 같은 사용자 상호 작용CVSS 세부 점수는 아직 NVD에서 완전히 산정되지 않았지만(CVSS 4.0 대기 중), 권고문의 CVSS 3.1 지표에 따르면 치명적 심각도(이전의 광범위한 CVE 목록에서 언급된 대로 추정 CVSS 8.8)에 해당합니다.
--recurse-submodules) 클론하지 마세요.이 취약점은 특히 서브모듈을 사용하는 버전 관리 시스템에서 안전한 처리의 중요성을 강조합니다. Git을 프로덕션 또는 개발 환경에서 사용하고 있다면, 활발한 악용 상태를 고려하여 즉시 업데이트를 최우선으로 수행하세요.
.gitmodules는 https://github.com/s41r4j/CVE-2025-48384-submodule.git을 가리키지만, PoC는 오프라인 테스트를 위해 이를 로컬 복사본으로 다시 작성합니다.실행:
bash scripts/poc.sh
동작 방식:
$HOME/flag.txt에 플래그를 생성합니다.malicious-submodule-repo/를 컨테이너의 /tmp로 복사합니다.post-checkout 훅이 트리거되도록 체크아웃을 강제합니다./tmp/flag.txt를 출력합니다.참고:
sub^M(CR)이며, 정리된 경로 sub는 심볼릭 링크를 통해 .git/hooks로 연결되므로 서브모듈이 추적하는 post-checkout이 실제 훅으로 배치되어 실행됩니다.bash scripts/update-gitlink.sh.