과제형 면접 봤더니, 알고 보니 악성코드 유포 작전이었다?
한 개발자가 과제형 면접 프로젝트를 받았는데, 깃 훅(Git Hook)을 이용한 악성코드 유포 작전임을 발견하며 채용 과정의 보안 위험을 경고한다.
diff --summary
- 한 개발자가 원격 Python 개발자 채용 과정에서 받은 과제형 면접 프로젝트가 악성코드 유포 작전임을 발견했다.
- 제공된 ZIP 파일은 정상적인 FastAPI 과제로 위장했지만, 깃 훅을 통해 운영체제별 원격 페이로드를 설치하도록 설계되었다.
- 공격자는 가짜 채용 담당자와 웹사이트를 운영하며 조직적으로 개인 정보를 탈취하려 했다.
- 이 사건은 채용 과정을 통한 공급망 공격의 새로운 형태로, 개발자들의 주의를 요구한다.
LinkedIn에서 월 1만~1만5천 달러의 원격 Python 개발자 자리를 제안받은 한 개발자가 있었다. 솔깃한 제안이었지만, 그 뒤에 숨겨진 진실은 꽤 충격적이다. 과제형 면접 프로젝트를 열어보니 조직적인 악성코드 작전이었다는 이 개발자의 경험담을 소개한다. 평범해 보이는 과제형 면접 ZIP 파일이 사실은 깃 훅(Git Hook)을 이용해 악성코드를 심으려는 조직적인 작전이었다는 이야기다.
과제형 면접, 그 뒤에 숨겨진 함정
개발자가 받은 프로젝트는 겉으로는 정상적인 FastAPI 과제였다. 하지만 깃 저장소의 .git/hooks 디렉터리 안에는 운영체제별로 원격 페이로드를 조용히 실행하는 스크립트가 숨어 있었다. 즉, 개발자가 프로젝트를 클론하고 특정 깃 명령어를 실행하는 순간, 본인도 모르게 악성코드가 설치될 수 있었던 것이다. 이 스크립트는 post-checkout, post-commit, post-merge 등 다양한 깃 훅을 이용해 지속적으로 악성코드를 실행하려 했다. 심지어 임시 파일까지 지워 흔적을 남기지 않으려는 치밀함까지 보였다. 이 정도면 단순 해킹을 넘어선, 거의 영화 같은 시나리오다.
치밀한 사회 공학적 공격의 전말
더 놀라운 건 이 공격이 단순히 한 번의 시도로 끝난 게 아니라는 점이다. 공격자는 가짜 채용 담당자 계정을 여러 개 운영했고, 가짜 회사 웹사이트까지 만들어 신뢰를 얻으려 했다. 백엔드에서 이메일 전송, 데이터베이스 관리, 파일 업로드 및 다운로드를 처리하는 복잡한 시스템까지 구축해두었다. 이는 단순한 피싱을 넘어, 채용 과정을 악용해 개발자 시스템에 침투하려는 공급망 공격의 새로운 형태라고 볼 수 있다. 개인 정보 탈취는 물론, 더 나아가 기업 네트워크 접근까지 노렸을 가능성도 배제할 수 없는 상황이다.
I Inspected My Take-Home Interview Project. It Was a Whole Operation 원문을 보면, 개발자는 다행히 의심스러운 부분을 발견하고 미리 방어할 수 있었다. 하지만 이런 치밀한 공격은 바쁜 개발자들이 놓치기 쉬운 허점을 노린다는 점에서 경각심을 준다. 요즘처럼 원격 채용이 활발한 시대에, 과제형 면접은 이제 코드 실력뿐 아니라 보안 의식까지 테스트하는 장이 된 셈이다. 앞으로는 면접 과제를 받으면 .git/hooks부터 확인하는 습관을 들여야 할지도 모르겠다.
$ sources
- [1] I Inspected My Take-Home Interview Project. It Was a Whole Operation citizendot.github.io
- [2] 과제형 면접 프로젝트를 열어보니 조직적인 악성코드 작전이었다 news.hada.io