128비트가 아닌 72비트: 콜드카드 지갑을 턴 엔트로피 격차

코인카이트 공지: 유효 엔트로피가 약 72비트로 낮아져 공격자가 오프라인에서 시드를 무차별 대입할 수 있었습니다.

By Nestree 38 min read
72 bits, not 128: the entropy gap draining Coldcard wallets

비트코인의 가장 강력한 셀프 커스터디 약속, 즉 키를 오프라인에서 생성하고 인터넷에 연결된 기계에 한 번도 닿지 않게 한다는 약속은 설계된 그대로 지켜졌습니다. 문제는 그 키의 바탕이 된 무작위성이었습니다.

72비트와 128비트: Coinkite 권고문이 실제로 말하는 것

Coldcard 사건은 해킹이 아니라 엔트로피 실패입니다. 2021년 3월 1일 적용된 펌웨어 변경으로 기기의 하드웨어 난수 생성기 호출(ckcc.rng_bytes, STM32 RNG 읽기)이 ngu.random.bytes로 바뀌었고, 빌드 설정의 폴백이 공개된 하드코딩 상수로 시드된 소프트웨어 의사난수 생성기로 조용히 대체했습니다 . 그 결과 영향을 받은 펌웨어에서 생성된 시드는 Mk4, Mk5, Q에서 유효 엔트로피가 약 72비트에 그쳤고, Mk2와 Mk3에서는 약 40비트까지 낮아졌습니다. 이는 BIP-39 시드의 설계 목표인 128비트에 한참 못 미치는 수준입니다 . 이 정도라면 결함을 파악한 누구나 오프라인에서 시드를 추측할 수 있습니다.

빠른 요약: 2021년 3월 Coldcard 펌웨어 변경으로 하드웨어 RNG가 결정론적 소프트웨어 PRNG로 바뀌면서 시드 엔트로피가 128비트 목표 대비 Mk4/Mk5/Q에서는 약 72비트, Mk2/Mk3에서는 약 40비트로 줄었습니다. 공격자들은 2026년 7월 30일부터 지갑을 비우기 시작했고, TRM Labs는 약 1,816 BTC, 당시 약 1억 1,600만 달러가 탈취된 것으로 추적했습니다.

Coinkite는 2026년 7월 30일 "COLDCARD Mk3 Seed Generation Warning"이라는 권고문을 게시했고, 2026년 8월 1일 오후 2시 35분(EDT)에 마지막으로 업데이트했습니다. 이 권고문은 근본 원인을 시드 생성 과정의 제한된 엔트로피 실패로 설명하고, 조사가 진행 중이라고 확인했습니다 . 수정된 펌웨어는 2026년 7월 31일 배포되었습니다 . 노출 기간은 2021년 3월부터 2026년 7월까지, 누구나 읽을 수 있는 오픈소스 코드 안에서 5년 넘게 이어졌습니다.

무엇보다 먼저 짚어야 할 두 가지가 있습니다. 보안 요소는 침해되지 않았고, 어떤 기기에도 원격 접근이나 물리적 접근이 필요하지 않았습니다 . 시드는 생성되는 순간부터 약했고, 소유자가 의도한 그대로 콜드 스토리지 안에 있었습니다. 이 차이가 이후의 모든 대응을 결정합니다. 펌웨어를 패치해도 결함 상태에서 이미 생성된 시드는 복구되지 않으며, TAPSIGNER, OPENDIME, SATSCARD는 서로 다른 코드베이스를 사용하기 때문에 영향을 받지 않습니다 .

RNG는 어떻게 망가졌나: 2021년 3월 펌웨어 마이그레이션의 내부

결함은 2021년 3월 1일자 단일 커밋으로 거슬러 올라간다. 이 커밋은 STM32 하드웨어 난수 생성기를 직접 읽던 Coldcard의 시드 생성 호출 ckcc.rng_bytes를 MicroPython 마이그레이션 중 새로 도입한 libngu 라이브러리를 거치는 ngu.random.bytes()로 교체했다 . 겉으로는 리팩터링이었다. 그러나 실제로는 libngu 내부의 빌드 설정 불일치 때문에 호출이 칩의 진짜 난수 생성기에서 벗어나, 공개된 하드코딩 상수로 시드된 소프트웨어 의사난수 생성기로 조용히 우회됐다고 TRM Labs가 공개한 포렌식 재구성은 설명한다.

그 메커니즘은 전형적인 C 전처리기 함정이다. 프로덕션 빌드는 MICROPY_HW_ENABLE_RNG를 0으로 정의했다. 매크로는 존재했지만, 그 값은 “꺼짐”을 뜻했다. 그런데 libngu 코드는 매크로가 정의되어 있는지만 확인했고, 실제로 활성화되어 있는지는 확인하지 않았다. 컴파일러 입장에서는 두 조건이 모두 참으로 읽혔고, 그래서 빌드는 경고도 오류도 내지 않았다. rng_get()은 STM32 TRNG가 아니라 MicroPython의 “Yasmarang” 소프트웨어 PRNG에 깔끔하게 바인딩됐고, 그 결과 바이너리는 모든 자동 검사에서 정확한 바이너리와 똑같아 보였다.

