yozm.tech
피드로 돌아가기
news.hada.ioHOTAI 재작성

Git에서 --end-of-options가 필요한 이유

Git에서 `--`가 리비전과 경로를 구분하는 특성 때문에, 신뢰할 수 없는 입력이 주어졌을 때 인자 주입(argument injection) 취약점이 발생할 수 있습니다. 이를 해결하기 위해 Git 2.24.0부터 `--end-of-options`가 도입되었으나, 대부분의 패키지 관리자는 아직 이를 활용하지 않아 잠재적 위험에 노출되어 있습니다. 이 문제는 오래된 Git 버전과의 호환성 문제로 인해 해결이 더디게 진행되고 있습니다.

6시간 전·2026.07.22·읽기 1·neo https://news.hada.io/user/neo

개발자들이 매일 사용하는 버전 관리 시스템 Git에서 예상치 못한 보안 취약점이 발견되었습니다. 바로 '인자 주입(argument injection)' 공격인데, 이는 신뢰할 수 없는 입력이 Git 명령의 옵션으로 해석되면서 발생합니다. 일반적인 유닉스(Unix) 도구와 달리 Git의 `--`는 옵션 해석의 끝이 아닌, 리비전(revision)과 경로 명세(pathspec)를 구분하는 역할을 해왔기 때문에, 리비전 위치에 옵션 종료 표식이 없어 문제가 발생할 수 있었습니다.

이러한 문제를 해결하기 위해 Git 2.24.0 버전부터 `--end-of-options`라는 새로운 옵션이 도입되었습니다. 이 옵션은 Git 명령에서 옵션과 리비전 사이를 명확히 구분하여, 대시(-)로 시작하는 리비전 이름이 옵션으로 오해되는 것을 방지합니다. 예를 들어, `git log --end-of-options "$rev" -- "$path"`와 같이 사용하면, 첫 번째 `--end-of-options`는 옵션과 리비전을, 두 번째 `--`는 리비전과 경로를 구분하여 안전하게 명령을 실행할 수 있습니다. 하지만 문제는 대부분의 패키지 관리자(예: Bundler, npm, pip 등)가 Git 바이너리를 실행하면서도 이 `--end-of-options`를 사용하지 않고 있다는 점입니다. 조사된 19개 패키지 관리자 중 Go의 `cmd/go`만이 이 옵션을 사용하고 있었으며, 이는 `CWE-88` 인자 주입 취약점으로 이어질 수 있습니다.

이러한 인자 주입 취약점은 셸(shell)을 거치지 않고 `argv` 배열을 직접 사용하는 경우에도 발생할 수 있습니다. 과거 Git, Mercurial, SSH 등 여러 버전 관리 시스템에서 유사한 취약점이 반복적으로 발견되었으며, 이는 URL의 호스트명이 SSH 옵션으로 처리되거나, `git fetch` 명령에서 참조(ref)가 `--upload-pack`과 같은 옵션으로 해석되는 방식으로 악용될 수 있었습니다. 패키지 관리자들이 Git URL이나 참조를 하위 프로세스에 전달하는 과정에서 이러한 취약점이 발생할 가능성이 높습니다.

문제 해결이 더딘 주된 이유는 오래된 Git 버전과의 호환성 때문입니다. `--end-of-options`는 서브명령마다 지원 시점이 다르며, `git checkout`이나 `git reset` 같은 일부 명령은 Git 2.43.1에 이르러서야 완전히 지원됩니다. 따라서 패키지 관리자들이 이 옵션을 사용하려면 최소 Git 버전을 높여야 하는데, 이는 우분투(Ubuntu) 18.04처럼 오래된 Git 버전을 사용하는 사용자들을 지원할 수 없게 만드는 결과를 초래합니다. 이러한 호환성 제약 때문에 많은 패키지 관리자는 여전히 대시로 시작하는 브랜치명을 거부하는 등의 부분적인 방어책에 머물러 있습니다.

장기적인 해결책으로는 Git 바이너리를 직접 실행하는 대신 `libgit2`, `gitoxide`와 같은 Git 라이브러리를 사용하는 방법이 제시됩니다. 라이브러리는 별도의 `argv` 경계가 없어 인자 주입 공격의 대상 자체가 사라지기 때문입니다. 하지만 이 경우 Git 업스트림(upstream)의 모든 체크아웃 안전성 수정 사항을 직접 추적해야 하는 추가적인 개발 및 유지보수 비용이 발생합니다. 결국, 개발 생태계 전반의 보안 강화를 위해서는 Git 사용 방식에 대한 근본적인 이해와 함께, 최신 보안 기능을 적극적으로 도입하려는 노력이 필요합니다.

1인 창업자를 위한 기회 분석
AI 분석 · 참고용이며 검증이 필요합니다
3/10
약한 신호
3점인가

명확한 기술적 문제이지만, 대부분의 개발자는 이 문제를 직접 해결하기보다 기존 도구의 업데이트를 기다릴 가능성이 높습니다. 1인 창업자가 직접적인 수익 모델을 만들기 어렵습니다.

문제 / 미충족 수요

Git 명령 실행 시 신뢰할 수 없는 입력으로 인한 인자 주입 취약점 문제가 여전히 존재하며, 많은 도구가 이를 제대로 방어하지 못하고 있습니다.

한국 시장
국내 있음한국에서도 Git을 사용하는 개발 환경은 보편적이므로, 잠재적 위험은 동일하게 존재합니다.
수익 모델

B2B 보안 컨설팅/솔루션, 개발자 도구 구독 · 돈 내는 주체: 보안에 민감한 기업의 DevOps 팀, 대규모 오픈소스 프로젝트 관리자

1인 실현 가능성
2/5

Git 내부 동작 및 보안 취약점에 대한 깊은 이해가 필요하며, 기존 패키지 관리자들의 호환성 문제까지 고려해야 하므로 1인이 해결하기에는 난이도가 높습니다.

진입 지점 (Wedge)

특정 Git 서브명령에 대한 인자 주입 취약점 자동 분석 및 리포팅 도구 개발

이번 주 첫 실험

Git 인자 주입 취약점 패턴을 분석하고, 이를 탐지할 수 있는 간단한 스크립트 또는 웹 서비스 프로토타입을 만들어 개발자 커뮤니티에 공유하여 피드백을 수집합니다.

Original source
이 글은 news.hada.io의 기사를 yozm.tech가 한국어로 재작성한 버전입니다.
원문 보기