heron

보안 실패 기록. git 디렉터리 접근 제한 실패.

발견

오늘도 문득 떠올라 웹서버의 로그를 살펴보는데, .git 이하의 경로로 상태코드 200의 응답 성공이 여러번 로깅되어있는 것을 발견했다.

솔직히 너무 놀라서 해당 URL을 내 웹페이지에 입력해 보니, .git 내부의 파일이 다운로드 되는게 아닌가????

변명을 좀 하자면, 초기 버전의 웹페이지 시스템에서는 .htaccess 파일로 .git이 보호되고 있었고, 이전 버전에서는 git을 아예 사용하지 않았다. 현재 버전의 복잡성 때문에 git을 다시 도입했는데, 아뿔사... 나는 아파치가 숨김폴더 내부의 파일을 요청하는 GET에 응답하는줄을 완전히 잊어버린 것이다.

얼마 전에 졸업작품을 만들면서, 학생들을 위해 ID, PW를 .env 파일에 숨기면서, 아파치가 숨김파일 요청에 바로 응답하는 것을 확인까지 했는데도 말이다... 익숙함이 얼마나 무서운가? 다시금 깨닫는다. 타성에 젖는 것은 진실로 위험하다...!

물론 큰 위험은 아니다... 나는 현재 웹사이트에 어떤 DB도 사용하지 않고 있고, 애초에 공개하지 못하는 자료(글, 사진 등)는 웹에 게시하지도 않는다. 별도의 외부 API를 사용하지도 않기에 어떠한 ID, PW 정보도 웹사이트 코드 내부에 숨겨져 있지 않다.

img load failed!

공격 로그 일부


해결

전역 설정에 .git이 포함된 모든 요청을 404 리다이렉트 하는 코드를 추가했다.

IP를 차단하지는 않았다. 어차피 이미 파일은 다 가져갔고, 저게 저 사람의 실제 IP도 아닐 것이다...


결론 및 감상

git을 실제 서비스 경로에 포함시키지 말자. git은 어디까지나 격리된 개발환경에만 있어야 하고, 개발된 코드를 배포 서버로 옮기는 방식을 취해야 한다. 혹시 배포 환경에 깃을 굳이 포함한다면, 접근 제한을 철저히 해야 한다.

물론 나도 그것을 잘 알고, 내 데스크톱에 웹서버를 모사한 컨테이너가 있지만... 하... 이걸 고려하지 못했다니, 정말 답답하다.

보통은 별 소용도 없는 무차별적인 취약점 공격이 일반적인데... 이렇게 정확하게 git 파일을 전부 긁어서 다운로드 하는 경우는 처음이라 당황스럽다. 그동안 git에 접근하는 사람이 한두명이 아니었는데, 모두 실패해서 나는 이런 취약점이 있는줄은 상상도 못했다. 아니 근데 그 사람들은 아파치에 아무 조치가 안 되어 있는데 왜 깃 파일을 못 가져간걸까? 진짜 이상한 일이다.

진짜 너무 찝찝하다. 무엇보다 삭제된 포스트를 포함해, 내가 게시한 모든 글과 이미지의 복사본을 누가 갖고있게 되었다는게 너무 찝찝하고 불쾌하다. 진짜 소름이 돋는다. 오늘은 잠들기 어려울 것 같다.

2025-05-30 조치 및 기록