Yasmarang은 암호학적 생성기가 아니며, Bitcoin 지갑의 시드를 만드는 용도로 의도된 적도 없다. 영향을 받은 기기에서는 칩의 고유 ID와 타이머 레지스터에서 상태를 가져왔는데, 이 값들은 기기별로 영구히 고정되어 있거나 범위가 좁고 부분적으로 관측 가능하다. Coinkite는 STM32 하드웨어 TRNG 자체가 런타임에 실패한 적은 없다고 명확히 밝혔다 . 실리콘은 정상적으로 작동했다. 다만 아무도 그것을 호출하지 않았을 뿐이다.

이 차이가 구형 라인에서 엔트로피 붕괴가 왜 그렇게 심각했는지를 설명한다. Coinkite의 자체 업그레이드 문서에 인용된 Block의 독립 엔지니어링 분석에 따르면, Mk2/Mk3 출력은 세 가지 입력이 고정되면 완전히 결정론적일 수 있다. 기기 고유 ID, 생성 순간의 타이머 상태, 그리고 이전 RNG 호출 이력이다. 그러면 시드를 재구성하는 일은 128비트 키 공간을 뒤지는 문제가 아니라 작은 매개변수 공간을 검색하는 문제로 축소된다. Coldcard의 펌웨어 업그레이드 페이지는 그 결과를 펌웨어 4.0.1부터 4.1.9까지에서 생성된 Mk3 시드의 엔트로피가 “약 40비트에 불과할 정도로 치명적으로 낮았다”고 수치화한다 .

신형 하드웨어에서는 다른 방식으로, 그리고 덜 치명적으로 저하가 일어났다. Mk4, Mk5, Q는 생성 경로에 보안 요소의 엔트로피를 섞기 때문에 Mk2/Mk3에 적용되는 순수 결정론 결과는 깨진다. 하지만 재시드 단계는 그 보안 요소 자료 중 4바이트만 유지했다. 4바이트는 32비트이고, 이는 다른 조건이 알려져 있을 때 구분 가능한 출력 스트림 수를 대략 2^32개로 제한한다. Coinkite가 Mk4/Mk5/Q 엔트로피가 128비트 설계 목표 대비 “약 72비트까지 낮았을 수 있다”고 설명한 배경이 바로 이 산술이다 .

이 실패에는 이 기기를 넘어 일반화할 수 있는 구조적 특징 두 가지가 있다:

  • 실패는 구조적으로 조용했다. 잘못 설정된 기능 플래그는 깨끗한 빌드, 유효한 서명, 그럴듯해 보이는 BIP-39 단어를 생성하는 기기를 만들어냈다. 충돌도, 오류 화면도 없었고, 사용자가 강한 시드와 약한 시드를 구분하기 위해 검사할 수 있는 출력도 없었다.
  • 난수성에는 자체 테스트가 없다. 서명 버그나 디스플레이 버그와 달리, 저하된 RNG는 대충 봐서는 무기한 정상처럼 보이는 출력을 만든다. 이 결함은 펌웨어 v4.0.1에 실려 나갔고 2026년 7월까지 살아남았다. 5년이 넘는 기간이었다 .

Coldcard가 공개한 펌웨어 소스는 의도된 경로가 어떤 모습인지 보여준다. 표준 새 지갑 흐름은 32바이트의 난수를 생성하고, 이를 해시한 뒤, 승인을 위해 단어 목록을 표시한다. 반면 Add Dice Rolls 경로는 사용자가 입력한 각 주사위 굴림을 기기 엔트로피와 함께 해시에 접어 넣는다 . 바로 이 두 번째 경로 때문에 영향을 받은 기기 중 일부는 결국 안전한 시드를 만들 수 있었다. 컴파일러가 조용히 빼앗아 간 난수성을 주사위가 제공했기 때문이다.

어떤 Coldcard 펌웨어 버전이 노출되었나?

노출 여부는 현재 설치된 버전이 아니라, 시드가 생성될 당시 실행 중이던 펌웨어 버전으로 판단합니다. Mk2와 Mk3 라인에서는 4.0.1부터 4.1.9까지의 모든 빌드가 영향을 받으며, 유효 엔트로피는 Coinkite의 업그레이드 문서가 “critically low at just ~40 bits”라고 설명할 정도로 낮습니다 . Mk4, Mk5, Q 기기는 더 완만한 구간에 속하지만, 128비트 설계 목표 대비 엔트로피가 약 72비트까지 낮아질 수 있습니다 . 펌웨어 v4.0.0은 2021년 3월 17일에 탑재되어 출하됐지만 서명된 공개 바이너리로 배포된 적은 없기 때문에, 영향을 받는 범위는 4.0.1부터 시작합니다 .

기기 라인취약한 펌웨어 범위수정된 버전유효 엔트로피 추정치
Mk2 / Mk34.0.1 – 4.1.9 (포함)4.2.0 이상~40비트
Mk4 / Mk5 (standard)5.6.0 이전 전체5.6.0 이상~72비트
Mk4 / Mk5 (Edge)6.6.0X 이전 전체6.6.0X 이상~72비트
Q (standard)1.5.0Q 이전 전체1.5.0Q 이상~72비트
Q (Edge)6.6.0QX 이전 전체6.6.0QX 이상~72비트
TAPSIGNER / OPENDIME / SATSCARD영향 없음n/a별도 코드베이스

