지난 7월 30일, 한 해커가 특정 콜드카드(Coldcard) 하드웨어 지갑에서 생성된 취약한 시드를 악용해 수백 개의 주소에서 수천만 상당의 비트코인을 탈취했다.
콜드카드 취약점 해부: 누가 비트코인을 잃었으며, 누가 위험에 처해 있는가

주요 내용
- 콜드카드와 관련된 절도 사건으로 수백 개의 지갑에서 비트코인이 유출되었습니다.
- 코인카이트(Coinkite)에 따르면, Mk3 시드의 엔트로피는 128비트가 아닌 약 40비트 수준이었다.
- 콜드카드 사용자는 자금을 이동하기 전에 수정된 펌웨어를 설치하고 새로운 시드를 생성해야 합니다.
갤럭시 리서치(Galaxy Research)의 심층 분석에 따르면, 주요 탈취 사건은 약 25분 동안 치밀하게 조율된 집중 공격으로 이루어졌으며, 이후 더 광범위한 분석을 통해 약 1,196개의 주소와 1,083비트코인(약 7,000만 달러 상당)이 약 41분 동안 이어진 활동과 연관된 것으로 밝혀졌습니다. 수사 당국이 공개된 비트코인 블록체인상의 거래 내역을 계속 추적함에 따라 최종 수치는 변동될 수 있습니다.
5년 된 버그가 전 세계 비트코인 지갑을 강타
피해를 입은 지갑들은 대부분 2021년 3월 이후 출시된 취약한 펌웨어를 실행하는 콜드카드(Coldcard) 기기를 사용하여 복구 시드를 생성한 장기 보유자들의 것이었다. 콜드카드는 캐나다 제조사 코인카이트(Coinkite)가 제작한 에어갭(air-gapped) 하드웨어 지갑으로, 비트코인(BTC) 키를 인터넷에 연결된 기기와 격리되도록 설계되었다.
자금이 모두 털린 주소 중 상당수는 수년 동안 비활성 상태로 남아 있었습니다. 공격자는 신속하게 움직였으며, 높은 고정 거래 수수료를 지불했고, 잔액 출력을 남기지 않았는데, 이는 각 주소가 완전히 비워졌음을 의미합니다. 이러한 패턴은 고객이 독립적으로 자금을 이동시킨 것이 아니라, 미리 준비된 개인 키 목록을 사용한 자동화된 작전을 시사합니다.
이번 도난 사건은 피싱, 사용자 컴퓨터의 악성코드, 물리적 기기 도난 또는 일반적인 원격 침해로 인한 것이 아니었습니다. 대신, 일부 Coldcard 기기가 지갑 시드를 생성할 때 사용된 난수 생성 기능에 펌웨어 오류가 발생하여 난수 생성 기능이 약화되었습니다. 해당 시드들은 겉보기에는 정상적으로 보였으나, 사용자에게 약속된 것보다 훨씬 좁은 범위의 가능한 조합에서 생성된 것이었습니다.
콜드카드의 난수 생성기가 은밀하게 고장 났다
비트코인 지갑 시드는 비밀 정보로, 일반적으로 12개 또는 24개의 단어로 표시되며, 지갑은 이를 바탕으로 주소와 개인 키를 생성합니다. 올바르게 생성된 12단어 시드는 128비트의 엔트로피를 포함하는데, 이는 가능한 조합의 방대한 수를 나타내는 기술적 지표로, 시드를 추측하는 것을 사실상 불가능하게 만듭니다.
콜드카드 기기는 기기 내 마이크로컨트롤러에 탑재된 하드웨어 난수 생성기에서 이러한 무작위성을 확보해야 했습니다. 이 구성 요소는 외부 관찰자가 예측할 수 없는 물리적 전기 노이즈를 활용합니다.
그러나 2021년 소프트웨어 라이브러리 마이그레이션 과정에서, Coinkite는 인터페이스가 일치하는 두 개의 난수 생성 함수가 혼동되었다고 밝혔습니다. 하나는 기기의 적절한 하드웨어 생성기에 접근하는 함수였고, 다른 하나는 적절한 하드웨어가 없는 보드를 위해 마련된 취약한 소프트웨어 대체 수단이었죠.
Coinkite가 자체 하드웨어 래퍼를 제공했기 때문에 특정 구성 설정이 기본 MicroPython 하드웨어 경로를 비활성화했습니다. 소프트웨어는 해당 설정이 존재하는지 여부만 확인했을 뿐 활성화되었는지는 확인하지 않았습니다. 설정이 존재하지만 값이 0으로 지정되어 있었기 때문에 빌드는 성공적으로 완료되었으나 시드 생성은 아무런 경고 없이 성능이 낮은 소프트웨어 생성기로 전환되었습니다.
공장 출하 시 설정된 데이터와 타이밍이 진정한 난수성을 대체했다
이 대체 방식은 일련번호와 유사한 칩 식별자 및 시작 타이밍과 관련된 내부 클럭 값을 포함하여 예측 가능한 장치 정보에 크게 의존했습니다. 이러한 입력값을 좁힐 수 있는 공격자는 안전하게 생성된 시드에서 예상되는 128비트 범위보다 훨씬 더 좁은 범위 내에서만 검색하면 됩니다.
Coinkite는 현재의 가정 하에서 취약한 Mk3 시드의 유효 검색 공간을 약 40비트로 추정했습니다. 이는 여전히 방대한 수의 가능성을 의미하지만, 특히 공격자가 후보 시드를 블록체인에 표시된 비트코인 주소와 비교할 수 있는 경우, 특수 계산 장비를 사용하여 검색할 수 있습니다.

