콜드카드 해킹 피해, 3800만달러에서 7020만달러로 두 배 급증
작성일
콜드카드 해킹 피해 7,020만 달러로 확대, 최초 추정의 약 2배
2021년 펌웨어 버그로 시드 예측 가능해져…코인키트 긴급 패치

비트코인 하드웨어 지갑 콜드카드(Coldcard)에서 발생한 해킹 사건의 피해 규모가 당초 알려진 것보다 두 배 가까이 커진 것으로 나타났다. 갤럭시디지털(Galaxy Digital) 산하 연구조직 갤럭시리서치(Galaxy Research)는 7월 30일(현지시각) 발생한 이번 해킹으로 1,196개 주소에서 1,082.65 비트코인, 약 7,020만 달러가 빠져나간 것으로 파악했다. 이는 초기 추정치인 594 비트코인(약 3,800만 달러)의 거의 두 배에 달하는 규모다. 공격자는 2021년 3월 배포된 펌웨어의 결함을 악용해 복구용 시드구문(seed phrase) 생성 과정의 무작위성을 약화시켰고, 이를 통해 오프라인에서 개인키를 역산해 자금을 빼갔다. 이번 사태를 계기로 바이낸스 창업자 창펑자오(CZ)는 하드웨어 지갑도 완벽하지 않다며 자금을 여러 지갑에 나눠 보관하라고 조언했다.
사건 전개…3800만 달러에서 7020만 달러로 눈덩이
콜드카드 해킹은 처음엔 훨씬 작은 규모로 보고됐다. 앵커워치(AnchorWatch) CEO 겸 공동창업자 롭 해밀턴(Rob Hamilton)의 초기 분석에 따르면 594.48 비트코인, 약 3,800만 달러가 약 500건의 트랜잭션을 통해 3개 블록 구간에서 빠져나간 것으로 추정됐다.
이후 갤럭시리서치가 자금 흐름을 추가로 추적하면서 피해 규모는 크게 늘었다. 갤럭시리서치는 잭 도시(Jack Dorsey)가 이끄는 블록(Block)의 엔지니어들이 식별한 패턴을 바탕으로, 7월 30일 협정세계시(UTC) 오전 1시10분부터 1시51분까지 41분 동안 블록 960,183번부터 960,191번까지 총 6개 블록에서 1,196개 주소가 완전히 비워졌다고 밝혔다. 이 가운데 3개 블록에는 자금 인출 흔적이 전혀 없어, 공격자가 트랜잭션을 실시간으로 흘리지 않고 일괄 전송했을 가능성이 제기됐다. 갤럭시리서치는 또 모든 인출 거래가 1가상바이트당 30사토시로 동일한 수수료를 지불하고 잔돈 출력(change output)이 없었다는 공통 패턴을 확인했다며, 이는 자신이 보유한 개인키로 자동화된 도구가 자금을 쓸어간 흔적과 일치한다고 설명했다. 갤럭시리서치는 이번 분석이 완전하지 않을 수 있다고 전제하면서도, 콜드카드가 공식 보안 권고문을 발표하기 약 30시간 전부터 자금 이동이 시작됐다고 덧붙였다.

왜 뚫렸나…2021년 펌웨어가 남긴 시한폭탄
문제의 근원은 2021년 3월 배포된 펌웨어의 빌드 오류였다. 이 오류로 인해 일부 콜드카드 모델은 시드구문을 생성할 때 하드웨어 기반의 진난수생성기(true random number generator) 대신 소프트웨어 대체 경로(fallback)를 사용했다. 그 결과 생성된 개인키는 원래 설계보다 훨씬 쉽게 추측할 수 있는 상태가 됐고, 공격자는 이를 오프라인에서 역산해 물리적으로 기기에 접근하지 않고도 자금을 탈취할 수 있었다.
피해를 입은 지갑 중 상당수는 오랫동안 사용되지 않고 잠들어 있던 주소였다. 갤럭시리서치는 피해 규모가 개수 기준으로는 1비트코인 미만 소액 지갑이 대부분이었지만, 가치 기준으로는 1~50비트코인 규모 지갑이 손실을 주도했다고 분석했다. 갤럭시리서치는 이 손실 분포가 “개인 셀프커스터디의 형태이며, 기관이나 거래소 보유 자산의 형태는 아니다”라고 설명했다. 피해 주소는 네이티브 세그윗(native SegWit)과 구형 주소 형식을 모두 포함해, 공격자가 여러 경로에서 동시에 키를 스캔했음을 시사한다고 갤럭시리서치는 덧붙였다. 탈취된 비트코인은 공격 직후 몇 분 안에 소수의 주소로 모였으며, 갤럭시리서치에 따르면 이후 별다른 이동은 없었다.
코인키트의 대응…긴급 패치에도 “이미 만든 시드는 못 구해”
콜드카드 제조사 코인키트(Coinkite)는 펌웨어 버그에 대한 전적인 책임을 인정하고 피해 이용자들에게 사과했다. 회사는 영향을 받은 모든 모델에 대해 긴급 펌웨어 업데이트를 배포했다. Mk3는 버전 4.2.0 이상, Mk4·Mk5는 5.6.0 이상, 콜드카드 Q는 1.5.0Q 이상으로 각각 업데이트하면 취약한 소프트웨어 대체 경로가 제거되고, 새로 생성되는 시드는 의도된 하드웨어 진난수생성기를 사용하게 된다.
다만 코인키트는 펌웨어 업데이트만으로는 이미 생성된 취약 시드 자체를 보호할 수 없다고 강조했다. 코인키트 공동창업자 로돌포 노박(Rodolfo Novak)은 지난 금요일 X(옛 트위터)에 올린 글에서 회사가 이번 버그에 책임을 지고 전체 피해 규모를 파악 중이라고 밝혔다. 그는 “핫픽스는 소프트웨어 대체 경로를 제거했을 뿐, 취약한 펌웨어에서 생성된 시드를 보호해주지는 않는다”며 취약 펌웨어에서 시드를 만든 이용자는 반드시 새 시드로 자금을 옮기라고 조언했다.
CZ “지갑도 나눠라”…계속되는 셀프커스터디 논쟁
이번 사태 이후 창펑자오는 지난 토요일 X에 “하드웨어 지갑도 버그가 있을 수 있다. 오랜 이력을 가진 오래된 지갑도 버그가 있을 수 있다”고 적었다. 그는 “이를 완화할 방법이 있을까? 자금을 몇 개 지갑에 나눠보는 건 어떨까. 이 역시 다른 종류의 위험을 수반한다. 100%인 것은 없다. 계속 정보를 확인하고, 안전하게 지내라(Stay SAFU)”고 덧붙였다.
하드웨어 지갑은 비트코인을 오프라인에서 안전하게 보관할 수 있는 가장 강력한 수단 중 하나로 널리 인식돼왔다. 그러나 이번 콜드카드 사례는 오랜 기간 검증된 것으로 여겨진 기기조차 수년간 발견되지 않은 심각한 결함을 품고 있을 수 있음을 보여준다. 창펑자오가 제안한 자금 분산 보관 방식 역시 키 관리가 복잡해지는 등 나름의 실무적 어려움을 동반한다는 점에서, 셀프커스터디의 한계를 둘러싼 논의는 계속될 전망이다.