북한의 코인 탈취: 바이낸스·바이비트·업비트

아프로·2026년 11월 1일

북한의 코인 탈취 표지

약 64억 달러, 우리 돈으로 약 8조 9천억 원이 2026년 10월 바이낸스 출금용 핫월릿에서 빠져나갔습니다. 주요 유출은 약 20분 만에 끝났고, 암호화폐 해킹 사상 최대 규모로 기록됐습니다. 그런데 블록체인의 암호는 하나도 깨지지 않았습니다. 2025년의 바이비트와 업비트 사고도 마찬가지였습니다. 공격자는 무엇을 장악했을까요?

사고 원인: 서명 경로 장악. 블록체인은 서명이 올바른지만 확인합니다. 그 앞단인 개발자 PC, 서명 화면, 서명 서버를 장악하면 정상 서명으로 보이는 악성 거래가 나갑니다.

바이낸스 사건은 공개 직후의 자료입니다. 바이낸스는 공식 원인을 발표하지 않았고, 수치는 2026년 10월 말 기준이라 바뀔 수 있습니다. 원화는 1달러=1,400원으로 환산했습니다.

한눈에 보기

용어 두 개를 먼저 정리합니다. 핫월릿은 인터넷에 연결된 출금용 지갑이고, 콜드월릿은 인터넷과 떨어뜨려 보관하는 지갑입니다. 멀티시그는 여러 명이 서명해야 출금되는 지갑입니다.

항목바이낸스바이비트업비트
발생2026-10-29 20:05 UTC(한국 10-30 05:05), 주요 유출 약 20분2025-02-212025-11-27 04:42 KST 탐지
피해약 63.6억~64억 달러(약 8.9조 원), 10개 체인약 15억 달러(약 2.1조 원), ETH 40만 개 이상445억 원(최초 540억 원으로 공지), 솔라나 계열 토큰
대상 지갑출금용 핫월릿이더리움 콜드월릿(Safe 멀티시그)에서 웜월릿으로 옮기던 중솔라나 핫월릿
공격 주체FBI가 북한 TraderTraitor로 확인(10-31)FBI가 북한 TraderTraitor로 지목(2025-02-26)당국이 라자루스 유력 검토, 최종 결론 미확인
동결·회수약 24억~28억 달러 동결(Tether·Circle 등, 출처별 차이)mETH 4,300만 달러, 2025-07 기준 8.68억 달러 이상 추적 불가23억 원
거래소 대응도난분의 90% 보전, 출금 재개 예고대출·매수로 약 44.7만 ETH를 확보해 손실을 메움, 10% 현상금회원 피해 전액 보전, 자산 콜드월릿 이전

무슨 일이 있었나

  • 2025-02-21 바이비트에서 약 15억 달러가 빠져나갑니다.
  • 2025-02-26 FBI가 북한 조직 TraderTraitor를 지목했다고 발표합니다.
  • 2025-11-27 업비트가 새벽 4시 42분에 솔라나 핫월릿의 이상 출금을 탐지합니다.
  • 2026-10-29 바이낸스 출금용 핫월릿에서 대량 출금이 시작됩니다.
  • 2026-10-31 FBI가 바이낸스 사건도 TraderTraitor의 소행으로 확인했다고 발표합니다.

세 사건의 경로를 원리 수준으로 그리면 아래와 같습니다.

개발자 PC, 서명 인프라, 서명 화면이 장악되고 서명자 승인을 거쳐 블록체인으로 거래가 나가는 흐름과 막을 수 있었던 네 지점

블록체인은 누가 왜 서명했는지 묻지 않습니다. 공격자는 그 앞단의 일반 시스템을 노렸습니다. 개발자 PC나 서명 서버를 장악하면 서명할 내용을 바꿀 수 있고, 서명자는 평소처럼 승인합니다. 블록체인은 그 거래를 정상 거래로 받아들입니다.

왜 뚫렸나

바이비트: 서명 순간 바뀐 내용 (Sygnia 중간 보고)

Safe는 바이비트가 쓰던 멀티시그 지갑입니다. Sygnia 중간 보고에 따르면 공격자는 Safe 개발자 PC를 장악한 뒤, Safe의 AWS S3(클라우드 파일 저장소)에 악성 JavaScript를 올렸습니다. 이 코드는 바이비트 거래일 때만 서명 순간 내용을 바꿨습니다.

서명자는 실제 내용을 모른 채 서명했습니다. 이것을 블라인드 서명(서명할 내용을 직접 확인하지 못한 채 하는 서명)이라고 합니다. 탈취 약 2분 뒤에는 S3의 파일을 정상 파일로 되돌려 흔적을 지웠습니다.

바이낸스: 위임 승인 50건 (TRM·Chainalysis 분석, 공식 원인 미발표)