수정 빌드는 2026년 7월 31일에 배포됐습니다. Coinkite가 보안 권고를 공개한 지 하루 뒤이자, 첫 번째 자금 이동이 시작된 지 대략 하루 뒤였습니다 . 따라서 노출 기간은 2021년 3월부터 2026년 7월까지, 즉 5년이 조금 넘는 기간이며, 이 기간 동안 기기 자체 난수만으로 생성된 모든 시드는 이 결함을 물려받았습니다 .

표를 읽을 때는 세 가지 실무상 조건을 중요하게 봐야 합니다.

  • 카드 제품은 범위 밖입니다. TAPSIGNER, OPENDIME, SATSCARD는 별도 코드베이스를 사용하며 영향을 받은 라이브러리를 거치지 않았기 때문에, Coinkite는 이 제품들을 영향 없음으로 분류합니다 .
  • 주사위 굴림은 버전보다 우선합니다. 취약한 펌웨어에서 생성된 시드라도 Add Dice Rolls를 통해 공정하고 독립적이며 비공개로 굴린 주사위 결과를 최소 50회 입력했다면, 이 RNG 문제만으로는 위험하다고 보지 않습니다. 99회 이상이면 대략 256비트에 해당하는 엔트로피를 더합니다 .
  • 강력한 BIP-39 패스프레이즈는 공격 난도를 높입니다. 고유한 25번째 단어는 시드 자체가 약하더라도 오프라인 재구성을 상당히 어렵게 만들지만, Coinkite는 이를 시드 재생성의 대체 수단으로 제시하지는 않습니다 .

초기 설정 당시 기기에 어떤 펌웨어가 있었는지 기억하지 못하는 보유자는 해당 시드를 영향을 받은 것으로 간주해야 합니다. Coldcard의 업그레이드 페이지에는 라인별 현재 서명 릴리스가 나와 있으며, 기기 화면에서 설치된 버전을 확인해도 지금 어디에 있는지만 알 수 있을 뿐 시드가 어디에서 비롯됐는지는 알 수 없습니다 .

현재까지 피해 규모: 네 차례에 걸쳐 3,800만 달러에서 1억 3,000만 달러 이상

Coldcard 시드 생성 결함으로 확인된 도난 총액은 아직 최종 확정되지 않았지만, 공개된 포렌식 추정치는 2026년 7월 30일부터 여러 차례에 걸쳐 유출된 규모가 대략 1,083 BTC에서 약 2,000 BTC 사이, 금액으로는 약 7,000만 달러에서 약 1억 3,000만 달러에 이른다는 범위로 모인다 . 이는 서로 경쟁하는 최종 수치가 아니다. 추적 범위가 넓어지는 과정에서 나온 일련의 스냅샷이며, 이를 서로 다른 주장처럼 읽으면 사고 규모가 왜곡된다.

처음 공개된 수치는 최초 대량 유출만 다뤘다. 7월 30일 15~25분 사이에 단일 서명 지갑 약 500개에서 약 594 BTC, 약 3,830만 달러가 빠져나갔다는 내용이었다 . 이후 Block의 엔지니어링 분석은 이보다 앞선 관련 거래 695건에서 추가로 488.1 BTC가 이동한 사실을 연결했고, 합산 규모는 약 1,082.6 BTC로 올라갔다 . Galaxy Research도 독립적으로 7월 30일 41분 동안 완전히 비워진 주소 1,196개에서 1,082.65 BTC, 약 7,020만 달러가 전액 유출됐다고 기록했다 .

단계 / 차수유출 BTC달러 추정액주소출처
1차 유출(2026년 7월 30일, 15~25분간 대량 이동)약 594.5 BTC약 3,830만 달러약 500개CoinDesk
1차 유출 + 이전 관련 거래(Block 분석)약 1,082.6 BTC약 7,000만 달러관련 거래 695건TRM Labs
7월 30일, 41분 구간(Galaxy Research)1,082.65 BTC약 7,020만 달러완전히 비워진 주소 1,196개Decrypt
의심되는 세 차례 유출(Galaxy 업데이트)1,367.05 BTC약 8,860만 달러4,585개Bitcoin Magazine
네 차례 유출(TRM Labs 포렌식 총액)약 1,816 BTC약 1억 1,600만 달러5,200개 이상TRM Labs
상한 클러스터 추적(최대 15개 클러스터)약 2,000 BTC약 1억 3,000만 달러명시되지 않음Decrypt

