블로그로 돌아가기
보안

Bybit 해킹의 교훈: 서명 UX가 멀티시그의 가장 약한 고리다

세 개의 멀티시그 서명 키가 화면에 표시된 안전한 이체를 승인하지만, 실제로 서명된 페이로드는 숨겨진 경로를 따라 자금을 빼돌린다

2월 21일, Bybit의 한 콜드월렛에서 약 15억 달러 상당의 ETH와 스테이킹된 ETH 토큰이 단 한 건의 승인된 거래로 빠져나갔습니다 — 기록상 최대 규모의 암호화폐 도난 사건입니다. 그 지갑은 멀티시그였습니다. 필요한 서명자가 모두 서명했습니다. 그리고 어떤 조사에서 드러난 바에 따르더라도, 개인 키가 탈취된 적은 없습니다. Bybit 해킹의 교훈 중 단 하나만 기억해야 한다면, 바로 이것입니다: 암호는 버텼지만, 돈은 그래도 빠져나갔다는 사실입니다.

이것은 멀티시그를 반박하는 근거가 아닙니다. 우리는 멀티시그 지갑을 만들고 있으며, 여전히 M-of-N 서명이 큰 자금을 보관하는 가장 독립적으로 검증 가능한 방법이라고 봅니다. 이것은 진짜 공격 표면이 어디에 있는지에 관한 이야기입니다. 멀티시그는 키의 커스터디를 분산하지만, 그 자체로 검증까지 분산하지는 않습니다. 모든 서명은 서명자가 눈앞의 페이로드를 이해한 만큼만 신뢰할 수 있습니다 — 그리고 2월 21일, 그 이해는 공격자가 조작해 낸 것이었습니다.

2주가 지난 지금 우리가 아는 것

이 글을 쓰는 시점에서, Bybit의 발표, Safe의 사후 공개, 그리고 FBI의 공식 배후 지목을 종합해 그려지는 그림은 일관됩니다. Bybit 팀은 이전에 여러 번 사용해 온 Safe{Wallet} 웹 인터페이스를 통해, Ethereum 콜드 멀티시그에서 웜 월렛으로 자금을 옮기는 일상적인 이체를 수행하려 했습니다. 각 서명자는 정상적으로 보이는 거래를 봤습니다: 익숙한 인터페이스, 예상된 흐름, 몸에 밴 습관을 멈춰 세울 만한 것은 아무것도 없었습니다.

정족수가 실제로 승인한 것은 다른 것이었습니다. 그 거래는 지갑 자체의 스마트 컨트랙트 로직을 조용히 바꿔치기했고, 공격자가 통제하는 구현체로 교체했습니다. 진짜 서명들이 온체인에 기록되자, 금고는 새 로직을 따랐고 약 40만 ETH와 스테이킹된 ETH 토큰 — 당시 약 15억 달러 — 이 빠져나갔습니다. Safe의 조사는 침해의 출발점을 한 개발자의 머신으로 추적했으며, 악성 코드는 프런트엔드를 통해 전달되었고 특정하여 Bybit의 서명자들을 겨냥했습니다; 다른 모든 사람에게는 인터페이스가 정상적으로 작동했습니다. 2월 말, FBI는 이 작전을 TraderTraitor라는 이름으로 추적해 온 북한의 Lazarus Group의 소행으로 공식 지목했습니다.

똑같이 비중 있게 다뤄야 할 사실이 두 가지 더 있습니다. Bybit은 지급 능력을 유지했고, 사태 이후로도 출금 처리를 계속했습니다. 그리고 어느 시점에도 키 자체가 유출되지는 않았습니다: 피싱으로 빼돌린 시드 문구도 없었고, 압수된 서명 기기도 없었으며, 수학적으로 우회된 임계값도 없었습니다.

키는 버텼다 — 그리고 바로 그것이 핵심이다

