악성 저장소를 내려받는 작업이 공격자의 코드 실행으로 이어질 수 있는 Git 취약점이 수정됐다. 서브모듈까지 함께 받는 재귀적 복제 과정에서, 파일을 쓸 경로를 검사한 결과와 실제 기록 위치가 어긋나는 문제다.

GitHub가 2026년 11월 10일 공개한 발표에 따르면 Git 프로젝트는 이를 포함해 보안 취약점 6개를 수정했다. 수정판은 Git 2.56.1이며, 기존 유지보수 계열에는 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3, 2.50.2가 제공된다. Git 2.56.1 릴리스 노트도 여섯 취약점의 수정이 포함됐다고 명시한다.

검사한 경로와 기록한 경로가 달랐다

재귀적 복제 취약점인 CVE-2026-111760을 이해하려면 Git이 저장소 자체의 정보를 어떻게 보호하는지부터 볼 필요가 있다. Git은 작업 디렉터리에 파일을 쓰기 전에 경로를 검사해, 자신의 저장소 메타데이터를 덮어쓰는 경로를 거부한다.

그런데 파일 목록을 관리하는 인덱스에서 정수 값의 일부가 잘리는 문제가 있었다. 매우 긴 경로가 한 이름으로 검증을 통과한 뒤, 실제로는 더 짧은 이름으로 기록될 수 있었다. 검사받은 경로와 실제로 쓰는 경로가 달라지는 셈이다.

공격자는 이 차이를 이용해 서브모듈의 .git 파일을 심볼릭 링크로 바꿀 수 있다. 이 링크가 악성 설정이나 훅이 들어 있는 디렉터리를 가리키도록 만드는 것이다. 이후 Git이 그 디렉터리의 설정이나 훅을 사용하면, 재귀적 복제 도중 공격자가 지정한 코드가 실행될 수 있다. 수정판은 경로 길이가 잘리기 전에 지나치게 긴 인덱스 경로를 거부한다.

별도 보안 권고는 공격자가 직접 호스팅하는 저장소를 조건으로 설명하며, --recurse-submodules 옵션을 사용할 때만 유발되는 것으로 현재 판단한다고 적고 있다.

병합과 패치도 입력 조건에 따라 영향을 받는다

나머지 다섯 취약점은 발생하는 작업과 결과가 다르다. GitHub 발표가 설명한 조건을 나누면 다음과 같다.

작업과 취약점 발생 조건과 영향
빈 저장소 복제 — CVE-2026-113408 프로토콜 v2로 빈 저장소를 복제할 때, 악성 서버가 경로 이탈 요소를 포함한 HEAD 대상을 전달한다. 파일 기반 참조 저장 방식에서는 이후 해당 브랜치를 갱신하는 작업이 의도한 참조 디렉터리 밖에 기록할 수 있다.
태그 병합 — CVE-2026-114467 서명이 두 개보다 많은 태그를 병합하면, 서명을 제거하는 과정에서 스택 메모리가 손상되고 서비스 거부가 발생할 수 있다. 사용자 대신 병합하는 호스팅 서비스도 영향을 받을 수 있다.
바이너리 패치 적용 — CVE-2026-114469 작게 전달된 압축 바이너리 패치가 풀린 뒤 처리 한도를 넘을 수 있다. 입력 크기 검사만 통과한 패치가 메모리 범위 밖 읽기를 일으켜 Git이 비정상 종료될 수 있다.
큰 결과의 병합 — CVE-2026-105437 매우 큰 병합 결과의 메모리 크기를 계산하다 값이 넘치면, 필요한 것보다 작은 버퍼를 할당해 힙 메모리를 손상시킬 수 있다. 로컬 병합과 외부 콘텐츠를 병합하는 앱·서비스가 영향을 받는다.
fast-import 가져오기 — CVE-2026-114466 외부 입력 스트림의 일부 기능으로 저장소 밖 파일을 읽거나 파일을 생성하고 기존 파일에 추가 기록할 수 있었다. 수정판은 호출자가 명시적으로 허용하지 않으면 해당 기능을 거부한다.

터미널 밖의 Git도 업데이트 대상이다

업데이트 범위는 직접 명령을 실행하는 Git에 그치지 않는다. 운영체제나 Git 배포처가 제공하는 수정판을 설치하는 것과 함께, 자체 Git을 포함하는 앱도 업데이트해야 한다. 관리자는 사용자 대신 저장소를 처리하는 자동화와 서비스가 어떤 Git 설치본을 사용하는지도 확인해야 한다.

GitHub는 발표 시점에 github.com과 GitHub Enterprise Cloud, 데이터 레지던시를 제공하는 Enterprise Cloud에 수정을 배포했다고 밝혔다. GitHub Enterprise Server용 업데이트도 제공한다. GitHub Desktop과 GitHub Copilot 앱은 수정된 Git을 포함한 릴리스를 조율 중이며, Codespaces와 Actions에도 수정판이 제공될 예정이라고 설명했다. 호스팅 서비스에 수정이 배포됐다는 소식과 각 앱·실행 환경의 업데이트 상태는 구분해서 봐야 한다.

즉시 업데이트하기 어렵다면 GitHub는 신뢰하는 서버에서만 복제하고, 신뢰하지 않는 저장소의 재귀적 복제를 피하라고 권고한다. 외부의 신뢰하지 않는 콘텐츠나 태그를 병합하거나 바이너리 패치와 fast-import 입력을 처리하는 작업도 피하도록 안내한다. 이런 예방 조치는 수정판 설치를 대신하지 않는다.