이후 Galaxy 업데이트는 의심되는 유출 횟수를 세 차례로 늘렸고, 총 4,585개 주소에서 1,367.05 BTC, 약 8,860만 달러가 빠져나간 것으로 집계했다. Galaxy의 Alex Thorn은 관련 비트코인이 외부로 이동하지 않고 공격자가 통제하는 주소에 그대로 남아 있었다고 설명했다 . TRM Labs의 포렌식 보고서는 더 나아가, 네 차례의 뚜렷한 유출로 5,200개가 넘는 주소에서 약 1,816 BTC, 약 1억 1,600만 달러가 빠져나갔다고 설명했다. 여기에는 금요일 정오부터 토요일 아침까지 이어진 후속 유출에서 1,912개 주소로부터 208 BTC가 빠져나간 사례도 포함됐다 . Decrypt가 인용한 상한 추적에서는 공격자 클러스터가 최대 15개, 총액이 약 2,000 BTC, 약 1억 3,000만 달러에 이를 수 있다고 언급했다 . 이는 8월 4일 TechCrunch가 주요 보도에서 사용한 “1억 3,000만 달러 이상”이라는 표현과도 부합한다 .

7,000만 달러와 1억 3,000만 달러 사이의 차이는 분석가 간 의견 불일치라기보다, 각 팀이 작성 시점에 몇 개의 클러스터를 귀속했는지의 차이에 가깝다. 여러 주체가 같은 취약점을 동시에 악용한 것으로 보인다. Galaxy는 최소 12명의 서로 다른 공격자가 같은 주소 공간을 두고 경쟁하듯 움직였다고 파악했고, TRM의 자체 분석도 “네 차례 유출에서 거래 구성 방식이 서로 달라, 둘 이상의 공격자가 관여했을 수 있음을 시사한다”고 언급했다. 다만 활동 주체를 특정하지는 않았다 .

현재까지의 자금 세탁 행동은 전문 조직의 정교한 움직임이라기보다 탐색적인 양상에 가깝다. Wasabi로 64.9 BTC가 한 차례 입금됐고, 8월 4일 Tornado Cash로 200 ETH가 전송됐다. TRM은 이 패턴이 북한 연계 TraderTraitor 클러스터 같은 조직적 그룹의 행태와는 맞지 않는다고 본다 . 이는 회수 가능성에도 중요하다. 식별된 공격자 주소에 여전히 남아 있는 코인은 추적 가능하며, 그중 일부가 규제권 거래소로 이동할 경우 거래소가 동결 대상으로 삼을 수 있기 때문이다.

위의 모든 수치에는 한 가지 단서가 붙는다. Coinkite의 자체 권고문은 확인된 도난 BTC 총액을 공개하지 않았고, 조사가 계속 진행 중이라고 밝혔다. 즉 보도 시점에 회사는 유출과 엔트로피 결함 사이의 직접적 인과관계를 공식 확인하지 않은 상태였다 . 제3자 포렌식은 시드 생성 경로를 강하게 가리키지만, 벤더의 확인과 분석가의 추론 사이에는 실제 간극이 있다. 같은 기간 발생한 기회주의적 소규모 절도가 이 총액에 포함돼야 하는지 불확실한 이유도 여기에 있다.

펌웨어 업데이트만으로는 코인을 지킬 수 없는 이유

패치된 Coldcard 펌웨어를 설치해도 업데이트 이후에 생성한 시드만 보호됩니다. 이미 낮은 엔트로피로 생성된 복구 구문은 고칠 수 없습니다. Coinkite는 권고문과 펌웨어 업그레이드 페이지에서 이를 직접 밝히며, 수정 사항은 앞으로의 시드 생성 경로를 바꾸는 것이고 약한 시드는 영원히 약한 상태로 남는다고 반복해 설명합니다 . 2021년 3월부터 2026년 7월 패치 전까지 Coldcard에서 시드를 만든 사람은 수정된 펌웨어에서 완전히 새로운 복구 구문을 생성하고, 그 구문에서 파생된 주소로 자금을 모두 이전해야 합니다.

그 이유는 정책이 아니라 산술입니다. 엔트로피 부족은 생성 순간에 이미 박혀 있었습니다. Coinkite는 펌웨어 4.0.1부터 4.1.9까지의 Mk3 시드를 대략 40비트로, Mk4/Mk5/Q 시드를 128비트 설계 목표 대비 최저 약 72비트 수준으로 봅니다 . 새 펌웨어는 이미 파생되고, 주소로 공개되고, 많은 경우 온체인에서 사용된 키에 무작위성을 소급해서 더할 수 없습니다.

따라서 노출 여부는 현재 장치의 소유자나 지금 실행 중인 펌웨어가 아니라, 비밀값이 생성될 당시 활성화되어 있던 펌웨어 버전을 따라갑니다. 이 때문에 피해 범위는 원래 Coldcard에 그대로 남아 있는 지갑이라는 obvious한 경우보다 더 넓습니다. 영향을 받은 장치가 같은 무작위성 경로로 만들어 낸 것은 모두 의심 대상으로 봐야 합니다:

  • 종이 지갑 또는 내보낸 개인 키: 취약한 펌웨어의 Coldcard에서 출력하거나 적어 둔 키.
  • Seed XOR 조각: 마스킹된 구성 요소가 기반 시드의 약점을 그대로 물려받는 경우.
  • 임시 시드: 단기 사용이나 분리된 용도로 장치에서 만든 시드.
  • 장치 생성 비밀번호: 같은 난수 루틴으로 만들어진 비밀번호.
  • 나중에 다른 곳으로 가져온 시드: 동일한 구문을 Trezor, Ledger, 모바일 지갑, 멀티시그 정족수로 내보내거나 복원해도 고쳐지지 않습니다. 결함은 구문 자체에 있기 때문입니다.

