과제형 면접 프로젝트를 열어보니 조직적인 악성코드 작전이었다
요약
면접 과정을 사칭하여 개발자의 로컬 환경에 악성코드를 심는 정교한 사회 공학적 공격 사례를 다룹니다. 오픈소스 관리자를 표적으로 삼아 저장소 복제를 유도하며, 검증되지 않은 코드를 실행하는 행위의 위험성을 경고합니다.
핵심 포인트
- 면접 및 채용 과정을 사칭한 정교한 사회 공학적 공격 주의
- 오픈소스 관리자 및 영향력 있는 개발자가 주요 표적
- 검증되지 않은 프로젝트 저장소 복제 및 코드 실행 위험성
- 컨테이너 기반 격리 환경(VS Code 등) 사용 권장
- 채용 플랫폼의 신원 검증 및 보안 강화 필요성
이 글을 읽고 나서야 훨씬 정교한 방식으로 해킹당했다는 걸 깨달았음
몇 주 전 실제 회사의 CTO와 면접했는데, 카메라를 꺼둔 데다 억양도 강했지만 면접 내용은 자연스러웠고 기술도 잘 아는 사람이었음. 기술 면접에서는 회사의 오픈소스 프로젝트를 수정해야 한다며 저장소를 복제하고 개발 환경을 확인해 달라고 했음
이후 인사 담당자가 CTO의 병으로 면접이 연기됐다고 했고, 며칠 뒤 그 담당자의 LinkedIn 프로필도 삭제됨. 이 글을 본 뒤 확인해 보니 면접 중 복제해 실행했던 저장소에 악성코드 페이로드가 들어 있었음
과거 주간 다운로드 4,300만 회 이상인 NPM 패키지를 관리했기 때문에 표적이 된 듯함. 모든 계정에 2단계 인증을 적용하고 NPM 패키지도 토큰 없이 수동 배포해 왔지만, 노트북은 초기화하고 전부 재설치해야 함
일정을 확인해 보니 Calendly로 잡힌 45분 면접이었고, 인사 담당자가 보낸 링크를 통해 CTO를 사칭한 사람과 실제로 45분간 대화했음
비슷한 HN 글들을 찾아봤지만 사기범과 Google Meet 통화까지 했다는 내용은 찾지 못했음
무작위 프로젝트를 그대로 복제하는 요청은 거절함. Rails 개발자라 전체 애플리케이션의 뼈대를 몇 분이면 만들 수 있으니, 요구사항만 주면 처음부터 끝까지 직접 구현하겠다고 함
진지한 회사라면 이를 고려할 것이고 거절한다면 위험을 피한 셈임. 이제 코드 생성에 LLM을 폭넓게 쓰는 만큼 어떤 기술 스택에서도 가능해야 한다고 봄
이런 환경에서는 컨테이너로 격리한 VS Code가 필요해 보임
표적 공격을 받을 만한 사람과 같은 소셜 미디어를 쓴다는 사실이 묘함. 평범한 자신에게 오는 건 “무료 스핀”이나 “죽어가는 독일 억만장자” 같은 사기뿐이며, 가장 인상적인 이메일 제목은 “네 질을 망가뜨려서 미안해”였음
최근 개발자를 겨냥한 북한발 공격이 늘어난 듯함. 수년째 이어진 이런 수법 외에도 “프로필을 봤는데 협업하지 않겠느냐”는 북한 해커의 이메일을 주 1회 정도 받음
프로그래밍 Discord 커뮤니티에서도 가입 후 며칠 안에 일자리나 협업을 요청하는 계정이 많음. 실제 구직자일 수도 있지만 메시지의 양과 유사성이 수상하며, 활동이 거의 없는 비주류 Python 라이브러리 커뮤니티까지 찾아오는 걸 보면 Discord 커뮤니티 목록을 긁어 무차별 접근하는 듯함
서로의 신뢰를 악용하는 공격이 많아졌으니 부모님 말씀처럼 인터넷의 낯선 사람을 믿지 않는 것이 필요함
원시 IP 주소는 악성코드라는 인상을 강하게 주지만, 훅 내용을 확인할 정도로 깊게 살펴본 피해자라면 거기서 의심을 멈추지도 않을 것임. 대부분의 개발자는 git commit이 악성 동작을 실행할 수 있다고 생각하지 않을 텐데, Git의 보안상 허점인지 궁금함
저장소를 단순히 복제하면 Git 훅이 자동으로 활성화되지는 않음. 하지만 이번에는 복제가 아니라 다운로드한 프로젝트라 사정이 다름
어떤 도구를 쓰든 검토하지 않은 다운로드 코드를 실행하는 것 자체가 현재는 위험함
각종 안전장치 때문에 Claude가 조력자로서 전혀 쓸모없었다는 점만 남았음
원시 IP를 쓴 건 도메인 등록기관에 신원 정보를 남기지 않거나 온라인 흔적을 최소화하려는 목적일 수 있음
그래서 원시 IP 주소가 수상한 활동과 자주 연관되는 듯함
해당 호스트들 역시 악성코드에 감염돼 현재 프록시로 악용되는 시스템일 가능성도 있음
스크린샷 대부분이 바로 열리지 않아 새 탭에서 봐야 했음
이 사기는 상당히 교묘해서 이미 많은 구직자가 당했을 듯하며, 글에 나온 Visual Studio Code 프로젝트는 더 위험해 보임. 프로젝트를 여는 것만으로 사용자 코드가 실행된다면 명백한 악성코드 경로이므로 보안 완화책이 필요함
채용 사이트의 대응도 부족함. 회사나 기관 소속임을 주장하려면 재직 증명을 요구하고, 검증되지 않은 계정의 메시지에는 큰 경고를 표시하기만 해도 많은 사기가 어려워질 것임. 현재는 누구나 임의의 회사 경력이나 학력을 주장할 수 있음
Microsoft가 문서를 열 때 자동 실행되던 Word·Excel 매크로 악성코드의 역사를 잊은 듯함
이미지가 모두 GitHub Pages에 호스팅돼 있어 별도의 CDN을 써야 할 듯함
Hacker News 첫 화면에 실제 해킹 관련 글이 올라오니 반가움
Hacker News에서 말하는 해커는 다른 의미임 http://www.catb.org/jargon/html/H/hacker.html
프로그래밍 가능한 시스템의 세부 구조와 한계를 탐구하고, 특히 컴퓨터와 네트워크의 내부 동작을 깊이 이해하는 데 즐거움을 느끼는 사람을 뜻함. 또한 이론에만 머무르지 않고 열정적으로, 때로는 집요하게 프로그래밍하는 사람을 의미함
LinkedIn이 사기 방지에 진지하다면 현재 직장을 기재할 때 회사 이메일 인증을 제공할 수 있음. 의무화가 부담스럽다면 최소한 합법성을 인정받으려는 채용 담당자가 선택적으로 인증하도록 만들 수 있음
나와 친구들은 몇 년간 가짜 프로필로 채용 담당자와 회사를 유인해 어떤 직무가 열려 있고 어떤 후보자를 찾는지 파악했음. JavaScript 프레임워크가 급증했을 때 정상적인 회사·채용 담당자와 사기꾼을 구별하는 데 특히 유용했음
지금도 AI 채용 시장과 LLM·자동화에 대한 수요를 노리고 비슷한 일이 벌어질 듯함
이런 공격은 갈수록 흔해질 듯함. 공격자들이 철저히 조사했고 수법도 악랄하지만 기술적 완성도는 인정할 만하며, 실제 성공률도 꽤 높을 것으로 봄
내부를 살펴보는 과정이 CTF 문제처럼 재미있었음. 공격자 서버에 취약점까지 있었다면 더 흥미로웠을 것임
AI 자동 생성 콘텐츠
본 콘텐츠는 GeekNews의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기