최근 한 개발자가 링크드인(LinkedIn)을 통해 암호화폐 스타트업의 채용 제안을 받았다가, 코드 검토 요청에 숨겨진 정교한 백도어(backdoor) 공격을 발견했습니다. 제안받은 깃허브(GitHub) 저장소에는 `npm install` 명령만으로도 악성 코드가 실행되도록 설계된 함정이 있었으며, 이는 실제 인물을 사칭한 가짜 프로필을 통해 이루어졌습니다.
공격은 `app/test/index.js` 파일에 약 250줄의 테스트 코드처럼 위장되어 있었습니다. 이 코드에는 특정 URL(`https://rest-icon-handler.store/icons/77`)을 조립하는 부분이 포함되어 있었고, 주석 처리된 테스트 코드 사이에 숨겨진 페이로드(payload)는 해당 서버로부터 받은 명령을 실행하도록 설계되었습니다. 특히 `package.json` 파일의 `prepare` 스크립트가 `npm install` 실행 시 `app/index.js`를 로드하고, 이 파일이 다시 `app/test/index.js`를 호출하여 백도어가 자동으로 실행되는 방식이었습니다. 공격자는 '오래된 노드 모듈(Node modules) 문제를 확인해달라'는 지시로 개발자가 `npm install`을 실행하도록 유도했습니다. 더욱 놀라운 점은 깃허브 커밋(commit) 기록이 실제 유명 개발자의 이름과 이메일로 위조되었고, 채용 담당자 역시 비기술 분야의 실제 언론인을 사칭했다는 것입니다.
이 사건은 사이버 공격이 얼마나 정교해지고 있는지 보여주는 경고등입니다. 단순히 의심스러운 링크를 클릭하는 것을 넘어, 정상적인 채용 프로세스처럼 보이는 상황에서도 악성 코드가 유포될 수 있음을 시사합니다. 특히 개발자들은 코드 검토 요청을 받을 때 반드시 샌드박스(sandbox) 환경에서 안전하게 확인하고, 자동화된 보안 도구를 활용하여 잠재적 위협을 사전에 탐지하는 습관을 들여야 합니다. 기업과 개인 모두 소셜 엔지니어링(social engineering) 공격에 대한 경각심을 높이고, 출처를 알 수 없는 코드 실행에 대한 보안 수칙을 강화해야 할 때입니다.