시드를 보호해 준 조건은 두 가지였습니다. 첫째는 주사위 엔트로피입니다. 영향을 받은 펌웨어는 장치 자체의 무작위성과 Add Dice Rolls를 통해 입력된 모든 주사위 값을 함께 해시했으며, Coinkite는 공정하고 독립적이며 비공개인 주사위 50회가 최소 128비트를 제공하고, 99회 이상은 대략 256비트를 제공한다고 봅니다. 이 기준을 충족한 시드는 이 결함만으로는 위험한 것으로 간주되지 않습니다 . 같은 엔트로피 계산은 주사위 경로에 대한 Coldcard 공개 펌웨어 소스에도 나타납니다 . 둘째는 강력하고 고유한 BIP-39 패스프레이즈, 이른바 25번째 단어입니다. 이는 독립적인 장벽으로 작동해 오프라인 재구성을 훨씬 어렵게 만듭니다 . 그래도 Coinkite는 여전히 이전을 권고합니다. 패스프레이즈는 공격자의 비용을 높일 뿐, 그 아래에 있는 약한 시드를 고치는 것은 아니기 때문입니다.

권고문이 제시한 순서도 이전을 결정하는 것만큼 중요합니다. Coinkite는 먼저 업데이트하고, 새 시드를 생성하고, 백업을 기록해 검증하고, 장치 화면에서 수신 주소를 확인하고, 소액 테스트 거래를 보낸 뒤, 나머지를 옮기라고 안내합니다. 또한 "복구 과정에서의 실수가 취약점 자체보다 더 큰 피해를 일으킬 수 있다"고 경고합니다 . 불안한 상태에서 서두르는 이전은 그 자체로 손실 경로가 됩니다.

공격받는 셀프 커스터디: 비트코이너들은 무엇을 말하나

콜드카드 사건은 비트코인 커뮤니티가 이미 결론냈다고 생각했던 논쟁을 다시 열었다. 현재 개인 보유자들이 실천하는 방식의 셀프 커스터디가 현실적으로 안전한가라는 문제다. 비판의 핵심은 하드웨어 지갑이 공격자를 막지 못했다는 데 있지 않다. 공격자는 어떤 기기에도 손대지 않았다. 문제는 5년 전 조용히 바뀐 코드 경로 하나가 공개된 모든 모범 관행을 따른 사용자들까지 무너뜨렸다는 점이다. 팟캐스터 가이 스완은 이를 비트코인 역사상 가장 지식이 많고 제대로 보안을 갖춘 비트코이너들이 입은 최악의 타격이라고 표현했는데, 이 사건이 피싱 대량 공격이나 거래소 실패와 다르게 받아들여진 이유를 잘 보여준다.

가장 날카로운 제도권 비판은 자산운용사 쪽에서 나왔다. ARK Invest 디지털자산 리서치 디렉터 로렌조 발렌테는 소비자들이 "counterparty risk for software risk, hardware risk, supply-chain risk, phishing risk, backup risk"를 맞바꿨다고 주장했다 . 그는 이 교환이 명백히 유리하다기보다 충분히 검토되지 않았다고 본다. Amicus 공동창업자 데이비드 로런스는 결론을 더 노골적인 자산 배분 언어로 말했다. "I'm safer to just buy IBIT." 자금 흐름도 그의 말을 반박하지 않았다. 해킹 이후 며칠 동안 미국 현물 비트코인 ETF에는 약 6억 2,000만 달러의 순유입이 있었고, 8월 7일에는 주간 총액 7억 5,000만 달러 이상 가운데 약 1억 200만 달러가 들어왔다. 이후 하루 1억 4,460만 달러 순유출로 반전되기 전까지의 흐름이었다 .

하지만 가장 치명적인 반론은 셀프 커스터디 업계 내부에서 나왔다. Casa CEO 닉 뉴먼은 주사위 굴리기 완화책이 소비자 표준이 될 수 없다고 일축했다. "You just can't ask people to roll dice to be secure with your self custody" . Coinkite 자체 권고가 최소 128비트의 추가 엔트로피 기준으로 독립적인 비공개 주사위 굴리기 50회를 제시한다는 점을 감안하면 날카로운 인정이다 . 결함이 알려지기 전에 그 방법을 썼던 극소수 소유자에게만 효과가 있는 완화책이라면, 실제로는 사용자 실패가 아니라 설계 실패다. 그에 따른 결론도 분명하다. 지속적인 경계 없이 안전한 수동적 보안은 대부분의 보유자에게 아직 닿기 어렵다.

"AI-assisted code review can now find latent bugs at a speed that is outpacing even industry's most seasoned experts... if your firmware is open-source or has ever been public, assume it's already being read by attackers and defenders alike," — Rodolfo Novak (NVK), CEO, Coinkite (source: Bitcoin Magazine)

