Liquid Network의 4,000비트코인은 어떻게 홀로 금고를 빠져나갔는가?
- 핵심 관점: 2026년 9월 Liquid Network는 노드 소프트웨어 캐시 결함이 악용되어, 공격자가 개인키를 탈취하거나 멀티시그를 돌파할 필요 없이 위조된 범위 증명만으로 규정 절차를 거쳐 4,000개의 L-BTC를 무에서 발행하고 약 3억 2천만 달러 상당의 실제 비트코인을 성공적으로 인출하면서, '래핑 자산'의 소프트웨어 구현 계층과 운영 계층에서의 시스템적 위험을 드러냈다.
- 핵심 요소:
- 공격자는 어떤 개인키나 HSM도 공격하지 않았고, Elements 노드의 범위 증명 캐시가 자산과 출력 스크립트에 바인딩되지 않은 결함을 이용해 14시간 전에 온체인에 동일한 증명 68개를 주입해 캐시를 '먹여' 결국 11/15 멀티시그 규정 서명으로 출금을 완료했다.
- 취약점 수정 패치는 8월 3일 제출되었고 9월 2일 메인 브랜치에 병합되었지만, 연방 노드는 여전히 4월 13일 출시된 구버전을 실행하고 있어 패치가 프로덕션 환경에서 최대 5개월 지연되었다; 연방 노드 코드베이스의 마지막 커밋은 2024년 4월로, 사건 발생 시점과 2년 이상 차이가 난다.
- 이 사건은 준비금 검증 가능성의 부재를 드러냈다: 기밀 거래가 금액을 숨겨 외부에서 L-BTC 유통량과 연방 지갑의 실제 비트코인 잔액을 실시간으로 대조할 수 없었고, 온체인 유통량이 4,205개의 L-BTC일 때 실제 비트코인은 197개만 남아 담보율이 5% 미만이었다.
- 공격자는 자신을 화이트햇이라고 주장하며 비트코인 3,400개(85%)를 반환하고 598.5개(약 15%)를 보유했으며 추가로 10%의 취약점 바운티를 요구했지만, Blockstream은 공개적으로 몸값 지불을 거부하며 이를 화이트햇 행위가 아닌 '절도'라고 명확히 밝혔다.
- 사건 이후 L-BTC 담보율은 약 86%로 회복되었고, Blockstream은 1:1 페깅을 보증하고 홀더에게 손실을 전가하지 않겠다고 약속했으며, 남은 598.5개의 비트코인은 온체인 포렌식 및 법 집행 추적 단계로 넘어갔다.
- 핵심 교훈: 래핑 자산의 안전성은 발행사 신용, 노드 소프트웨어 구현, 입출금 채널이라는 세 계층 중 가장 약한 고리에 달려 있다; 멀티시그는 나쁜 사람을 막지 나쁜 코드를 막지 못한다; '화이트햇'은 먼저 공개 후 협력하는 행위 기준을 따라야 한다.
9월 6일, 약 4000개의 비트코인(당시 가격으로 약 3억 2천만 달러)이 Liquid Network의 지갑에서 빠져나갔다. 이는 2026년 현재까지 금액 기준 최대 규모의 암호자산 도난 사건이다.
하지만 이 사건에서 가장 주목할 만한 점은 금액이 아니다.
훔쳐진 개인키는 하나도 없었고, 뚫린 HSM(하드웨어 보안 모듈)도 없었으며, 피싱에 당한 사람도, 내부 공모자도 없었다. 이 금고를 관리하는 15개 기관 각자의 키는 모두 자신의 금고에 온전히 보관되어 있었고, 모든 서명은 그들이 자발적이고 자율적으로, 규칙에 따라 완료한 것이었다.
돈은 그렇게 빠져나갔다.
이것이 어떻게 가능했는지 이해하려면, 먼저 이 금고가 어떻게 설계되었는지 몇 분간 살펴볼 필요가 있다.
1. 15개 기관이 공동 관리하는 비트코인 금고
비트코인 메인넷에는 잘 알려진 문제가 있다: 느리고, 비싸다. 거래 하나가 블록에 들어가기까지 평균 10분을 기다려야 하고, 수수료는 채굴 난이도에 따라 출렁인다. 대규모·빈번한 이체를 원하는 거래소나 퀀트 팀에게는 다소 부족하다.
Liquid Network는 Blockstream이 내놓은 해법 중 하나다. 이것은 일종의 "사이드체인"이다. 비트코인 메인넷 옆에 있는 고속도로라고 생각하면 된다.
사용법은 소박하다. 실제 비트코인을 공동 관리 금고에 예치하면, 금고가 같은 금액의 예금증서를 발행해준다. 이 증서를 L-BTC라고 부르며, 이 고속도로 위에서 1분에 한 건씩 빠르게 유통될 수 있다. 실제 비트코인을 되찾고 싶을 때는 증서를 돌려주고 소각하면, 금고가 그 안에서 같은 금액의 실제 코인을 꺼내 돌려준다. 앞의 동작을 peg-in(앵커인), 뒤의 동작을 peg-out(앵커아웃)이라고 한다. 이론적으로 온체인에서 유통되는 L-BTC 총량은 항상 금고에 있는 실제 비트코인 수량과 같아야 한다. 이것이 이른바 1:1 앵커링이다.
핵심은 이 금고를 누가 관리하느냐다. Liquid의 답은: 어느 한 곳에도 맡기지 않고, 15개 알려진 기관으로 구성된 "연방"에 맡긴다는 것이다. 구성원에는 여러 거래소와 인프라 서비스 제공자가 포함된다. 이 15개 노드는 각각 하나의 키를 보유하며, 각자의 전용 하드웨어 보안 모듈(HSM)에 보관한다. 금고를 여는 모든 작업에는 그중 최소 11개의 키가 동시에 서명해야 한다. 즉 11/15 다중서명이다.
동시에 이 15개 노드는 번갈아 블록을 생성하고 서로를 검증하는 역할도 맡는다. 즉 그들은 금고의 관리인이자 이 체인의 기록자다.

