바이낸스 해킹은 코딩 과제에서 시작됐다. 올해 내내 똑같은 레포를 받았는데, 전부 악성코드였다.
The Binance theft started as a coding assignment. I’ve been sent the same kind of repo all year. All were exploits.
핵심 요약
바이낸스 해킹 사건의 배후인 '채용 과제 위장 악성코드'의 위험성과 개발 환경 보안의 중요성을 다룹니다.
- 바이낸스 해킹 — 채용 과제로 위장한 악성 레포를 통해 내부망에 침투함
- 위험한 채용 과제 — 면접용 레포는 100% 악성코드이거나 사기성임
- 보안 프로토콜 — 외부 코드는 반드시 격리된 VM에서 확인하고 실행해야 함
- StrangerDanger 플러그인 — Claude Code 사용 시 외부 코드의 실행 권한을 제한함
바이낸스는 이번 주, 10월 29일에 발생한 약 63억 달러 규모의 도난 사건이 사실 몇 달 전 가짜 채용 공고에서 시작됐다고 밝혔다. 로이터 통신이 NBC를 인용해 보도한 내용에 따르면, 지난 6월 지갑 담당 엔지니어 한 명이 변조된 코딩 툴을 설치했다. 바이낸스는 이를 잡아내고 기기를 교체한 뒤 자격 증명을 싹 다 갈아치웠다. 하지만 공격자는 이미 지갑 팀에 누가 있는지 다 파악하고 있었다.
9월에는 실제 채용 사이트를 통해 두 번째 엔지니어가 채용됐다. 인사 담당자 연기를 하는 사람과 화상 면접을 봤고, 존재하지도 않는 회사의 CEO라는 사람과 2차 면접까지 진행했다. 면접 끝에 그는 업무용 컴퓨터에 "코딩 과제"를 다운로드하라는 지시를 받았다. 바이낸스 측 설명으로는, 설치 과정에서 레포지토리가 실행되면서 정상적인 개발자 툴을 악성 코드가 심어진 버전으로 바꿔치기했는데, 엔드포인트 보안 제품이 이걸 전혀 잡아내지 못했다고 한다. 10월 20일, 그 기기와 내부 AI 툴을 이용해 다른 지갑 엔지니어 두 명에게까지 접근했다. 결국 10월 29일, 탈취한 자격 증명으로 컨테이너와 스크립트가 배포되면서 지갑이 털렸다. FBI는 북한 해커 조직을 범인으로 지목했지만, 평양은 이를 부인했다. 바이낸스는 고객 자산은 보상된다고 밝혔다.
이 중간 과정은 딱히 특별할 것도 없다. 그냥 흔해 빠진 '면접용 레포지토리' 수법이다.
나는 1월부터 나한테 들어온 것들을 전부 공개해 왔는데, 다행히 실행하기 전에 다 잡아냈다. 이건 익스플로잇 자체가 아니라 분석 글이고, 위험 요소는 다 제거해 뒀다: github.com/Ubuntu-Buddha/security-advisories
2026-01-27, W3GLFun. Web3 "기술 테스트"라면서 보낸 거다. 에러 핸들러가 앱 시작 시 페이스트 사이트에서 코드를 긁어와 Node 런타임 전체 권한으로 실행하게 만들어 놨더라. 내가 직접 클론해 봤다. npm run dev를 엉뚱한 폴더에서 입력하는 바람에 놈들 코드는 하나도 안 돌아갔다. GitHub Trust & Safety는 당일 바로 계정을 날려버렸다. 채용 플랫폼은 처음엔 위반 사항 없다고 하더니, 나중에야 사용자가 악성코드를 공유했을 수도 있다고 답장하더라. 플랫폼에서 "문제없음"이라고 했다고 안심하지 마라. 나중에 보니 똑같은 페이스트 호스트가 악성 npm 패키지에도 쓰이더라. 나는 이 패턴이 공개된 "전염성 면접(Contagious Interview)" 보고서와 일치한다고 봤다. 누가 운영하는지는 말 안 했다.
2026-01-29, Optu. 똑같은 수법이다. 페이로드 URL을 환경 변수에 숨겨두고 서버 시작할 때 실행되게 만들었다. 실행 전에 찾아냈다. 계정은 삭제됐다.
2026-01-30, 레포지토리 두 개. .vscode/tasks.json을 폴더 열자마자 실행되게 설정해 놨더라. 뭘 설치할 필요도 없다. VS Code나 Cursor로 프로젝트를 열기만 하면 바로 실행되는 거다. 실행 전에 찾아냈다. 둘 다 계정 삭제됨.
2026-01, 채용 페이지. 일반적인 애플리케이션 페이지처럼 꾸며놓고 가짜 "GAPI 업데이트" 실행 파일을 올려놨더라. 아무도 실행하기 전에 찾아냈다.
2026-10-15, GitLab 과제. 폰트인 척하는 파일에 16진수 페이로드를 쑤셔 넣고, 프로젝트 설정할 때 로드되게 만들었다. 원격으로 검토만 하고 실행은 안 했다. 당일 바로 GitLab이랑 Upwork에 신고했다. 내가 글 올릴 때까지도 결과는 대기 중이었다.
이건 바이낸스 사건이랑은 다른 샘플들이다. 내가 바이낸스 해킹을 찾아냈다거나, 한 조직이 이걸 다 만들었다고 주장하는 게 아니다. 핵심은 수법이 똑같다는 거다. "회사 여기 있고, CEO/인사 담당자 여기 있고, 레포지토리 여기 있으니 네가 실제로 일하는 컴퓨터에서 실행해 봐."
사실, 나한테 들어온 면접용 레포지토리 중에 익스플로잇이 안 들어있던 적은 단 한 번도 없었다. 100%가 해킹용이거나 사기였다.
여기서 규칙 두 가지가 나온다. 이게 전부다.
브라우저에서 읽을 수 있으면 절대 다운로드하지 마라. GitHub의 Raw 파일이나 로그인한 상태에서 보는 파일 뷰로 충분하다. git clone 하기 전에, npm install 하기 전에, "Open in Desktop" 누르기 전에 .vscode/tasks.json, package.json 스크립트, 그리고 텍스트 긁어와서 실행하는 모든 걸 확인해라. VS Code용은 폴더 열기만 해도 끝이다. 플랫폼에서 "문제없음"이라고 떴다고 해서 실행해도 된다는 뜻은 아니다.