노박은 공개적으로 사과하며 회사가 "heartbroken" 상태라고 했고, "full accountability for the firmware bug"를 지겠다고 밝혔다. 또한 피해자들에게 각자의 손실과 거래 데이터에 맞춘 서면 사고 요약을 제공해 경찰 신고, 보험 청구 또는 민간 조사에 활용할 수 있도록 하겠다고 약속했다 . 하지만 책임 인정이 자금을 되돌려 주지는 않는다. 160만 달러를 잃은 피해자 조너선 굿맨은 자신의 시드를 공유한 적이 없고, 기기들이 인터넷에 연결된 적도 없으며, 모든 것을 금고에 보관했다고 썼다. "None of it mattered" . 피해를 키운 것은 공개 기간 자체가 공격 표면이 됐다는 점이다. 시간 압박 속에서 권고 내용을 확인하려는 보유자들은 권고문 사칭의 이상적인 표적이 된다. 그래서 모든 이전 지침은 이메일이나 다이렉트 메시지로 받은 링크가 아니라 Coinkite의 자체 도메인에서 직접 읽어야 한다.

솔직히 말하면 어느 진영도 이긴 것이 아니다. 셀프 커스터디는 거래상대방 리스크를 없앴고, 온체인 대응이 보여줬듯 수십만 개의 코인을 몇 시간 안에 방어적으로 이동할 수 있게 했다. 규제기관도, 출금 대기열도, 허가도 필요 없었다. 동시에 전체 실패 영역을 한 업체의 빌드 설정 하나에 집중시켰다. 두 말은 동시에 참이다. 어느 한쪽만이 전부인 것처럼 다루는 순간, 보유자들은 다음 사건에서 잘못된 크기의 위험을 떠안게 된다.

비트코인은 정말 이동하고 있나? 온체인 여파를 제대로 읽는 법

이번 사건에서 검증 가능한 온체인 신호는 수십만 BTC 초반 규모의 장기 보유자 이동이지, 시스템 전반의 탈출은 아니다. Casa CEO 닉 뉴먼이 전달하고 Decrypt가 보도한 Checkonchain 데이터에 따르면, 155일 이상 휴면 상태였던 지갑에서 약 233,000 BTC가 이동했다. 이는 최근 장기 보유자 공급량 기록 대비 1.38% 감소이며, 그중 약 22,000 BTC가 거래소로 들어갔다 . 기준으로 삼아야 할 숫자는 이것이다. 7월 30일 권고 이후 며칠 동안 콜드 스토리지에서 나온 코인들이며, 대부분은 매도된 것이 아니라 다시 안전하게 보관된 것이다.

같은 주를 두고도 측정 프레임워크에 따라 총액이 달라진다. 그래서 이번 여파가 쉽게 오독됐다. CryptoSlate가 인용한 CryptoQuant 데이터는 오래된 UTXO 연령대에서 77,402 BTC가 이동했다고 집계했다. 여기에 7월 31일 1 BTC 미만 출력에서 39,600 BTC가 움직였는데, 이는 2022년 11월 이후 해당 집단의 최대 일일 규모였고, 10 BTC 미만 거래소 입금도 7,300 BTC였다 . 일일 활성 주소는 7월 30일 약 645,000개에서 다음 날 거의 100만 개로 늘어 2024년 12월 10일 이후 최고치를 기록했다 . 오래된 UTXO 연령대 회계와 휴면 기간 기반 장기 보유자 회계는 같은 지표가 아니며, 둘 다 “매도”와도 바꿔 쓸 수 없다.

이 숫자들을 다룰 때는 두 가지를 조심해야 한다.

  • 달러 기준 헤드라인 총액은 검증되지 않았다. 널리 퍼진 “150억 달러 규모 셀프 커스터디 탈출”이라는 프레이밍은 발행 시점 기준으로 출처가 명시된 1차 수치가 없다. Glassnode나 Checkonchain이 출처와 방법론을 문서화한 숫자를 내놓기 전까지는, 약 233,000 BTC라는 휴면 관측치와 별개로 봐야 한다.
  • 이동은 청산이 아니다. 이동한 코인 중 거래소에 도달한 것은 약 22,000 BTC뿐이었다 . 또한 Casa는 이동한 사용자 중 의미 있는 비중이 Coldcard 소유자가 아니라 멀티시그로 옮긴 Ledger 및 Trezor 보유자였다고 보고했다 . 영향을 받지 않은 사용자들의 예방적 키 교체는 위기 상황을 뜻하지 않으면서도 모든 연령대 지표를 부풀린다.
  • 공격자 보유분은 여전히 온체인에 남아 있다. Galaxy의 알렉스 손은 도난 BTC가 공격자가 통제하는 주소에 그대로 남아 있다고 지적했다 . 따라서 특정 연령대에서 보이는 “이동”의 일부는 보유자 행동이 아니라 도난 흐름이다.

기저 규모와 비교해 피해를 가늠하려면 크기가 중요하다. Decrypt가 인용한 외곽선 기준 도난 추적치, 즉 최대 15개 공격자 클러스터에 걸친 약 2,000 BTC 조차도 같은 주 방어적으로 이동한 코인의 1%에 못 미치며, 전체 셀프 커스터디 공급량과 비교하면 훨씬 작다. 뉴먼은 “도난당한 비트코인의 약 10배에서 100배 사이가 사람들이 경보를 울리며 안전한 곳으로 이동했다”고 해석했고, 이를 “셀프 커스터디가 네트워크에 더하는 회복력을 보여주는 거대한 네온 경고등”이라고 불렀다 . 이 정도 규모의 손실은 펌웨어 벤더의 문제이지, 커스터디 모델 자체를 다시 가격에 반영할 사건은 아니다.