이 설계의 의도는 명확하다: 단일 지점의 악의적 행위는 통하지 않는다. 돈을 훔치려면 서로 무관한 11개 기관을 동시에 설득해야 한다. "나쁜 행위자 방지"라는 관점에서 그것은 확실히 잘 작동한다.
2. 비밀 장부, 그리고 "봉투를 열지 않는 위조지폐 감별"
Liquid에는 또 하나의 특징이 있다: 거래 금액이 외부에 비밀로 유지된다.
비트코인 메인넷에서는 누구나 모든 이체의 구체적인 액수를 볼 수 있다. 기관 입장에서는 이것이 매우 불편하다. 대규모 포지션 조정이 전 세계에 공개되기 때문이다. Liquid는 "기밀 거래"(Confidential Transactions)라는 기술로 이 문제를 해결했다. 금액은 암호화되어 숨겨지고, 온체인에는 수학적 약속만 남아 외부인은 구체적인 숫자를 볼 수 없다.
그러나 이것은 즉시 새로운 문제를 낳는다. 금액이 보이지 않는다면, 노드는 이 거래가 부정행위가 없다는 것을 어떻게 아는가? 예를 들어 허공에서 음수를 적어 넣거나, 숫자를 오버플로우시킨다면?
해결책은 "범위 증명"(range proof)이다. 비유하자면: 금액을 불투명한 봉투에 넣고, 동시에 수학적 증명을 첨부하는데, 이 증명은 누구든 봉투를 열지 않고도 안에 든 숫자가 합법적인 범위 안에 있다는 것을 확신하게 해준다. 노드는 이 증명들을 하나하나 검사하여 모든 거래의 수입과 지출이 맞는다는 것을 확인하지만, 구체적인 금액은 끝까지 알지 못한다.
이 메커니즘 자체는 신뢰할 수 있는 암호학이다. 문제는 성능 최적화에서 발생했다.
3. 취약점: 기억력은 너무 좋지만 핵심을 잘못 기억한 위조지폐 감별기
범위 증명 검증은 계산 비용이 매우 크다. 노드가 마비되지 않도록, Elements(Liquid가 사용하는 오픈소스 노드 소프트웨어로, 비트코인 코어 코드의 한 분기다)는 모든 엔지니어가 하는 일을 했다: 캐시를 추가한 것이다.
한 번 검증한 증명은 결과를 기록해두고, 다음에 같은 것을 만나면 다시 계산하지 않고 바로 통과시킨다.
이제 문제가 생긴다: "같은 것을 만났다"는 것을 어떻게 판단하는가?
Elements의 방식은 두 가지를 조합해 인덱스 키를 만드는 것이었다: 증명 자체의 바이트, 그리고 그 암호화된 금액 약속.
무엇이 빠졌는가? 이것이 어떤 자산인지, 그리고 이 돈을 누구에게 지급하는지(출력 스크립트)가 빠졌다.
계산대에 비유해 보자. 카운터에 위조지폐 감별기가 하나 있는데, 그것이 검사한 지폐는 번호가 기록되어 다음에 같은 번호는 바로 통과된다. 하지만 번호를 기록할 때 지폐의 워터마크 무늬와 액면만 기록했을 뿐, 이 지폐가 어느 나라 화폐인지, 누구에게 지급될 것인지는 기록하지 않았다. 그래서 같은 "검증 완료" 결론이 전혀 적용되어서는 안 되는 상황에 그대로 옮겨져 사용될 수 있게 된다.