멀티시그 지갑은 자금이 움직이기 전에 N개 중 M개의 독립적인 키가 거래를 승인하도록 요구합니다. 이 속성은 2월 21일에 완벽하게 작동했습니다. 서명은 진짜였고, 정족수는 정당했으며, 컨트랙트는 서명된 내용을 정확히 실행했습니다. 공격자는 수학을 무너뜨리려 하지 않았습니다; 그들은 정족수가 스스로 거짓에 서명하도록 판을 짰습니다. Bybit 해킹은 거래 검증의 실패였지, 멀티시그 암호의 실패가 아니었습니다.

서명이란 페이로드에 대한 하나의 의견입니다. 당신이 검증한 페이로드가 당신이 서명한 페이로드가 아니라면, 서명자의 수는 아무 의미가 없습니다.

“콜드월렛이 해킹당했다”라고 쓴 헤드라인들은 이 구분을 놓치고 있으며, 이 구분은 무엇을 고쳐야 하는지를 결정하기 때문에 중요합니다. 콜드 스토리지는 자기 몫의 좁은 임무를 다했습니다: 키는 온라인 머신에 결코 닿지 않았습니다. 멀티시그도 자기 몫의 좁은 임무를 다했습니다: 어떤 단일 서명자도 혼자서는 움직일 수 없었습니다. 실패한 구성 요소는 거의 아무도 자신의 위협 모델에 적어 넣지 않는 것 — 바로 화면입니다.

블라인드 서명, 정확히 말하면

블라인드 서명이란 서명자가 그 진짜 내용을 독립적으로 검증할 수 없는 거래를 승인하는 것입니다. Ethereum에서 서명자가 암호학적으로 승인하는 것은 구조화된 거래 데이터의 해시이지, 화면에 표시된 사람이 읽을 수 있는 요약이 아닙니다. 어떤 소프트웨어가 그 데이터를 다시 의도 — 수신처, 금액, 컨트랙트 호출 — 로 디코딩해야 하고, 서명자는 그 소프트웨어가 주장하는 바를 그대로 물려받습니다. 인터페이스가 거짓말을 하면, 사람은 허구를 확인하고 체인은 진실을 실행합니다.

Bybit 거래는 바로 이 틈을 악용했습니다. 대부분의 인터페이스가 눈에 띄게 드러내지 않는 단 하나의 필드 — 연산 유형(operation type) — 이, 겉보기에는 이체인 것을 지갑의 로직을 뜯어고치는 delegatecall로 바꿔 놓았습니다. 하드웨어 서명 기기라고 해서 이 틈이 자동으로 메워지는 것도 아닙니다: 불투명한 해시만 표시하는 기기는 어떤 사람도 해석할 수 없는 것을 사람더러 검증하라고 요구하는 셈입니다. 그것은 검증을 흉내 낸 연극이며, 오히려 아무것도 없느니만 못하다고 할 수 있습니다. 검토를 더하지 않은 채 확신만 만들어 내기 때문입니다.

같은 서명자들에게서 갈라지는 두 갈래: 화면은 금고로 향하는 확인된 이체를 보여 주지만, 실제로 서명된 페이로드는 지갑을 공격자에게 넘겨주는 delegatecall이다
서명자들이 본 것과 정족수가 서명한 것은 인터페이스에서 갈라졌다.

하나의 프런트엔드, 하나의 정족수, 하나의 실패

Bybit의 서명자들은 각기 다른 기기에서 독립적인 키를 보유하고 있었습니다. 하지만 그들은 모두 같은 웹 프런트엔드를 통해 거래를 검증했고, 그래서 침해된 인터페이스 하나가 정족수 전체에 한꺼번에 닿았습니다. 서명자의 독립성은 단지 독립적인 키가 아니라 독립적인 검증 채널을 요구합니다. 서명자들이 모두 하나의 화면을 신뢰하는 3-of-3 지갑은, 실질적으로는 1-of-1로 무너집니다 — 그리고 그 “1”은 인터페이스를 통제하는 자입니다.