오래 남는 교훈은 측정의 규율이다. 8월 첫째 주에는 연령대 급등, 활성 주소 증가, 거래소 입금 확대가 모두 함께 움직였고, 그중 하나만 따로 읽으면 다른 지표들이 반박하는 결론을 뒷받침하게 된다. 코인 데이즈 디스트로이드와 휴면 지표는 사실상 시장 확신이 아니라 보안 사건으로 인해 일시적으로 왜곡됐다 . 장기 보유자 공급량을 포지셔닝 입력값으로 쓰는 트레이더라면 7월 30일부터 8월 7일까지의 구간을 명시적으로 제외해야 한다. 그렇지 않다면 이미 가격에 반영한 지갑 이동을 신호로 측정하고 있음을 받아들여야 한다.

다음으로 지켜볼 것

2026년 8월 13일 현재, 이 사건의 향방을 가를 네 가지 질문은 모두 아직 열려 있다. Coinkite가 유출된 주소들을 엔트로피 결함 때문이라고 공식적으로 판단할지, 영향을 받은 보유자 중 실제로 시드를 교체하는 비율이 얼마나 될지, 원인이 특정된 온체인 자금 이동 수치가 공개될지, 그리고 ETF 자금 흐름이 이탈한 셀프 커스터디 수요를 계속 흡수할지다. 2026년 8월 1일 마지막으로 업데이트된 Coinkite의 권고문은 조사가 진행 중이라고 명시하며, 도난 BTC 총액을 확정해 발표하지 않았다 . 이 조사가 마무리되기 전까지 유통되는 모든 손실 규모는 포렌식 추정치이지, 업체가 확인한 수치가 아니다.

특히 다음 네 가지 지표를 봐야 한다:

  • 공식 귀속 판단. 현재까지 유출된 주소들이 피싱, 시드 백업 유출, 또는 무관한 공격 경로가 아니라 엔트로피 버그 때문이라고만 묶어 확인한 공개 발표는 없다. TRM Labs는 이미 "네 차례의 공격 흐름에서 트랜잭션 구성 방식이 달라, 한 명 이상의 공격자가 개입했을 가능성이 있다"고 언급했으며, 귀속 판단은 유보했다 .
  • 마이그레이션 이행률. 향후 손실에서 가장 중요한 미지수는 2021년 3월부터 2026년 7월까지 생성된 시드 보유자 중 실제로 수정된 펌웨어에서 새 문구를 생성하는 비율이다. 해당 펌웨어는 Mk2/Mk3 4.2.0 이상, Mk4/Mk5 5.6.0 이상, Q 1.5.0Q 이상이다 . 취약한 시드에 자금이 남아 있으면 무기한 추측 가능한 상태로 남는다.
  • 원인이 특정된 마이그레이션 수치. 방어적 자금 이동 추정치는 장기 보유자 지갑에서 약 233,000 BTC가 이동했다는 수치부터 오래된 UTXO 구간 전반의 77,402 BTC까지 엇갈린다 . 신뢰도 있는 온체인 분석 업체가 방법론을 명시한 수치를 내놓으면 이 간극이 해소될 수 있다.
  • 커스터디 대체. 미국 현물 비트코인 ETF는 해킹 이후 며칠 동안 약 6억 2,000만 달러의 순유입을 기록했고, 8월 7일에는 약 1억 200만 달러가 유입됐다. 이후에는 하루 1억 4,460만 달러 순유출로 전환됐다 . 유입이 지속되면 규제권 래퍼로의 구조적 이동을 뜻하고, 흐름이 약해지면 전술적 반응에 가까웠다는 의미다.

실질적인 결론은 헤드라인보다 좁다. 2021년 3월부터 2026년 7월 패치 전까지 Coldcard에서 시드를 만들었고, 50회 이상의 개인 주사위 굴림이나 강력하고 고유한 BIP-39 패스프레이즈를 쓰지 않았다면, 지금 그 시드는 유출된 것으로 보고 패치된 펌웨어에서 새 시드로 이전해야 한다. 패치만으로 기존 시드가 복구되지는 않는다 . 그 외의 사람들은 특정 업체의 결함 하나를 근거로 커스터디 정책을 다시 쓰기 전에 위 네 가지 지표를 먼저 지켜봐야 한다.

자주 묻는 질문

지금 내 Coldcard 지갑이 침해된 건가요?

노출 여부는 오늘 설치된 펌웨어 버전이 아니라, 시드가 생성될 당시 실행 중이던 펌웨어 버전에 달려 있습니다. Coinkite 공지는 Mk2/Mk3 펌웨어 4.0.1부터 4.1.9까지를 치명적 영향 범위로 지목하며, 이 구간의 엔트로피는 약 40비트로 측정됐다고 설명합니다. 반면 수정 빌드 이전에 만들어진 Mk4, Mk5, Q 시드는 128비트 설계 목표에 비해 약 72비트 수준이었을 수 있습니다 . 확인하려면 기기 설정을 열어 펌웨어 버전과 업그레이드 이력을 검토한 뒤, 지갑을 설정한 날짜에 활성화되어 있던 버전을 영향 범위와 비교하세요. 그 이력을 복원할 수 없고 지갑이 2021년 3월부터 2026년 7월 패치 사이에 생성됐다면, 해당 기간에 포함된 것으로 가정하는 편이 안전합니다 .