공격자는 바로 그렇게 했고, 매우 인내심이 있었다. 연구자들의 재구성에 따르면, 실제 공격 전 약 14시간 동안 그는 온체인에 완전히 동일한 범위 증명 68개를 연달아 보내며, 이 "검증된" 결론들을 각 노드의 캐시에 계속 먹여 넣었다. 때가 무르익자, 그는 같은 증명을 마땅히 거부되어야 할 맥락에 제출했다.
노드는 캐시를 조회하고 "이건 내가 검증했으니 문제없다"라며 통과시켰다.
그리하여 실제 비트코인으로 뒷받침되지 않는 3,996개의 L-BTC가 허공에서 장부에 기록되었다.
금액은 애초에 기밀 거래로 숨겨져 있었기 때문에, 온체인에서 어떤 관찰자도 늘어난 이 돈을 볼 수 없었다.
4. 그 35분: 모든 단계가 규정에 부합했다
베이징 시간 9월 6일 23:53(15:53:10 UTC), Liquid 블록 4,050,336이 이 위조 거래를 담았다.
이후 벌어진 모든 단계는 규칙에 완전히 부합했다. 이것이 이 사건 전체에서 가장 불안한 부분이다.
허공에서 주조된 이 L-BTC들은 SideSwap(peg-out 서비스를 제공하는 제3자 플랫폼)의 지갑으로 이체되었고, 섞여 들어간 뒤에는 어떤 정상적인 L-BTC와도 더 이상 구별되지 않았다. 장부의 눈에는 그것이 진짜 돈이었다.
십여 분 후, 4,000 L-BTC의 peg-out 요청이 제출되었다: 예금증서를 소각하고 실제 비트코인을 가져가는 것이다.
15개 노드가 직무를 수행하기 시작했고, 그들의 하드웨어 보안 모듈은 두 가지를 검증한다: 출금 주소가 화이트리스트에 있는지, 그리고 소각된 L-BTC 수량이 신청한 비트코인 수량과 일치하는지. 둘 다 맞았다.
그것은 세 번째 질문을 던지지도, 던질 능력도 없었다: 이 L-BTC들은 애초에 어떻게 생겨난 것인가?
11개의 키가 평소처럼 서명했다. 약 35분 후, 비트코인 메인넷이 그 거래를 확인했고, 3,996개의 실제 비트코인이 연방 지갑에서 빠져나갔다.
언급할 만한 점은, Liquid가 비상 안전장치를 설계해 두었다는 것이다. 정상 서명 경로가 실패할 경우, 2/3의 백업 키를 사용하고 56일을 기다려야 자금을动用할 수 있다. 이 안전장치는 한 번도 발동되지 않았다. 공격자가 아예 뒷문을 두드리지 않았기 때문이다. 그는 정문으로 걸어 들어왔고, 정문은 그를 위해 열려 있었다.
다중서명 임계값은 "누가 서명할 수 있는가"를 관리한다. 그것은 "서명하는 이 대상이 올바른가"라는 질문에 답할 수 없다. 위조가 서명보다 더 아래 계층, 즉 노드 소프트웨어가 무엇이 진짜 돈인지 판단하는 계층에서 발생할 때, 임계값이 아무리 높아도 잘못된 지출에 더 가지런한 서명을 붙여줄 뿐이다.
5. 그것은 어떻게 발견되었는가
아이러니하게도, 이 취약점은 서로 다른 노드 사이에 분기를 일으킨다. 같은 블록을 어떤 노드는 받아들이고, 어떤 노드는 거부한다. 각자의 캐시에 이전에 무엇이 저장되어 있었는지에 따라 달라진다.
비트코인 코어 개발자 Antoine Poinsot은 당시 그 핵심 블록이 "mempool에서는 거부되었지만 Blockstream에서는 받아들여졌다"고 공개적으로 지적했다.

