5년이 넘는 기간 동안 Coldcard 펌웨어 내부에 잠복해 있던 결함 때문에 약 594 비트코인(약 3,800만 달러 상당)이 소유자들로부터 도난당했다. Mk3 하드웨어 지갑의 핵심에 있는 Coinkite 시드 취약점으로 직접 추적된 이 도난은 30분도 안 되는 시간에 벌어졌다. 지금도 수백만 달러 상당의 자산이 동일한 취약점에 조용히 노출된 지갑에 그대로 남아 있을 수 있다.
Summary
핵심 요약
- 공격자는 2026년 7월 31일 01:31~01:56 UTC 사이에 Coldcard 펌웨어의 고장 난 난수 생성기를 악용해 약 594 BTC(약 3,800만 달러)를 약 500개의 단일 서명 지갑에서 쓸어 갔다.
- Coinkite는 펌웨어 4.0.1 이상을 실행하는 Mk3(2021년 3월 이후)에서 시드를 생성한 모든 사용자에게 자금이 위험에 처해 있을 수 있다고 경고했다.
- 이 버그는 또한 펌웨어 5.6.0 이전의 Mk4 및 Mk5 기기, 그리고 버전 1.5.0Q 이전의 Q 기기에도 영향을 미치며, 시드 엔트로피를 128비트에서 약 72비트로 줄인다.
- TAPSIGNER, OPENDIME, SATSCARD는 서로 다른 코드베이스를 사용하기 때문에 영향을 받지 않는 것으로 확인되었다.
- 시드 생성 시 최소 50번 이상의 독립적인 주사위 굴리기를 추가한 사용자는 보호된 것으로 간주되며, 그 외 사용자는 즉시 수정된 펌웨어에서 새 시드로 마이그레이션해야 한다.
조용한 펌웨어 버그가 3,800만 달러 도난으로 이어진 과정
공격은 체계적이면서도 빠르게 진행되었다. CoinDesk에 따르면, 세 개의 블록 안에서 500건의 트랜잭션을 통해 1,324개의 개별 비트코인 조각이 이동했으며, 이후 562 BTC가 한 개의 주소로 통합되었고 그 이후로는 움직이지 않고 있다. 고갈된 모든 지갑은 단일 서명 지갑이었고, 각 지갑에는 0.15 BTC 이상이 들어 있었으며, 상당수는 수년간 휴면 상태였다. 이들 코인은 2021년부터 2026년에 걸쳐 분포해 있었고, 이는 취약점이 존재한 기간과 거의 정확히 일치한다.
근본 원인은 2021년 3월 1일자 커밋으로 거슬러 올라가며, 펌웨어 4.0.0에 포함되어 배포되었다. Block의 비트코인 엔지니어링 및 보안 팀이 발표한 보고서에 따르면, 빌드 설정 중 하나가 기기에 자체 하드웨어 난수 생성기를 건너뛰라고 지시했다. 이후 지원 라이브러리의 검사 로직은 해당 설정이 실제로 활성화되었는지 여부가 아니라, 단지 그 설정이 존재하는지만 확인했다. 그 결과 키 생성은 조용히 칩의 일련번호와 클록 레지스터(둘 다 비밀이 아님)에서 시드를 가져오는 기본 소프트웨어 대체 로직으로 떨어져 버렸다.
일련번호는 공장에서 고정된 메타데이터다. 클록 값은 공격자가 자신의 기기를 사용해 좁혀 나가거나 측정할 수 있는 타이밍 상태다. “추측이 불가능해야 할” 시드는 사실상 추측 가능한 값으로 변해 버렸다. Block은 취약점이 실제로 악용 가능한지 완전히 확인하기도 전에 결과를 공개했는데, 이는 공개 시점에 이미 공격이 진행 중이었기 때문이라고 설명했다.
영향 범위는 지갑 시드를 넘어선다
노출은 시드 문구에서 끝나지 않는다. Block은 동일한 고장 난 생성기가 Coldcard의 종이 지갑 개인 키도 만들어냈다고 지적했다. 이 경우 출력값이 추가 파생 과정 없이 곧바로 키가 된다. 여기에 더해 시드 분할용 마스크, 기기 클로닝 키, Key Teleport 전송에도 사용되었다. 다시 말해, 공격 표면은 이미 고갈된 지갑들보다 훨씬 넓다.
어떤 기기가 영향을 받고, 어떤 기기는 안전한가
Coinkite는 이 문제가 4.0.1 이후 모든 Mk3 펌웨어 버전에 존재한다고 확인했다. Mk4, Mk5, Q에 대한 영향은 덜 심각하지만 여전히 중대하다. 해당 기기에서 수정된 펌웨어 이전에 생성된 시드는 기대되는 128비트 대신 약 72비트의 엔트로피만 가진다. 이 감소는 의미가 크다. 72비트 엔트로피는 지속적이고 표적화된 공격 하에서 이론적으로 깨지지 않는 수준이 아니다.
세 가지 제품 라인은 명확히 안전한 것으로 지목되었다. TAPSIGNER, OPENDIME, SATSCARD는 Mk 시리즈와 완전히 다른 코드베이스를 사용하기 때문에 영향을 받지 않는다. Coinkite의 초기 분석에 따르면 Mk4, Q, Mk5는 Mk3와 동일한 방식으로는 영향을 받지 않는 것으로 보이지만, 이들 기기에서도 새 대체 시드를 생성하기 전에는 반드시 펌웨어 버전 요건을 충족해야 한다.
노출 여부는 결정적으로, 하드웨어를 언제 구입했는지가 아니라 지갑을 처음 생성할 때 실행 중이던 펌웨어 버전에 달려 있다.
사용자가 지금 당장 해야 할 일
회사는 단계별 완화 가이드를 상세히 공개했다. 이후 조치는 사용자가 어떤 기기를 보유하고 있는지, 그리고 시드를 생성할 때 무엇을 했는지에 따라 달라진다.
설정 중에 주사위 굴리기를 추가한 경우
시드를 생성할 때 주사위 굴리기를 입력한 사용자는 자신도 모르게 스스로를 보호했을 수 있다. 영향을 받는 펌웨어에서는 Coldcard가 기기에서 생성한 엔트로피와 사용자가 제공한 각 주사위 굴리기를 함께 해시했다. 여기서 임계값이 중요하다.
- 50~98번의 독립적이고 비공개인 굴리기: 주사위 입력만으로 최소 128비트의 엔트로피가 추가되므로, 이 RNG 문제로부터 시드는 안전한 것으로 간주된다.
- 99번 이상의 독립적이고 비공개인 굴리기: 주사위 입력만으로 약 256비트의 엔트로피가 추가된다.
- 50번 미만이거나, 정확한 횟수를 모르는 경우: 즉시 마이그레이션 가이드를 따라야 한다.
이는 주사위를 추가한 뒤 표시되는 최종 시드 단어에만 적용된다. 굴린 횟수, 굴리기가 비공개였는지, 어떤 단어 세트가 사용되었는지에 대해 조금이라도 확신이 없다면, 마이그레이션이 유일하게 안전한 선택이다.
BIP-39 패스프레이즈를 사용한 경우
강력하고 고유한 BIP-39 패스프레이즈는 손상된 시드 위에 독립적인 보안 장벽을 하나 더 추가한다. 이 보호는 실제로 효과가 있지만 조건부다. 짧거나 흔한 단어, 패턴이 있거나 재사용된 패스프레이즈는 추측 가능할 수 있으며 충분한 보호 수단으로 간주되어서는 안 된다. Coinkite는 강력한 패스프레이즈를 사용하는 사용자에게도 가능한 한 빨리 새로 생성한 시드로 마이그레이션할 것을 명시적으로 권고하며, 어떤 웹사이트나 신뢰할 수 없는 기기에도 패스프레이즈를 입력하지 말라고 강조한다.
Mk3만 사용할 수 있는 사용자라면
Coinkite는 임시 방안을 제시했다. 사용자는 Mk3에서 패스프레이즈로 보호되는 지갑을 새로 만들고, 기존 지갑에서 이 지갑으로 자금을 옮겨 이를 임시 조치로 취급할 수 있다. 회사의 가이드는 이 과정을 단계별로 설명한다. 기기에서 직접(컴퓨터나 휴대폰이 아닌) 길고 무작위이며 고유한 패스프레이즈를 입력하고, 시드 단어와는 별도로 백업하며, 어떤 트랜잭션을 하기 전에 지갑 지문(XFP)을 확인하고, 나머지 자금을 옮기기 전에 소액 테스트 전송을 수행하는 절차다.
고급 대안도 존재한다. 비어 있는 Mk3에서 펌웨어 4.1.9를 실행 중인 경우, Import Existing > Dice Rolls로 이동해 공정한 6면체 주사위를 최소 99번 독립적으로 굴린 값을 입력할 수 있다. 이 경로는 기기의 고장 난 생성기를 사용하지 않고 주사위 굴리기 시퀀스를 직접 해시한다. Coinkite는 이것이 고급 절차임을 강조한다. 한 대의 기기에서 마이그레이션을 수행하려면 이전 시드와 새 시드 사이를 안전하게 오가야 하며, 주사위 굴리기 시퀀스는 비밀 키 자료로 취급해야 한다. 즉, 사진을 찍거나 디지털로 저장하거나 네트워크에 연결된 컴퓨터에 입력해서는 안 된다.
Mk4, Mk5, Q 사용자라면
이 모델들에서 대체 시드를 생성하기 전에 사용자는 먼저 업그레이드해야 한다. Mk4와 Mk5는 펌웨어 5.6.0 이상, Q는 1.5.0Q 이상으로 올려야 한다. 수정된 펌웨어가 설치되었음을 확인한 뒤에만 새 시드를 생성해야 한다. 이 과정에는 자금을 입금하기 전에 백업을 기록하고 검증하는 것, 기기에서 직접 수신 주소를 확인하는 것, 소액 테스트 트랜잭션을 보내는 것, 전체 마이그레이션이 완료되었음을 확인할 때까지 기존 백업을 유지하는 것이 포함된다.
이 사건이 단순한 한 번의 도난을 넘어서는 이유
3,800만 달러 규모의 자금 유출만으로도 충분히 충격적이지만, 더 넓은 함의는 훨씬 깊다. 콜드 스토리지 하드웨어 지갑은 본질적으로 최후의 방어선이 되어야 한다. 에어갭, 오프라인, 암호학적으로 견고해야 한다는 의미다. 하드웨어 난수 생성기를 조용히 우회해 시드 엔트로피를 128비트에서 72비트로 줄여 버리는 결함은 단지 한 제품 라인만 위협하는 것이 아니다. 오프라인 키 생성이 소프트웨어 대안보다 본질적으로 더 안전하다는 근본 가정을 흔들어 놓는다.
Block은 조사 결과를 Coinkite에 공개했고, Coinkite 팀은 이를 인정했다. 양사는 모두 자신의 분석이 예비 단계라고 설명한다. 두 조직이 완전한 테스트를 마치기 전에 결과를 공개하기로 한 결정은, 바로 그 시점에 이미 공격이 진행 중이었기 때문에 사용자 경고를 전통적인 책임 있는 공개 일정보다 우선시한 계산된 선택이었다. Coinkite는 조사가 계속 진행 중이며 추가 세부 정보가 뒤따를 것이라고 밝혔다. 영향을 받은 사용자에게는 지금이 침착하고 신중한 마이그레이션을 진행할 수 있는 시기지만, 이 창이 영원히 열려 있지는 않을 수 있다.
FAQ
어떤 Coinkite 기기가 시드 엔트로피 취약점의 영향을 받나요?
펌웨어 4.0.1 이상을 실행하는 Mk3 기기가 영향을 받으며, 펌웨어 5.6.0 이전의 Mk4 및 Mk5 기기, 그리고 버전 1.5.0Q 이전의 Q 기기도 영향을 받습니다. Mk3가 가장 심각하게 영향을 받습니다. TAPSIGNER, OPENDIME, SATSCARD는 영향을 받지 않습니다.
영향을 받는 기기를 사용했다면 사용자는 어떻게 자금을 보호할 수 있나요?
사용자는 수정된 펌웨어를 실행하는 기기에서 새로 생성한 시드로 자금을 마이그레이션해야 합니다. Mk4, Mk5, Q에서 이를 수행하기 전에 먼저 요구되는 펌웨어 버전으로 업그레이드해야 합니다. 임시 조치로, 강력하고 고유한 BIP-39 패스프레이즈를 적용하면 독립적인 보호 계층이 추가됩니다. 원래 시드 생성 시 최소 50번 이상의 독립적인 주사위 굴리기를 추가한 사용자는 이 특정 RNG 문제로부터는 안전한 것으로 간주됩니다.
모든 Coinkite 콜드 월렛 기기가 이 취약점의 영향을 받나요?
아니요. TAPSIGNER, OPENDIME, SATSCARD는 Mk 시리즈 기기와 다른 코드베이스를 사용하기 때문에 영향을 받지 않습니다.
Mk3 기기만 사용할 수 있는 사용자의 권장 대응 방법은 무엇인가요?
고급 사용자는 Mk3 펌웨어 4.1.9에서 Import Existing > Dice Rolls를 선택하고 최소 99번의 독립적인 주사위 굴리기를 입력해 주사위 기반 시드를 생성할 수 있습니다. 이는 결함이 있는 RNG를 완전히 우회합니다. 덜 숙련된 사용자의 경우, 강력하고 고유한 BIP-39 패스프레이즈를 적용하고 자금을 패스프레이즈로 보호되는 지갑으로 옮기는 것이, 수정된 기기에서 새 시드로 마이그레이션하기 전까지의 권장 임시 조치입니다.
{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”어떤 Coinkite 기기가 시드 엔트로피 취약점의 영향을 받나요?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”펌웨어 4.0.1 이상을 실행하는 Mk3 기기가 영향을 받으며, 펌웨어 5.6.0 이전의 Mk4 및 Mk5 기기, 그리고 버전 1.5.0Q 이전의 Q 기기도 영향을 받습니다. Mk3가 가장 심각하게 영향을 받습니다. TAPSIGNER, OPENDIME, SATSCARD는 영향을 받지 않습니다.”}},{“@type”:”Question”,”name”:”영향을 받는 기기를 사용했다면 사용자는 어떻게 자금을 보호할 수 있나요?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”사용자는 수정된 펌웨어를 실행하는 기기에서 새로 생성한 시드로 자금을 마이그레이션해야 합니다. Mk4, Mk5, Q에서 이를 수행하기 전에 먼저 요구되는 펌웨어 버전으로 업그레이드해야 합니다. 임시 조치로, 강력하고 고유한 BIP-39 패스프레이즈를 적용하면 독립적인 보호 계층이 추가됩니다. 원래 시드 생성 시 최소 50번 이상의 독립적인 주사위 굴리기를 추가한 사용자는 이 특정 RNG 문제로부터는 안전한 것으로 간주됩니다.”}},{“@type”:”Question”,”name”:”모든 Coinkite 콜드 월렛 기기가 이 취약점의 영향을 받나요?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”아니요. TAPSIGNER, OPENDIME, SATSCARD는 Mk 시리즈 기기와 다른 코드베이스를 사용하기 때문에 영향을 받지 않습니다.”}},{“@type”:”Question”,”name”:”Mk3 기기만 사용할 수 있는 사용자의 권장 대응 방법은 무엇인가요?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”고급 사용자는 Mk3 펌웨어 4.1.9에서 Import Existing > Dice Rolls를 선택하고 최소 99번의 독립적인 주사위 굴리기를 입력해 주사위 기반 시드를 생성할 수 있습니다. 이는 결함이 있는 RNG를 완전히 우회합니다. 덜 숙련된 사용자의 경우, 강력하고 고유한 BIP-39 패스프레이즈를 적용하고 자금을 패스프레이즈로 보호되는 지갑으로 옮기는 것이, 수정된 기기에서 새 시드로 마이그레이션하기 전까지의 권장 임시 조치입니다.”}}]}
이 기사는 인공지능의 도움을 받아 제작되었으며, 편집팀의 검수를 거쳤습니다.