Coldcard 펌웨어를 업데이트하면 기존 시드도 고쳐지나요?

아니요. 수정된 펌웨어를 설치하면 앞으로 약한 시드가 생성되는 것을 막을 수는 있지만, 이미 만들어진 복구 구문에 엔트로피를 나중에 추가할 수는 없습니다. Coinkite 공지와 펌웨어 업그레이드 페이지 모두 이 점을 명시하고 있습니다 . 영향을 받는 펌웨어에서 시드를 만든 사용자는 패치된 빌드에서 완전히 새로운 복구 구문을 생성하고, 그 구문에서 파생된 주소로 자금을 옮겨야 합니다. Coinkite가 권장하는 순서는 펌웨어 업데이트, 새 시드 생성, 백업 기록 및 검증, 기기 화면에서 수신 주소 확인, 소액 테스트 거래 전송, 나머지 자금 이동입니다. 공지는 또한 서두르지 말라고 경고하며, “복구 과정의 실수가 취약점 자체보다 더 큰 피해를 일으킬 수 있다”고 주의를 줍니다 .

Coldcard 설정 때 주사위 굴림이나 패스프레이즈를 사용했다면 안전한가요?

두 방법 모두 기기의 난수 생성기와 별개로 보호 효과를 제공합니다. 영향을 받은 펌웨어는 Add Dice Rolls를 통해 입력된 모든 굴림값을 기기 시드와 함께 해시했으며, Coinkite는 공정하고 독립적이며 비공개로 진행된 주사위 굴림 50회를 최소 128비트의 엔트로피로, 99회 이상을 대략 256비트 수준으로 봅니다. 이 기준을 충족하는 시드는 이 문제만으로는 위험하다고 보지 않습니다 . 이른바 25번째 단어인 강력하고 고유한 BIP-39 패스프레이즈도 오프라인 재구성을 크게 어렵게 만듭니다. 다만 조건이 중요합니다. 주사위 굴림은 진짜 무작위여야 하고, 다른 사람이 보지 않았어야 하며, 기기에 직접 입력되어야 합니다. 50회 미만으로 굴렸거나, 패스프레이즈를 재사용했거나, 확신이 없다면 Coinkite는 여전히 모범 사례로 새 시드로 이전할 것을 권장합니다 .

TAPSIGNER, OPENDIME, SATSCARD도 영향을 받나요?

아니요. Coinkite는 TAPSIGNER, OPENDIME, SATSCARD가 이 결함의 영향을 받지 않는다고 확인했습니다. 이 제품들은 문제가 발생한 Coldcard 시드 생성 경로와 다른 코드베이스에서 실행되기 때문입니다 . 결함은 2021년 3월 1일자 단일 Coldcard 펌웨어 커밋으로 거슬러 올라갑니다. 이 커밋은 시드 호출을 STM32 하드웨어 생성기에서 라이브러리 경로로 바꿨고, 그 경로에서 빌드 설정 fallback이 공개 상수로 시드된 소프트웨어 의사난수 생성기로 대체됐습니다 . 카드 제품에는 해당 코드 경로가 존재하지 않으므로, 이 사건 때문에 이전할 필요는 없습니다.

“150억 달러” 규모의 셀프 커스터디 이전 수치는 정확한가요?

검증되지 않은 수치로 보는 것이 맞습니다. 발행 시점에 검토한 1차 출처 중 150억 달러 규모의 이전 총액을 뒷받침하는 자료는 없으며, 이 헤드라인 수치는 단일하게 출처가 명시된 데이터셋이 아니라 느슨하게 합산된 지갑 이동 추정치에서 나온 것으로 보입니다. 온체인에서 측정 가능한 신호는 더 좁고 출처도 더 분명합니다. Decrypt는 Casa CEO Nick Neuman이 전달한 Checkonchain 데이터를 인용해, 155일 이상 휴면 상태였던 장기 보유자 지갑에서 약 233,000 BTC가 이동했고 그중 약 22,000 BTC가 거래소로 갔다고 보도했습니다 . CryptoSlate는 CryptoQuant를 인용해 오래된 UTXO 구간에서 77,402 BTC가 이동했고, 일일 활성 주소가 7월 30일 약 645,000개에서 다음 날 거의 100만 개로 늘었다고 기록했습니다 . 중요한 점은 이 데이터셋들 중 어느 것도 긴급 이전과 일반적인 이동 또는 매도를 구분하지 않는다는 것입니다. Casa도 이전 중인 사용자 다수가 Coldcard 소유자가 아니라 멀티시그를 도입한 Ledger 및 Trezor 보유자였다고 밝혔습니다. Glassnode나 Checkonchain의 출처가 명시된 분석이 나오기 전까지는 이 수치를 미확정으로 봐야 합니다.