LinkedIn 채용 제안에 숨겨진 백도어 공격

원제: A backdoor in a LinkedIn job offer

왜 중요한가

npm 공급망 공격이 실제 채용 채널을 통해 발생하고 있으며, 신원 도용을 결합한 정교한 사회공학 기법의 위협이 개발자 커뮤니티에 존재함을 보여준다.

개발자 로만 이만쿨로프가 LinkedIn을 통한 암호화폐 스타트업의 채용 제안에서 악성 백도어를 발견했다. 공격자는 실제 개발자와 저널리스트의 신원을 도용해 GitHub 저장소를 위장했으며, npm install 실행 시 자동으로 악성 코드가 실행되는 구조로 설계됐다.

지난주 이만쿨로프는 소규모 암호화폐 스타트업의 채용담당자라고 주장하는 사람으로부터 LinkedIn 메시지를 받았다. 상대방은 코드베이스 검토를 요청하며 GitHub 저장소 링크를 전달했고, 특히 '레거시 Node 모듈 문제'를 확인해달라고 지시했다.

이만쿨로프는 의심을 품고 Hetzner의 임시 VPS에서 저장소를 복제한 뒤, 파일 읽기 권한만 제한된 상태에서 검토했다. 검사 결과 app/test/index.js 파일에서 백도어를 발견했다. 이 파일은 약 250줄의 테스트 스위트로 위장했으나, 실제로는 https://rest-icon-handler.store/icons/77 URL로부터 서버가 전송하는 임의의 코드를 실행하는 페이로드를 포함했다.

공격은 package.json의 prepare 스크립트를 활용했다. npm install 실행 후 자동으로 실행되는 prepare 단계에서 app/index.js가 로드되고, 이는 다시 app/test/index.js를 실행해 백도어를 작동시키는 구조였다.

조사 결과 저장소의 39개 커밋은 모두 실제 존재하는 풀스택 개발자 이름으로 기록돼 있었으나, 본인은 해당 프로젝트에 관여한 적이 없다고 확인했다. 그는 과거에도 GitHub에서 신원 도용 피해를 입었으며 이 저장소도 신고하고 있었다. 채용담당자로 자칭한 프로필도 실제 문화 저널리스트의 신원을 도용한 것으로 밝혀졌으며, npm 버전 논의로 갑자기 기술 전문가처럼 돌변했다.

출처

roman.pt — 원문 읽기 →