상세 컨텐츠

본문 제목

받은 저장소를 AI 에이전트로 열기 전에 | .git 설정 한 줄로 명령이 실행되는 GitSpawn

서버·개발/코드 노트

by 사이 (SAI) 2026. 10. 1. 01:01

본문

728x90
반응형

동료가 보낸 ZIP 파일, 과제로 받은 프로젝트 폴더, 공유 드라이브에서 복사한 저장소를 클로드 코드나 코덱스로 열어 "이 코드 설명해 줘"라고 시키는 일은 이제 흔합니다. 그런데 그 폴더에 숨은 설정 한 줄만으로, 프롬프트를 입력하기도 전에 명령이 실행될 수 있다는 연구가 나왔습니다.

보안업체 매니폴드 시큐리티가 "GitSpawn"이라고 이름 붙인 문제입니다. 원리는 의외로 단순하고, 대처도 어렵지 않습니다. 어떤 도구가 영향을 받았고 지금 무엇을 확인해야 하는지 정리했습니다.

GitSpawn은 저장소 자체의 .git/config에 core.fsmonitor 같은 설정으로 명령을 적어 두면, AI 코딩 에이전트가 배경에서 git status를 돌리는 순간 그 명령이 사용자 권한으로 실행되는 문제다. 매니폴드는 클로드 코드, 코덱스, 커서 등 7개 에이전트에서 8건을 찾았고 9월 1일 기준 4건이 미패치였다. 저장소를 git clone으로 받을 때는 해당하지 않고, ZIP·공유 폴더처럼 .git 폴더째 받은 경우가 위험하다. 에이전트를 최신으로 올리고, 받은 저장소는 열기 전에 git config를 확인하자.

1. 무슨 문제인가

매니폴드 시큐리티에 따르면 AI 코딩 에이전트는 맥락을 파악하려고 배경에서 git 명령을 실행합니다. 일부는 사용자가 프롬프트를 입력하기 전, 작업 폴더를 신뢰할지 묻기 전, 심지어 로그인하기 전에도 실행합니다. 문제는 이때 저장소가 가진 git 설정을 그대로 믿었다는 점입니다.

git에는 core.fsmonitor라는 성능용 설정이 있습니다. 큰 저장소에서 바뀐 파일을 빨리 찾으려고 외부 도우미 프로그램을 부르는 기능인데, 이 값에는 실행할 명령이 들어갑니다. 그리고 git은 이 값을 저장소 자체의 .git/config에서도 읽습니다. git status나 git diff처럼 색인을 새로 고치는 명령이면 그 명령이 실행됩니다.

.git/config의 core.fsmonitor 설정이 AI 에이전트의 git status를 통해 명령으로 실행되는 과정 도식

더 해커 뉴스는 이렇게 실행된 명령이 에이전트의 샌드박스 밖에서, 사용자 권한으로, 승인 창 없이 돌아간다고 전했습니다. 모델이 속은 것이 아니라 에이전트가 사람 대신 돌린 평범한 git 명령이 통로가 된 셈입니다.

핵심 git clone으로 받은 저장소에는 해당하지 않습니다. 원격 저장소의 .git/config는 복제되지 않기 때문입니다. ZIP, 공유 드라이브, 동기화 폴더, USB처럼 .git 폴더째 파일로 받은 경우가 위험합니다.

2. 어떤 도구가 영향을 받았나

에이전트 제보 9월 1일 기준 상태
클로드 코드(core.fsmonitor) 6월 26일 패치(2.1.196)
클로드 코드(ultrareview 경로, 별도 설정) 7월 15일 미패치(2.1.252 기준)
OpenAI 코덱스 7월 20일 패치(CLI 0.131.0)
커서 7월 8일 패치
구스(Goose) 7월 13일 패치(1.44.0)
헤르메스 에이전트, 큐원 코드, 그록 빌드 7월 미패치

표는 클라우드 시큐리티 얼라이언스 연구 노트가 정리한 매니폴드의 공개 일정 기준입니다. 이후 업데이트로 상황이 바뀌었을 수 있으니, 쓰는 도구의 최신 보안 공지를 따로 확인하는 게 좋습니다. 매니폴드는 에이전트가 배경 git 호출 때 설정을 무력화(예: git -c core.fsmonitor=false status)하면 막을 수 있다고 제안했습니다.