바이낸스는 공식 원인을 아직 발표하지 않았습니다. 아래는 분석 회사 TRM과 Chainalysis의 분석입니다.

  • 이더리움 핫월릿이 EIP-7702 위임 승인 50건에 서명해, 공격자가 통제하는 컨트랙트에 권한을 넘겼습니다.
  • 위임이 유지돼 새로 들어온 입금도 반복해 빠져나갔습니다.
  • 다른 9개 체인에서도 같은 시간대에 서명 이체가 일어났습니다.

TRM은 여러 체인에 서명하는 핫월릿 서명 인프라가 장악됐을 가능성이 가장 크다고 봅니다.

업비트: 개인키 추론 취약점 자체 발견

업비트는 자체 점검에서 "개인키를 추론할 수 있는 취약점"을 찾아 고쳤다고 밝혔습니다. 다만 이 취약점과 해킹의 직접 연관은 밝히지 않았습니다. 공격 주체도 당국이 라자루스를 유력하게 검토했을 뿐 최종 결론은 확인되지 않았습니다(2026년 10월 말 기준).

탈취한 자산은 탈취 직후 수천 개 주소로 쪼개집니다. 스테이블코인은 발행사가 동결할 수 있어 가장 먼저 다른 자산으로 바뀝니다. 세탁 경로의 세부는 다루지 않습니다.

개발자 시점: 내 서비스였다면

서명 화면과 서명 서버는 거래소에만 있는 것이 아닙니다. 결제 화면, 관리자 페이지, 승인 버튼이 있는 내부 도구도 같은 구조입니다(이 문장은 사고 사실이 아닌 일반적인 설명입니다). 아래 코드는 사고 회사의 코드가 아니라 같은 실수를 보여 주는 일반 예시입니다. 주소와 해시는 모두 가짜 값입니다.

① 서명 화면의 외부 스크립트

위험한 모양입니다. 외부 CDN의 스크립트를 latest 주소로 불러오고, 무결성을 확인하지 않습니다. 그 파일이 바뀌면 서명 화면도 바뀝니다.

<script src="https://cdn.example.com/wallet-ui/latest/sign.js"></script>

<button onclick="onSign(tx)">
  서명</button>

고친 모양입니다. 버전을 고정하고 SRI(Subresource Integrity, 파일 해시를 미리 적어 두고 다르면 실행을 거부하는 브라우저 기능) 값을 붙였습니다.

<script src="https://cdn.example.com/wallet-ui/2.4.1/sign.js"
  integrity="sha384-FAKE0000AAAA"
  crossorigin="anonymous"></script>

<button onclick="onSign(tx)">
  서명</button>

버전을 올릴 때는 새 파일을 리뷰한 뒤 해시를 함께 바꿉니다. 프런트엔드 공급망은 거래소만의 문제가 아닙니다.

② 서명 서버의 서명 정책

화면을 지켜도 서명 서버를 빼앗기면 소용이 없습니다. 위험한 모양은 요청이 오면 무엇이든 서명합니다.

def handle(tx):
    # 요청이 오면 무엇이든 서명
    return hsm.sign(tx)

고친 모양은 서명 전에 정책을 확인합니다. 허용한 주소, 금액 한도, 허용한 함수일 때만 서명하고, 나머지는 사람의 승인 대기열로 보냅니다.

ALLOWED_TO = {"0xFAKE00A1", "0xFAKE00B2"}
MAX_AMOUNT = 10_000
ALLOWED_CALLS = {"transfer"}

def handle(tx):
    if (tx.to in ALLOWED_TO
            and tx.amount <= MAX_AMOUNT
            and tx.call in ALLOWED_CALLS):
        return hsm.sign(tx)
    # 그 밖의 요청은 사람이 승인
    return queue_for_human(tx)

위임처럼 허용 목록에 없는 호출은 자동으로 서명되지 않습니다.

막을 수 있었던 네 지점

  1. 핫월릿은 필요한 만큼만. 당장 출금에 필요한 만큼만 핫월릿에 두고 나머지는 콜드월릿에 둡니다.
  2. 서명 경로의 외부 코드 무결성 검증. 프런트엔드 스크립트와 클라우드에 올린 파일까지 검증했다면 두 사건의 공급망 공격을 막을 수 있었습니다.
  3. 서명 내용은 별도 기기로 확인. 바이비트 서명자가 하드웨어 지갑 화면에서 실제 거래 내용을 독립적으로 확인했다면 변조된 거래에 서명하지 않았을 것입니다.
  4. 출금 속도 제한과 자동 중지. 이상 출금이 보이면 몇 분 안에 멈춥니다. 분석 회사는 바이낸스도 비정상 거래(위임)를 정책으로 막고, 체인별 서명 인프라를 분리하고, 대량 출금에 속도 제한을 걸었다면 피해 범위가 줄었다고 봅니다.