Mk4, Q, Mk5를 포함한 후속 Coldcard 모델들은 보안 요소(secure element)를 통해 일부 무작위성을 추가했습니다. 그러나 이 중 제한된 부분만이 해당 생성기에 도달했기 때문에, 수정된 펌웨어가 설치되기 전에 생성된 시드에는 약 72비트의 유효 엔트로피만 남아 있는 것으로 추정됩니다. 이는 Mk3 방식보다는 강력했지만, 여전히 목표했던 128비트 표준에는 미치지 못했습니다. 이 차이는 진정한 무작위 자물쇠 조합을 자물쇠의 일련번호와 처음 전원을 켠 시점에서 파생된 조합으로 대체하는 것과 비슷합니다. 결과적으로 나온 조합은 무작위로 보일 수 있지만, 공식을 알고 시작 정보를 추측할 수 있는 사람이라면 이를 재현할 수 있습니다. 많은 사용자가 Mk3 기기뿐만 아니라 Mk4, Q, Mk5 기기에서도 마이그레이션하고 있습니다.
코인카이트, 사용자에게 완전히 새로운 시드 생성 권고
Coinkite는 현재 진행 중인 위협을 인지한 후 보안 권고문을 발표하고 펌웨어를 수정했습니다. 이 회사는 영향을 받은 펌웨어에서 시드를 생성한 사용자들이 수정된 버전을 사용하여 완전히 새로운 시드를 생성하고, 해당 시드가 관리하는 주소로 비트코인을 이체해야 한다고 밝혔습니다.
단순히 업데이트를 설치하는 것만으로는 충분하지 않습니다. 결함이 있는 시스템에서 생성된 시드는 펌웨어 업데이트를 통해 이미 존재하는 단어에 무작위성을 추가할 수 없기 때문에 영구적으로 취약한 상태로 남아 있습니다.
코인카이트는 사용자에게 기기를 업데이트하고, 새로운 시드를 생성하며, 백업 및 지갑 지문을 확인하고, 수신 주소를 확인한 뒤 소액의 테스트 거래를 보낸 다음 잔여 잔액을 이동할 것을 권고했습니다. 사용자는 이체가 확인될 때까지 기존 백업을 보관해야 하지만, 기존 시드는 더 이상 안전한 것으로 간주해서는 안 됩니다.
이 회사는 Mk3 버전 4.2.0 이상, Mk4 및 Mk5 버전 5.6.0 이상, Q 버전 1.5.0Q 이상과 이에 대응하는 Edge 버전을 포함한 수정된 릴리스를 확인했습니다. Tapsigner, Opendime, Satscard 제품은 다른 코드를 사용하며, 이번 문제와 무관한 것으로 알려졌습니다.
추가된 보안 기능으로 일부 Coldcard 소유자 보호
시드를 생성할 때 충분한 수의 독립적인 주사위 굴림을 추가한 사용자들은, 자신들이 생성한 무작위성이 결함이 있는 소프트웨어 입력을 압도했기 때문에 상당한 보호를 받았습니다. 코인카이트(Coinkite)는 공정한 주사위를 최소 50회 굴리는 것만으로도 이 문제에 대해 충분한 보호를 제공한다고 밝혔으나, 굴림 횟수를 늘릴수록 안전 여유가 더 커질 수 있습니다.
강력한 BIP-39 패스프레이즈를 사용하면 시드 단어만으로는 재구성할 수 없는 별도의 지갑이 생성됩니다. 비트코인을 이동하기 위해 여러 기기나 위치의 키가 필요한 다중 서명 지갑의 경우, 취약한 Coldcard 시드가 서명 절차의 일부에 불과할 때 대부분 또는 완전히 보호되었습니다.
그러나 이러한 안전 장치는 선택 사항이었습니다. 많은 피해자들은 당시 제공되던 표준 보안 권고 사항, 즉 신뢰할 수 있는 하드웨어 지갑을 구입하고, 오프라인에서 시드를 생성하며, 백업을 안전하게 보관하고, 인터넷에 연결된 기기에는 절대 시드를 입력하지 말라는 지침을 따랐던 것으로 보입니다.
논란이 AI로 옮겨가면서 코인카이트, 책임 인정
코인카이트(Coinkite)의 CEO 로돌포 노박(Rodolfo Novak, 일명 NVK)은 7월 31일 공개적으로 사과하며, 회사가 펌웨어 결함에 대한 전적인 책임을 인정한다고 밝혔다. “죄송하고 정말 가슴이 찢어집니다. 우리 팀은 어제의 소식에 가슴이 찢어집니다,"라고 노박은 적었습니다. 그는 핫픽스가 새로 생성된 시드는 보호할 수 있지만, 취약한 소프트웨어 환경에서 생성된 시드는 복구할 수 없다는 점을 인정했습니다.