3. 받은 저장소, 열기 전에 확인

받은 저장소를 AI 에이전트로 열기 전 점검 순서 도식

에이전트로 열기 전에 터미널에서 확인

cd 받은-저장소
git config --local --list          # 저장소 자체 설정 전체 보기
git config --local --get core.fsmonitor
git config --local --get core.hooksPath
ls .git/hooks | grep -v sample      # 샘플이 아닌 훅 파일 (hooksPath가 있으면 그 폴더를 확인)

core.fsmonitor에 낯선 명령이 적혀 있다면 이미 실행을 기다리는 명령으로 보고 에이전트로 열지 않는 게 안전합니다. core.hooksPath에 낯선 경로가 있다면 그 폴더의 훅 파일과 실행 조건을 확인하세요(이때는 .git/hooks 대신 지정된 폴더를 봐야 합니다). 다만 위 명령 자체는 설정을 읽기만 하고 색인을 새로 고치지 않으니, git status 대신 이 명령들로 먼저 보세요.

제 판단으로는 가장 간단한 습관은 받은 폴더를 그대로 열지 않는 것입니다. 원래 저장소 주소가 있다면 git clone으로 새로 받고, 없다면 .git 폴더를 빼고 코드만 복사해 새로 git init 하는 편이 안전합니다.

주의 점검 결과가 깨끗해도 도구 업데이트가 먼저입니다. 클로드 코드는 claude --version, 코덱스는 codex --version으로 버전을 확인하고 최신으로 올리세요.

4. 에이전트를 쓰는 습관 바꾸기

습관 이유
출처 모를 폴더는 원격에서 다시 clone .git/config를 새로 만들게 됨
.git 폴더째 받은 코드는 git config부터 확인 숨은 실행 설정 확인
에이전트·git 최신 유지 도구별 패치 적용
중요한 작업은 컨테이너·가상 머신에서 실행돼도 피해 범위를 좁힘
반응형

이 문제는 AI 에이전트가 사람 대신 여러 명령을 자동으로 돌리는 시대의 전형적인 위험을 보여 줍니다. 사람이라면 수상한 폴더에서 굳이 실행하지 않았을 명령을, 에이전트는 맥락 파악을 위해 먼저 돌립니다. 그래서 무엇을 여는지부터 사람이 한 번 걸러야 합니다.

Q. 깃허브에서 clone한 저장소도 위험한가요?

매니폴드 설명 기준으로 clone, fetch, pull만으로는 이 설정이 옮겨 오지 않습니다. 파일로 .git 폴더째 전달된 경우가 문제입니다. 다만 저장소 안의 다른 악성 코드 위험은 별개입니다.

Q. VS Code 같은 편집기는 괜찮나요?

이번 발표는 명령줄 AI 코딩 에이전트 7종을 대상으로 했습니다. 다른 도구도 저장소 설정을 읽어 git을 자동 실행한다면 비슷한 위험이 있을 수 있으니, 받은 폴더는 같은 방식으로 먼저 확인하세요.

3줄 핵심 요약

  1. GitSpawn은 저장소의 .git/config(core.fsmonitor 등)에 적힌 명령이 AI 에이전트의 배경 git 호출로 실행되는 문제다.
  2. 클로드 코드·코덱스·커서는 패치됐지만(9/1 기준) 일부 도구와 경로는 미패치였다. 먼저 최신 버전으로 올리자.
  3. ZIP·공유 폴더로 받은 저장소는 git config --local --list로 확인하거나, 원격에서 새로 clone하자.

마치며

AI 에이전트는 사람보다 먼저, 더 많이 명령을 실행합니다. 그래서 "무엇을 열게 하느냐"가 곧 보안입니다. 오늘은 쓰는 에이전트의 버전을 확인하고, 최근 ZIP으로 받은 프로젝트가 있다면 git config --local --list부터 한 번 돌려 보세요.

NEXT READ

이어서 읽어 볼 글

01  클로드 코드 세션끼리 대화한다 · 에이전트 세션과 권한

02  AI가 짠 코드, 그림으로 읽는다 · 에이전트 코드 이해 도구

 

728x90
반응형

관련글 더보기

댓글 영역