Git 2.56.1 공개, 보안 취약점 6건 수정

Git 프로젝트가 11월 11일 03시(한국 시각, 11월 10일 18:00 UTC) 보안 취약점 6건을 고친 Git 2.56.1을 내놓았습니다. 악성 저장소를 재귀 클론할 때 임의 코드가 실행될 수 있는 문제, 의도하지 않은 파일에 쓰기가 일어나는 문제, 병합이나 바이너리 패치 처리 중 메모리가 손상되는 문제가 포함됩니다. 이전 유지보수 버전 여섯 개에도 같은 수정이 백포트됐습니다.
1/재귀 클론부터 fast-import까지, 취약점 6건
CVE-2026-111760은 인덱스 처리 중 정수 잘림(integer truncation) 때문에 아주 긴 경로가 한 이름으로 검증을 통과한 뒤 더 짧은 이름으로 쓰이는 문제입니다. 공격자는 서브모듈의 .git 파일을 악성 설정이나 훅이 든 디렉터리를 가리키는 심볼릭 링크로 바꿔, 재귀 클론 중 코드를 실행시킬 수 있습니다. CVE-2026-113408은 protocol v2로 빈 저장소를 클론할 때 서버가 알려 주는 HEAD 심볼릭 참조(symref)의 대상을 검증하지 않아, 경로 탐색(path traversal) 문자열로 참조 디렉터리 밖에 쓰게 만들 수 있는 문제입니다. 이 경우 files reference backend를 쓰고 이후 브랜치를 갱신하는 작업이 일어나야 합니다. CVE-2026-114466은 git fast-import의 rewrite-submodules-from, rewrite-submodules-to, export-pack-edges 기능이 신뢰할 수 없는 입력 스트림에서도 막히지 않아 임의 파일 읽기나 파일 생성·덧붙이기가 가능했던 문제입니다.
2/메모리 손상 3건: 서명, 바이너리 패치, 대형 병합
CVE-2026-114467은 GPG 서명을 제거할 때 서명이 최대 두 개라고 가정해, 서명이 세 개 이상인 메시지에서 고정 크기 스택 배열 밖에 쓰는 문제입니다. 서명이 여러 개 붙은 태그를 병합하면 메모리 손상과 서비스 거부(DoS) 가능성이 생기고, 사용자 대신 병합을 수행하는 호스팅 서비스도 영향을 받을 수 있습니다. CVE-2026-114469는 약 1 GiB를 넘는 패치를 거부하는 검사가 압축 전 크기만 보기 때문에, 작은 바이너리 패치가 풀리면서 한도를 넘어 범위 밖 읽기(out-of-bounds read)와 Git 충돌을 일으키는 문제입니다. CVE-2026-105437은 병합 결과의 메모리 크기를 계산할 때 정수 오버플로가 나 버퍼가 작게 할당되고 힙이 손상되는 문제로, 충돌이 많고 conflict-marker-size 속성이 클 때 등이 해당합니다.
3/어떻게 고쳤나
CVE-2026-111760은 지나치게 긴 인덱스 항목 경로를 길이가 잘리기 전에 거부하도록 고쳤고, 체크아웃과 트리 처리 중의 관련 인덱스 항목 할당에도 오버플로 검사를 추가했습니다. CVE-2026-113408은 서버가 알려 준 대상을 받아들이기 전에 검증하며, protocol v2로 받는 다른 참조 이름과 심볼릭 참조 대상도 검증합니다. 서명 제거 코드는 고정 크기 배열을 없애 서명 개수에 제한이 없게 했습니다. 바이너리 패치는 선언된 압축 해제 후 크기도 확인합니다. 병합은 크기에 맞는 자료형과 검사된 산술을 써서 결과 크기를 안전하게 표현할 수 없으면 병합을 거부합니다. fast-import의 세 기능은 입력 스트림으로 들어오면 거부되며, --allow-unsafe-features를 명시해야만 쓸 수 있습니다. 공지는 스트림을 만드는 프로그램을 신뢰할 때만 이 옵션을 켜라고 안내합니다.
4/업데이트할 버전과 GitHub 측 조치
수정은 Git 2.56.1에 들어 있고, 2.55.1, 2.54.1, 2.53.1, 2.52.1, 2.51.3, 2.50.2로 백포트됐습니다. 운영체제나 Git 배포처에서 패치된 버전을 설치하고, Git을 내장한 애플리케이션도 갱신하라는 권고입니다. 자동화와 사용자 대신 저장소를 처리하는 서비스의 Git도 갱신 대상입니다. GitHub는 github.com, GitHub Enterprise Cloud, 데이터 레지던시 적용 GitHub Enterprise Cloud에 수정을 배포했습니다. GitHub Enterprise Server는 3.19.15, 3.20.11, 3.21.9, 3.22.4에서 업데이트를 받을 수 있습니다. GitHub Desktop과 GitHub Copilot 앱은 패치된 Git을 담은 릴리스를 조율 중이고, GitHub Codespaces와 GitHub Actions도 패치된 Git을 받을 예정입니다.
5/당장 업데이트가 어려울 때
공지가 제시한 임시 조치는 신뢰하는 서버에서만 클론하고, 신뢰할 수 없는 저장소의 재귀 클론을 피하는 것입니다. 신뢰할 수 없는 콘텐츠나 태그의 병합, 바이너리 패치 처리, fast-import 스트림 처리도 피하라고 합니다. 공지는 이런 조치가 수정 설치를 대신하지는 못한다고 밝혔습니다. 가격이나 비용 관련 내용은 공지에 없습니다.