그리고 mempool.space 자체가 연방 구성원 중 하나였다.它的 실시간 감사 프로그램이 -4,019 BTC의 이상 인출을 포착했지만, Liquid 공식 대시보드는 당시 이 손실을 동기화해 반영하지 않았다. 두 모니터링 시스템이 서로 다른 세계를 보여준 것이다.
이어진 숫자는 매우 눈에 거슬린다: 온체인에는 4,205개의 L-BTC가 유통되고 있었지만, 연방 지갑의 실제 비트코인은 몇 건의 후속 인출 처리 후 197개만 남아, 담보율이 5% 미만이었다.
여기에는 기밀 거래의 또 다른 면도 숨어 있다: 프라이버시의 대가는 검증 가능성이다. 금액이 숨겨지면, 외부의 누구도 "장부상 예금증서 총량"과 "금고의 실제 코인 잔액"을 실시간으로 대조할 수 없다. 1:1은 누구나 검증할 수 있는 사실에서 믿어야 하는 선언으로 퇴화한다. 그것이 반증되었을 때,缺口은 이미 3억 2천만 달러였다.
6. 취약점보다 더 눈에 띄는 것, 그 패치
이야기가 여기서 끝난다면, 그것은 수준 높은 암호학 공격에 불과하다. 하지만 후반부가 남아 있다.
그 캐시 결함을 수정하는 코드는 8월 3일에 이미 코드 저장소에 제출되었고, 제목에는 분명히 적혀 있었다: 범위 증명 캐시를 자산과 출력 스크립트에 바인딩한다. 9월 2일, 그것은 메인 브랜치에 병합되었다.
그런데 사건 당시 연방 노드가 실행하던 것은 23.3.3 버전, 즉 4월 13일에 출시된 버전으로, 이 수정을 포함하지 않았다. 9월 6일 사건 발생 후 3시간도 채 지나지 않아, 이 패치는 긴급히 릴리스 브랜치에 병합되었다.
분명히 해둘 것은, 공식이 이번 사건이 이 결함 때문이라고 공식 확인하지는 않았다는 점이다. 위의 대응 관계는 외부 연구자들의 재구성에서 나온 것이다. 그러나 타임라인 자체만으로도 더 보편적인 문제를 충분히 설명한다: 취약점이 고쳐진 것과 고쳐진 코드가 실제로 프로덕션 환경에서 돌아가는 것은 별개의 문제이며, 그 사이에 다섯 달이 끼어 있을 수 있다.
Casa의 보안 책임자 Jameson Lopp은 또 다른 점을 지적했다: 연방 노드의 코드 저장소 공개 기록에 따르면, 마지막 커밋은 2024년 4월이었다. 사건 발생으로부터 2년 이상 전이다.

3억 2천만 달러의 자산이 2년간 제대로 유지보수되지 않은 소프트웨어에 맡겨져 있었다. 이것은 암호학의 실패가 아니라 운영의 실패다.
7. "우리는 화이트햇이다", 그리고 Blockstream의 답변
그날 밤, 수취 주소가 온체인에 OP_RETURN 메시지를 보냈다:
we are whitehats. contact us on chain.(우리는 화이트햇이다, 온체인으로 연락하라.)
협상이 시작되었다. 9월 7일, 상대방은 3,400개의 비트코인(약 2억 7,200만 달러, 85%)을 반환했고, 598.5개(약 4,700만 달러)는 스스로 남겼다.
처음에는 양측이 비공개로 소통했고, Blockstream은 암호화되고 PGP 서명된 메시지로 답했다. 그러나 9월 8일부터 9일, 상대방은 요구를 공개 온체인 평문으로 옮겼고, 어조도 변