이 교훈은 방식을 가리지 않습니다. MPC 지갑은 온체인 컨트랙트를 분산된 키 조각으로 대체하지만 — 그 장단점은 MPC vs 멀티시그: 솔직한 비교에서 다뤘습니다 — MPC 정족수 역시 정확히 같은 지점에서 끝납니다: 어떤 인터페이스가 렌더링해 준 페이로드를 사람이 승인하는 것이죠. 그리고 그토록 많은 에너지가 멀고 이색적인 위협에 쏠리는 반면 — 지난 12월에는 양자 컴퓨터가 비트코인의 키에서 얼마나 멀리 떨어져 있는지를 짚어 봤습니다 — 업계 역사상 최대의 도난은 새로운 암호를 전혀 필요로 하지 않았다는 사실은, 업계의 우선순위에 관해 무언가를 말해 줍니다. 그것이 필요로 한 것은 JavaScript였습니다.

Bybit 해킹이 주는 실전 교훈

아래 어느 것도 새로운 암호나 새로운 하드웨어를 필요로 하지 않습니다. 이것은 운영상의 규율이며 — 바로 그렇기 때문에 건너뛰기 마련입니다.

  1. 모든 서명 화면을 신뢰할 수 없는 것으로 취급하라. 당신의 거래를 만들어 주는 인터페이스는, 잔액이 공격의 수고를 정당화하는 순간 표적이 됩니다. 그것이 가장 중요한 바로 그날 당신에게 거짓말을 할 수 있다고 가정하십시오.
  2. 두 번째의 독립적인 표면에서 검증하라. 원시 거래 — 수신처, 값(value), calldata, 연산 유형 — 를, 그것을 만든 머신과 아무것도 공유하지 않는 기기에서 디코딩하십시오. 두 화면이 똑같이 거짓말을 하는 것은 화면 하나가 홀로 거짓말을 하는 것보다 훨씬 어려운 공격입니다.
  3. 불투명한 페이로드를 거부하라. 서명자가 거래가 무엇을 하는지 매개변수 하나하나까지 볼 수 없다면, 그 거래에 대한 올바른 서명 수는 0입니다. “아마 늘 하던 그 이체겠지”가 바로 15억 달러가 움직이는 방식입니다.
  4. 피해 범위를 제한하라. 주소 화이트리스트, 일일·월간 한도, 그리고 분리된 역할은 잘못된 승인 하나를 전면적 손실이 아니라 상한이 정해진 손실로 바꿔 놓습니다. Bybit의 손실이 그 금고에서 전면적이었던 것은, 승인된 거래 하나가 할 수 있는 일을 제약하는 것이 아무것도 없었기 때문입니다.
  5. 일상적인 작업일수록 속도를 늦춰라. 이 공격은 팀이 수행하는 가장 평범한 작업으로 위장했습니다. 평범한 작업일수록 가장 적은 검토를 받기 때문입니다. 일상적이라는 것은 긴장을 늦출 이유가 아니라, 공격자가 골라 입을 의상입니다.

이것이 Ownbit의 서명 방식을 어떻게 빚어 왔는가

위의 Bybit 해킹 교훈 가운데 오래 남을 것은 구조적인 교훈입니다: 최종 검증은 침해된 머신이 닿을 수 없는 어딘가에 있어야 한다는 것이죠. Ownbit의 콜드월렛 워크플로는 바로 그 발상을 중심으로 설계되었습니다. 남는 휴대폰 한 대가 에어갭 서명자가 되고, 온라인 휴대폰은 키를 전혀 보유하지 않는 워치 월렛을 실행해 서명되지 않은 거래를 만든 뒤 QR 코드로 넘겨줍니다. 오프라인 휴대폰은 어떤 서명도 존재하기 전에 실제로 무엇에 서명하라고 요청받고 있는지를 보여 주고, 같은 방식으로 서명을 돌려줍니다. 이 QR 구간은 의도적으로 좁습니다: 모든 거래가 두 번째의 독립적인 표면을 반드시 거치게 되고, 키를 쥔 기기는 오염되었을지 모를 웹 페이지를 결코 불러오지 않습니다.

온라인 워치 월렛이 서명되지 않은 거래를 만들어 에어갭 너머의 오프라인 휴대폰으로 QR 코드로 전달하고, 오프라인 휴대폰은 이를 검증한 뒤 서명만을 QR로 돌려준다
에어갭을 넘는 것은 QR 코드뿐이다: 서명되지 않은 거래가 들어가고, 서명이 나온다.