노박은 코인카이트가 세부 사항을 확인한 후 전체 기술 보고서를 공개할 것이며, 경찰 신고, 보험 청구 또는 독립적인 조사를 원하는 피해 사용자들을 지원할 것이라고 설명했다. 또한 그는 개발자들에게 인공지능(AI) 도구가 이제 기존의 검토 프로세스보다 더 빠르게 오래된 공개 코드를 스캔하여 숨겨진 취약점을 찾아낼 수 있다고 경고했다.
코인카이트는 결함이 어떻게 발견되었는지에 대한 증거는 없지만, 공격자가 AI를 사용하여 자사의 오픈소스 펌웨어를 조사했을 것이라고 가정해야 한다고 강조했다. 또한 이 회사는 선도적인 AI 모델을 사용하여 최근 수행한 검토에서도 해당 문제를 식별하지 못했다는 점을 인정했다. 몇몇 경쟁사 하드웨어 지갑 제조사들은 소셜 미디어를 통해 자사 제품은 영향을 받지 않는다고 밝혔다.
"레저(Ledger)는 최근 공개된 콜드카드 Mk3(Coldcard Mk3) 보안 권고 사항의 영향을 받지 않습니다,"라고 이 회사는 콜드카드 사건 이후 X(구 트위터) 사용자들에게 전했다. “레저 기기는 보안 요소(Secure Element) 칩에 직접 내장된 인증된 진정한 난수 생성기(TRNG)를 사용하며, 24단어의 비밀 복구 문구마다 256비트의 완전한 엔트로피를 생성합니다.”
"트레저(Trezor) 사용자 여러분: 여러분의 자금은 안전합니다,"라고 하드웨어 지갑 제조사 트레저는 금요일에 설명했습니다. "최근 콜드카드(Coldcard) 문제는 해당 업체의 자체 맞춤형 펌웨어와 일부 기기에서 난수를 생성하는 방식에만 국한됩니다. 트레저는 해당 코드를 공유하지 않습니다." 트레저 X 계정은 다음과 같이 덧붙였습니다:
"저희는 항상 여러 독립적인 난수 생성 소스(기기 하드웨어 + 호스트 + 최신 모델의 보안 요소)를 혼합해 왔습니다. 비트코인을 잃으신 모든 분께 진심으로 사과드립니다."
콜드카드 사용자들이 앞으로 주의해야 할 점
공격자의 신원은 여전히 알려지지 않았으며, 도난당한 비트코인은 언제든지 집결 주소에서 이동할 수 있습니다. 수사관들은 실제로 얼마나 많은 취약한 시드가 생성되었는지, 얼마나 많은 비트코인이 여전히 위험에 노출되어 있는지, 그리고 공격자가 이미 다른 고가치 지갑을 추가로 파악했는지 여부를 파악하기 위해 여전히 조사 중입니다. 하지만 코인카이트(Coinkite)는 오래전 사용자들에 대한 정보를 많이 보유하고 있지 않을 수 있습니다. "재미있는 양날의 검: 코인카이트는 데이터 유출을 방지하기 위해 120일이 지나면 모든 고객 기록을 삭제합니다,"라고 카사(Casa)의 공동 창업자 제임슨 로프(Jameson Lopp)가 X에 게시했습니다. "이는 지난 5년 동안 취약한 콜드카드를 구매한 고객들에게 이 취약점에 대해 경고할 수 없다는 것을 의미합니다."

이번 사건은 코인카이트가 콜드카드에 대한 신뢰를 회복할 수 있을지, 그리고 하드웨어 지갑 제조사들이 시드 생성 과정에 대해 더 강력한 독립적 검토를 도입할지 여부를 가늠하는 시험대가 될 것입니다. 사용자들에게 있어 당면한 우선순위는 더 간단합니다. 강력한 독립적인 주사위 엔트로피, 패스프레이즈, 또는 다중 서명 보호 기능 없이 영향을 받은 펌웨어에서 시드를 생성한 사람은 누구나 해당 시드가 유출된 것으로 간주하고 자금을 신중하게 새로 생성된 지갑으로 옮겨야 합니다.
이 엄청난 도난 사건을 넘어, 커뮤니티 전반의 비트코인 사용자들은 경종을 울리며, 더 많은 취약한 지갑이 털리기 전에 다른 사람들에게 이 사실을 널리 알리도록 촉구하고 있습니다.
이 기사는 AI를 사용하여 영어에서 번역되었습니다. 영어 원본이 권위 있는 출처이며, 자동 번역에는 특히 법률 및 규제 용어에서 부정확한 내용이 포함될 수 있습니다.
















