테크레시피

“깃허브, 삭제‧비공개 저장소에 누구나 접근 가능” 지적

오픈소스 보안 기업 트러플시큐리티(Truffle Security)가 깃허브(GitHub)에서는 삭제됐거나 비공개로 설정된 포크 또는 저장소에 누구나 접근할 수 있으며 더구나 이 동작이 결함이 아닌 사양대로라고 지적했다.

깃허브에서의 일반 워크플로로 새로운 포크 생성, 커밋, 포크 삭제를 고려해 보면 이때 삭제했어야 할 포크 내용을 누구나 확인할 수 있다고 한다. 트러플시큐리티가 대형 AI 기업 저장소를 조사한 결과 삭제된 포크에서 유효한 API 키 40개를 발견했다. 포크 후 확인을 위해 일시적으로 API 키를 하드코딩하는 패턴이 많은 것으로 보인다.

또 다른 케이스로 저장소를 포크, 원본 저장소에 새로운 커밋 수행, 원본 저장소 삭제의 경우를 고려한다. 일견 포크 이후에 이뤄진 커밋에 대한 접근이 불가능해 보이지만 저장소 네트워크 구조를 통해 영구적으로 접근 가능한 상태가 된다고 한다.

더구나 새로운 도구를 오픈소스화하는 경우 새로운 도구용 저장소를 비공개 설정으로 생성, 비공개 포크 생성, 포크는 비공개인 채로 저장소를 공개 설정으로 변경하는 절차를 밟는 경우가 많다. 이 경우에도 포크가 비공개인지 여부와 관계없이 모든 커밋이 누구나 접근 가능한 상태가 된다.

위와 같은 숨겨진 커밋에 접근하려면 해당 커밋의 커밋 해시를 얻으면 된다고 한다. 저장소 URL에 직접 커밋 해시를 입력하면 해당 커밋을 표시할 수 있다.

트러플시큐리티는 깃허브에 버그로 보고했지만 깃허브에서는 사양대로라고 답변했다고 한다. 실제로 깃허브 문서를 확인해보면 포크 네트워크 내 어느 저장소에 대한 커밋도 업스트림 저장소를 포함한 포크 네트워크 내 모든 저장소에서 접근할 수 있다고 쓰여 있다.

트러플시큐리티 측은 비공개 저장소라도 커밋 내용이 외부에 공개되는 경우가 있다며 저장소나 포크 삭제가 커밋 데이터를 실제로 삭제하는 건 아니라며 깃허브 사양에 대해 설계상 결함이라고 지적했다. 많은 깃허브 사용자가 저장소 네트워크 구조를 이해하지 못하고 있어 안전성이 저하되고 있다는 지적이다. 관련 내용은 이곳에서 확인할 수 있다.

추천기사