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

> Clean Markdown view of GeekNews topic #30526. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=30526](https://news.hada.io/topic?id=30526)
- GeekNews Markdown: [https://news.hada.io/topic/30526.md](https://news.hada.io/topic/30526.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2026-06-16T10:03:57+09:00
- Updated: 2026-06-16T10:03:57+09:00
- Original source: [roman.pt](https://roman.pt/posts/linkedin-backdoor/)
- Points: 2
- Comments: 1

## Topic Body

- 리크루터가 **링크드인 메시지**로 접근해 리드 엔지니어 채용을 명분으로 공개 GitHub 저장소 리뷰를 요청한 **소셜 엔지니어링 공격** 사례  
- 리뷰 요청 코드에는 **테스트 스위트로 위장한 백도어**가 숨겨져 있었으며, "deprecated Node modules 이슈를 확인해 달라"는 요청이 `npm install` 실행을 유도하는 **미끼**  
- 의심을 느껴 로컬 대신 **일회용 VPS**에서 **읽기 전용 에이전트**로 코드를 점검하자, 문제 파일이 수초 만에 탐지됨  
- 저장소 커밋과 리크루터 프로필 모두 **실존 인물의 신원을 도용**한 것으로, 각각 **실제 개발자와 예술 분야 저널리스트를 사칭**  
- 의심과 **보안 위생(security hygiene)**, 그리고 **읽기 전용 에이전트 활용**이 직접 코드를 읽는 것보다 효과적이었다는 **실질적 방어 교훈** 제시  
  
---  
  
### 접근 경위  
  
- 지난주 소규모 **크립토 스타트업** 리크루터로부터 **링크드인 메시지**를 받음  
  - 며칠에 걸쳐 몇 차례 메시지를 주고받았고, 리드 엔지니어가 필요한 **고장 난 proof-of-concept**를 설명  
  - 리뷰용으로 **공개 GitHub 저장소**를 전달하며 "**deprecated Node modules 이슈를 확인해 달라**"고 요청  
- 기존 코드베이스 리뷰 요청 자체는 흔한 일이지만, **위화감**을 느껴 한층 경계함  
  
### 점검 방식  
  
- 클론 후 의존성 설치 대신, **Hetzner**의 **일회용 VPS**를 띄워 그곳에서 저장소를 클론  
- **Pi**를 **읽기 전용 모드**로 지정, 파일 읽기 도구만 활성화한 채 실행  
  - 사용 명령: `pi --tools read,grep,find,ls`  
- 에이전트에 코드베이스 리뷰와 의심 항목 표시를 요청하자, **`app/test/index.js`** 에서 거의 즉시 멈춤  
  
### 백도어 구조  
  
- 저장소는 **React 프론트엔드 + Node 백엔드** 형태  
- 함정은 **약 250줄**의 `app/test/index.js`로, **테스트 스위트로 위장**됨  
- 내부에서 URL을 **조각으로 분할 조립**해 은닉  
  - protocol, domain, separator, path, token, subdomain 등 변수를 결합해 `https://rest-icon-handler.store/icons/77` 을 구성  
- **주석 처리된 테스트 더미** 사이에 페이로드가 숨겨져, **서버가 보내는 무엇이든 사용자 머신에서 실행**  
  - 페이로드는 **225번째 줄**에 위치  
  
### 트리거 메커니즘  
  
- 파일은 테스트 실행을 기다리지 않음  
  - `app/index.js`가 `const test = require('./test')`를 실행해 `app/test/index.js`를 로드·구동  
- `package.json`이 `app/index.js`를 **시작 단계에 연결**  
- 핵심은 **`prepare` 스크립트**로, npm은 `npm install` 후 `prepare`를 자동 실행  
  - 따라서 **의존성 설치만으로 백도어가 실행**됨  
- "deprecated Node modules 이슈 확인" 지시는 결국 **`npm install` 실행을 유도하는 미끼**  
- 샌드박스에서 페이로드를 실행해 **2단계 페이로드**를 관찰할 수도 있었으나, 서버가 건네는 코드를 실행한다는 증거만으로 중단  
  
### 첫 번째 도용된 신원  
  
- 커밋은 **실존 풀스택 개발자**의 이름·이메일로 작성됨  
  - 평범한 링크드인 프로필, 개인 웹사이트, 오랜 이력의 GitHub 계정 보유  
- 코드베이스를 물려받았다고 가장해 해당 개발자에게 문의  
  - 그는 해당 회사에서 일한 적 없으며, **이전에도 GitHub에서 사칭**당해 저장소가 내려간 적 있고, 이 저장소와 무관하다고 답함  
  - 본인도 이런 저장소들을 신고하는 중이라고 밝힘  
- 전체 커밋 이력 **39개 커밋**이 저장소를 한 번도 건드린 적 없는 한 개발자 명의로 귀속됨  
  
### 두 번째 도용된 신원  
  
- 리크루터 프로필은 **실존 예술 분야 저널리스트**의 것으로, 문화 분야 이력만 있고 기술적 요소는 전무  
- 설치가 안 된다고 응수하자, 비기술직 저널리스트가 **즉시 npm·Node 버전 전문가로 돌변**해 `npm install` 실행을 압박  
  
### 누구에게나 일어날 수 있음  
  
- 이런 공격을 들어왔고 HN에서도 읽었지만, 직접 표적이 되자 다소 허를 찔림  
  - 첫 메시지부터 의심했으나, 피곤하거나 급한 날이었다면 깊이 생각하기 전에 `npm install`을 실행했을 수 있음  
- 저장소 리뷰 요청을 담은 링크드인 메시지에는 **약간의 경계심과 보안 위생**이 필요함  
- **읽기 전용 에이전트**로 코드를 리뷰한 것이 직접 읽는 것보다 효과적  
  - 백도어는 **서툰 초보 코드처럼 위장**됐으나, 에이전트가 수초 만에 탐지  
- 저장소는 GitHub에, 리크루터는 LinkedIn에 신고했으나 현재까지 변화 없이 **코드는 여전히 게시 중**

## Comments



### Comment 59724

- Author: neo
- Created: 2026-06-16T10:03:58+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=48546294) 
- 작은 암호화폐 스타트업 리크루터가 고장 난 개념증명 저장소를 검토해 달라며 공개 GitHub 저장소를 보냈고, “deprecated Node modules issue”를 확인하라고 했다는 흐름이 **npm install 유도 피싱**이었음  
  `prepare` 스크립트가 `npm install` 뒤 자동 실행되어 서버가 내려주는 임의 코드를 로컬에서 실행하는 백도어였고, LinkedIn에서 이런 피싱을 당할 수 있다는 게 놀라울 정도로 심각해 보임
  - LinkedIn은 `$company`에서 일한다고 주장하는 사용자를 회사가 부인할 방법을 제공하지 않고, 프로필에만 적혀 있으면 **공식 회사 페이지**에 나타남  
    우리 회사도 같은 사기를 치는 가짜 리크루터들이 있었고, LinkedIn Premium에 관련 글도 많은 꽤 그럴듯한 가짜 프로필이었지만 실제 직원은 아니었음  
    신고를 아무리 해도 내려가지 않았고, 결국 LinkedIn에서 일하는 지인에게 술을 사주고 해결했지만 모든 스타트업이 그런 연결고리를 가진 건 아님
  - 친구라면 친구가 **NPM**을 쓰게 두지 말아야 함  
    지금처럼 사람들이 계속 털리는 걸 보면, PNPM 같은 도구를 쓰고 코드를 내려받는 과정에서 임의 코드 실행이 되는 가장 뻔하고 자주 악용되는 구멍을 막지 않는 게 이해되지 않음  
    코드를 다운로드하려는 순간 임의 코드를 실행하는 도구들은 이제 멈춰야 함
  - 이런 방식은 특히 2021~2022년 암호화폐/NFT 붐 때 **Upwork**에서 검증된 수법이었고, 어느 시점부터 암호화폐 프로젝트를 넘어 여러 범주로 넓게 퍼졌음  
    마지막으로 기억나는 건 Windows `.scr` 화면보호기 파일처럼 위장한 다운로드였고, LinkedIn까지 온 건 더 나쁜 단계임  
    플랫폼은 “일자리 증가”처럼 보일 테니 별로 신경 쓰지 않을 것 같고, Google이나 Meta 같은 광고 네트워크가 사기 광고를 크게 신경 쓰지 않는 것과 비슷함
  - 이메일을 캐내고 `bullshitpowershellladendoucument.pdf.docx` 같은 걸 보내는 피싱은 겪어봤지만, **LinkedIn DM**으로 바로 보내는 건 꽤 대담한 전략임
  - 최근 면접을 많이 보면서 명백한 사기꾼도 몇 번 만났는데, 내가 속을 만큼 멍청해 보여서가 아니라 이런 사기가 더 흔해졌기 때문이길 바람

- 이건 범죄가 맞을 텐데, 이런 일을 신고하고 도움받을 수 있는 사이버범죄용 **911** 같은 잘 알려진 창구가 왜 없는지 모르겠음  
  사회가 실제 위험을 따라잡고 지원망을 빨리 만들어야 하며, 조직범죄에는 조직적인 방어가 필요함
  - 안타깝게도 악성 사이버범죄자들은 “범죄에 신경 쓰지 않는 나라에서 범죄를 저지르기”라는 **한 가지 이상한 트릭**을 알고 있음
  - [https://www.ic3.gov](<https://www.ic3.gov>)  
    답장은 못 받을 가능성이 크지만, 미국 시민에게는, 어쩌면 누구에게나, 내가 아는 한 **인터넷 911**에 가장 가까운 곳임
  - 핵심 문제는 전 세계적으로 통하는 **글로벌 911**이 없다는 것임  
    두 번째 문제는 이런 사기를 만드는 데 드는 노력은 거의 0에 가깝지만, 잡고 기소하는 데는 큰 노력과 천문학적 비용이 든다는 비대칭성임
  - 냉소적으로 말하면, 사람들이 서로에게 저지르는 나쁜 일의 나무에서 이건 꽤 손대기 어려운 높은 가지에 있음  
    Microsoft 지원인 척하며 노인을 노리는 사기 전화와 비슷한 위치이고, 용의자를 잡기는 거의 불가능함  
    흔적을 아주 잘 숨기거나, 더 자주로는 서구인을 상대로 사기 치는 걸 정부가 신경 쓰지 않거나 심지어 묵인하는 나라에 살기 때문임
  - FBI에도 **IC3**가 있지만 사이버범죄 대응은 형편없고 사실상 쓸모없음  
    범죄를 신고해도 도와주거나 연락해 주지 않을 가능성이 큼

- 이건 이제 평범한 면접 과제와 불편할 정도로 가까움  
  누군가 저장소를 보내며 설치가 깨졌다고 하고 살펴봐 달라고 하는 상황은 자연스럽고, 많은 개발자가 피곤하거나 구직 중이면 깊게 생각하기 전에 `npm install`을 실행할 수 있음
  - 면접 맥락이라 더 나쁨  
    느려 보이고 싶지 않아서, 애초에 실행해도 되는지 물어보는 단계를 건너뛰게 됨

- “저장소는 GitHub에, 리크루터는 LinkedIn에 신고했지만 아직 아무것도 바뀌지 않았고 코드는 그대로 올라와 있다”니, 아, **Microsoft**
  - LinkedIn에서 CBC 캐나다 뉴스처럼 꾸민 광고를 본 적이 있음  
    캐나다 총리가 모든 캐나다인을 위한 암호화폐 투자 계획을 발표하는 가짜 영상으로 연결되고 가입 링크까지 있었는데, 신고했더니 조사 결과 정책 위반을 찾지 못했다는 답이 왔음
  - 이상하지 않나? Microsoft는 **LinkedIn, GitHub, NPM**을 모두 소유하고 있음  
    셋 다 보안이나 안정성 문제가 있고, Microsoft가 AI에 더 깊이 들어갈수록 나아지기는커녕 악화되는 것처럼 보임  
    회사 내부의 AI 생산성, 어떤 말로는 10배라던 그 생산성은 어디로 가고 있는지 모르겠음
  - DMCA 위반으로 신고했어야 함  
    그러면 바로 내려갔을 것임

- 같은 도메인을 여러 대상에게 쓰는 것 같음  
  3개월 전 Reddit 스레드에도 비슷한 내용이 있음: [https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_t...](<https://www.reddit.com/r/openclaw/comments/1rlet0h/someone_tried_to_social_engineer_me_via_linkedin/>)

- 왜 아직도 전 세계 모든 운영체제가 **npm**을 차단하지 않는지 이해가 안 됨  
  이 사람들은 절대 배우지 않을 것 같음
  - npm 자체와는 상관없음  
    이런 사기는 여러 기술로도 가능했고, 심지어 **Makefile**로도 먹혔을 것임

- Mac에 드디어 제대로 된 **가상화 프레임워크**가 생기면 좋겠음  
  1995년처럼 인터넷에서 보호 없이 무작위 스크립트를 내려받는 건 이제 꽤 지겨워졌음  
  낯선 사람을 만나고 그들의 물건을 내 컴퓨터 깊숙이 넣을 때는 보호 장비를 쓰는 걸 잊지 말아야 함
  - GitHub, AUR, NPM에서 무작위 `curl | bash` 스크립트를 실행하는 것도 똑같이 나쁘지만, 여기 많은 개발자는 여전히 이 나쁜 관행에 대해 의심스러운 가정을 갖고 있음  
    최근 몇 주간 돌아다닌 여러 작은 **Shai-Hulud**류 사건이 이게 얼마나 나쁜지 보여줌
  - Mac에는 이미 쓸 만한 방식이 있음  
    IntelliJ에서 npm 명령을 **Docker 컨테이너** 안에서 실행하도록 설정할 수 있음

- LinkedIn에서 받은 구인 제안들이 전부 너무 수상했음  
  플랫폼으로 지원하라거나, 자기소개 영상을 녹화하라거나, 코드 플랫폼 뒤에 있는 **보정용 코딩 테스트**를 풀라는 식이었음
  - 내 형제는 병 때문에 오래 실직했다가 LinkedIn에서 그럴듯해 보이는 “구인 제안”을 받았음  
    회사 노트북 보증금 명목으로 수표를 써 달라고 했는데, 겉으로 봐도 말이 안 되지만 오래 구직 중이라 절박했고 드디어 일자리를 얻었다고 정말 기뻐했음  
    장기 실직자는 충분한 저축이 있거나 이직하려는 재직자라면 절대 속지 않을 심각한 위험 신호도 지나칠 만큼 절박해질 때가 많음

- 요즘 대부분의 **NPM 패키지 작성자**가 이런 식으로 해킹당하는 것 아닌가?  
  axios 담당자도 LinkedIn을 통한 같은 접근에 당했던 것 같음
  - 자기 꾀에 자기가 넘어간 느낌임

- LinkedIn은 구인 공고 때문에만 쓰는데, 지난 몇 달 동안 쓸데없는 공고가 너무 많아졌음  
  **Ladders, Swooped** 같은 곳과 비슷한 회사들의 공고가 잔뜩 보이고, 이제 LinkedIn을 완전히 버릴 때가 된 것 같음