팀을 위한 엔터프라이즈 멀티시그는 피해 범위에 관한 교훈을 곧바로 적용합니다: 누가 서명하든 자금이 등록되지 않은 수신처에는 닿지 못하게 하는 주소 화이트리스트, 일일·월간 지출 한도, Owner·Signer·Security Admin 역할, 그리고 긴급 정지입니다. 이러한 제어가 기만을 불가능하게 만들지는 못하지만 — 무엇도 그것을 완전히 막지는 못합니다 — 조작된 승인 하나가 초래할 수 있는 비용에는 상한을 씌웁니다.

그리고 우리 자신에 관한 솔직한 한마디. Ownbit의 서버는 서명을 조율할 뿐 사용자 키를 결코 보유하지 않습니다; Ownbit 멀티시그의 모든 키는 표준 BIP39 시드 문구이며, 복구는 우리의 인프라 없이도 작동합니다. 최소화된 신뢰는 양쪽으로 작용합니다: 침해된 코디네이터가 당신에게 할 수 있는 일을 제한하는 바로 그 설계가, 우리가 표적 공격에 면역인 척하지 않고도 Bybit의 최악의 한 주에 대해 쓸 수 있는 이유입니다. 벤더에게 요구할 만한 기준은 무적임을 주장하는 것이 아니라, 피해에 한계가 있음입니다.

자주 묻는 질문

Bybit 해킹은 멀티시그의 실패였나요?

아닙니다. 멀티시그 컨트랙트는 임계값을 올바르게 강제했고, 개인 키는 탈취되지 않았습니다. 필요한 서명자들이 지갑 자체의 로직을 바꾸는 거래를 승인하도록 속았을 뿐입니다 — 실패는 멀티시그 암호가 아니라 거래 검증에 있었습니다. 올바른 대응은 멀티시그를 버리는 것이 아니라 독립적인 검증을 더하는 것입니다.

암호화폐에서 블라인드 서명이란 무엇인가요?

블라인드 서명이란 그 진짜 내용을 독립적으로 검증할 수 없는 거래를 승인하는 것입니다. 서명자는 기술적으로 거래 데이터의 해시에 서명하며, 그것을 정직하게 디코딩해 주는 인터페이스에 의존합니다. 그 인터페이스가 침해되면, 서명자는 자신이 보는 것을 확인하면서 전혀 다른 것을 승인하게 됩니다.

Bybit 해킹으로 얼마가 도난당했나요?

약 15억 달러 상당의 ETH와 스테이킹된 ETH 토큰 — 약 40만 ETH — 으로, 2025년 3월 초 기준 기록상 최대 규모의 암호화폐 도난 사건입니다. FBI는 이 공격을 북한의 Lazarus Group의 소행으로 지목했습니다. Bybit은 지급 능력을 유지했고 고객 출금 처리를 계속했습니다.

멀티시그 서명자는 침해된 프런트엔드로부터 어떻게 스스로를 보호할 수 있나요?

그것을 만든 머신과 아무것도 공유하지 않는 두 번째 기기에서 모든 거래를 검증하고, 매개변수 하나하나까지 디코딩할 수 없는 페이로드에는 서명을 거부하십시오. 그런 다음 구조적 제한 — 주소 화이트리스트, 지출 상한, 역할 분리 — 을 더해, 속아 넘어간 승인 하나가 지갑 전체를 비우지 못하게 하십시오.

이 Bybit 해킹의 교훈이 당신 스스로의 서명 흐름을 다시 살펴보게 만들었다면, 그 직감은 옳습니다 — 그리고 더 나은 흐름을 시험해 보는 데 드는 것은 한나절이지, 자금 전체가 아닙니다. Ownbit의 콜드월렛 워크플로는 남는 휴대폰 한 대로 거래를 완전히 오프라인에서 검증하고 서명하게 해 주며, 엔터프라이즈 멀티시그는 한 사람 이상의 손을 거치는 자금을 위해 화이트리스트, 한도, 역할을 더합니다. 모든 신규 사용자는 7일 무료 체험을 받으며, 어느 쪽이든 당신의 키는 여전히 당신의 것입니다.