같은 사고를 막는 점검 5줄

  • 핫월릿에는 출금에 필요한 만큼만 두고 있는가
  • 서명 화면의 외부 스크립트에 고정 버전과 무결성 값이 있는가
  • 서명 서버에 허용 주소·금액·함수 정책이 있고, 나머지는 사람이 승인하는가
  • 서명 내용을 별도 기기로 확인하는가(멀티시그 정족수도 함께 점검)
  • 이상 출금을 몇 분 안에 자동으로 멈출 수 있는가

개발자 PC도 점검 대상입니다. 가짜 채용 제안과 코딩 과제로 들어오는 사회공학을 교육하고, 서명 인프라에 접근하는 기기는 따로 둡니다. 이 수법은 10편에서 자세히 봅니다.

제재와 비용

이 사건들에는 과징금 같은 제재가 없습니다. 대신 동결과 회수가 시간 싸움이 됩니다.

  • 동결: 바이낸스 건에서는 Tether·Circle 같은 발행사가 약 24억~28억 달러를 동결했습니다. 출처마다 금액이 조금씩 다릅니다.
  • 보전: 바이낸스는 도난분의 90%를 보전하겠다고 밝혔습니다. 업비트는 회원 피해를 전액 보전했습니다.
  • 회수의 한계: 바이비트 건은 2025년 7월 기준 8.68억 달러 이상이 추적 불가로 남았습니다.

탈취 규모는 해마다 커지고 있습니다.

연도북한 탈취액비고
2024약 13.4억 달러 [추정]2025년 수치와 증가분으로 역산
202520.2억 달러(약 2.8조 원)Chainalysis, 당시 역대 최대, 전체 해킹 피해의 64%
2026(10월 말까지)약 75억 달러 이상 [추정]Elliptic 9월 말 약 12억 + 바이낸스 63.6억, 공식 연간 집계 전

이 글은 투자 조언이나 법률 자문이 아닙니다.

정리

  • 세 사건 모두 블록체인 암호는 그대로였습니다. 장악된 곳은 개발자 PC, 서명 화면, 서명 서버였습니다.
  • 북한의 공격은 암호를 깨는 것이 아니라 사람과 서명 경로를 노립니다. 그 앞단은 일반 IT 보안의 영역입니다.
  • 서명 화면은 고정 버전과 무결성 값으로, 서명 서버는 허용 목록 정책으로, 서명자는 별도 기기 확인으로 지킵니다.

더 깊게

  • 인프런 「백엔드 개발자를 위한 서버 보안 실무」 6-4 공급망 공격과 방어: SBOM, 서명, GitHub Actions 고정
  • 같은 강의 3-6 MFA와 세션 탈취 대응: 피싱에 강한 인증과 토큰 바인딩
  • 같은 강의 6-7 클라우드 계정이 진짜 자산이다: IAM 최소 권한과 감사 로그
  • velog ca-chains 시리즈 21편: 공급망 서명
  • 10편: 코인 해킹 13건을 시대별로 이어 봅니다.

보안을 더 알고 싶다면

오늘 본 사고의 원인은 대부분 서버와 코드의 기본기에서 막을 수 있는 것들이었습니다. 직접 손으로 막아 보고 싶다면 이런 강의도 있습니다.

백엔드 개발자를 위한 서버 보안 실무: 해킹 방어부터 정보유출 방지까지

  • 서버를 공격하는 흐름을 로그로 보고, 내 서버와 Spring·Express 코드에서 직접 막아 봅니다.
  • SSH 하드닝, 인젝션, 인증·인가, 시크릿과 개인정보 보호, 침해사고 첫 한 시간까지 8개 섹션 54개 수업입니다.
  • 이 글과 이어지는 수업: 6-4 공급망 공격과 방어: SBOM, 서명, GitHub Actions 고정 · 3-6 MFA와 세션 탈취 대응: 피싱에 강한 인증과 토큰 바인딩 · 6-7 클라우드 계정이 진짜 자산이다: IAM 최소 권한과 감사 로그

출처와 확인 날짜

수치는 2026년 10월 말 기준 공개 보도·발표입니다. 진행 중인 사건은 바뀔 수 있고, 이 글은 법률 자문이 아닙니다. 원인은 분석 회사 자료 기준이고 바이낸스 공식 원인은 미발표입니다. 원화는 1달러=1,400원 환산이며, 투자 조언이 아닙니다.


이전 글 AI가 바꾼 공격: 2026 금융권 연쇄 해킹과 AI 활용 해커
다음 글 코인 해킹 12년 연대기: 핫월릿에서 서명 경로까지
시리즈 전체 목록 해킹 사고 해부 전체 목록

profile
고인물 개발자(OG)

0개의 댓글