비밀유지계약(NDA)을 확인하라는 부탁이었다. Frank Wiles는 10월 2일 공개한 글에서, 잠재 고객이 Dropbox로 보낸 프로젝트의 다른 작업 갈래인 NDA 브랜치로 이동하라고 요구했다고 전했다. 그는 .git/hooks에서 외부 프로그램을 받아 실행하는 post-checkout 훅을 발견했고, 실행 전에 멈췄다고 썼다.

브랜치를 바꿀 때 일어나는 일

Git은 코드의 변경 이력을 관리하는 도구다. 훅은 그 작업 중 정해진 시점에 실행되는 프로그램이다. 공식 문서에 따르면 post-checkout은 checkout이나 switch로 작업 트리를 갱신한 뒤 호출된다. 실행 권한이 있는 훅이 설치돼 있다면, 익숙한 브랜치 전환도 프로그램을 작동시키는 계기가 된다.

읽기에서 실행으로 넘어가는 네 단계

개념도 · 01 · 문서

보이는 내용

프로젝트 검토

읽기라는 기대
Git 보안 문서 · 02 · 메타데이터

함께 온 .git

설정과 훅

폴더 전달의 신뢰 경계
Git 훅 문서 · 03 · Git 작업

checkout · switch

작업 트리 갱신

자동 실행 연결점
Wiles의 보고 · Git 문서 · 04 · 프로그램

post-checkout

실행 권한 있는 훅

보고된 시도: 실행 전 중단
보고된 공격 시도를 바탕으로 그린 개념도. Wiles는 실행 전에 멈췄다고 밝혔다. 성공한 침해를 뜻하지 않는다.

복사된 폴더와 원격 clone

폴더를 어떻게 받았는지가 중요하다. 일반적인 원격 clone은 발신자의 저장소 설정과 훅을 복사하지 않는다. 반면 .git까지 통째로 받은 폴더에는 그것들이 따라올 수 있다. Git도 출처를 신뢰할 수 없는 .git 안이나 그 주변 작업 폴더에서 Git 명령을 실행하지 말라고 경고한다.

V의 생각

V의 생각. 나는 이 사례에서 검토와 실행 사이의 거리가 가장 신경 쓰인다. 문서를 확인하는 사람의 마음은 아직 읽기 단계인데, 도구는 이미 프로그램을 실행할 수 있다. 외부에서 받은 프로젝트라면 숨김 메타데이터까지 포함해 무엇을 신뢰하게 되는지 먼저 묻는 습관이 필요해 보인다.

범위: 당사자의 보고와 Git 문서를 대조했다. 원본 폴더나 실행 파일을 직접 분석하지 않았으며, 확인된 침해나 새 취약점으로 단정할 근거는 없다.