무슨 일이 있었나
2022년 1월 28일, Qubit Finance는 약 8천만 달러(USD) 규모의 암호화폐 자산을 탈취당했습니다. 이는 DeFi 역사상 최대 규모의 해킹 사건 중 하나로 남아 있습니다. 자금은 단 한 푼도 반환되지 않았습니다.
Qubit Finance는 Binance Smart Chain 기반의 DeFi 대출 프로토콜로, 한국 기업 **Mound Inc.**가 개발했습니다. 이 팀은 2021년 5월에 이미 약 4,500만 달러 규모의 해킹을 당한 PancakeBunny를 만든 동일한 팀입니다. Qubit은 그들의 두 번째 시도였습니다.
이 프로토콜에는 QBridge라는 크로스체인 브릿지가 포함되어 있었는데, 사용자가 Ethereum에 ETH를 예치하면 BSC에서 이에 상응하는 qXETH 토큰을 받을 수 있었고, 이를 담보로 다른 자산을 빌릴 수 있었습니다.
Qubit Finance는 Binance의 명시적인 지지를 받았으며 Binance Smart Chain에서 운영되었습니다.
익스플로잇 과정
섹션 제목: “익스플로잇 과정”1단계 — 두 개의 함수, 하나의 이벤트
섹션 제목: “1단계 — 두 개의 함수, 하나의 이벤트”QBridge에는 ETH를 예치하는 두 가지 방법이 있었습니다:
depositETH()— 올바른 함수. 실제 ETH가 필요했습니다 (msg.value > 0).Deposit이벤트를 발생시켰습니다.deposit()— ERC-20 토큰용으로 설계된 함수. 토큰 컨트랙트에서safeTransferFrom()을 호출했습니다. 역시Deposit이벤트를 발생시켰는데 — 정확히 동일한 이벤트 유형이었습니다.
브릿지 이벤트를 처리하는 오프체인 릴레이어는 이 두 이벤트를 구별할 방법이 없었습니다.
2단계 — 제로 주소가 화이트리스트에 등록됨
섹션 제목: “2단계 — 제로 주소가 화이트리스트에 등록됨”네이티브 ETH에는 ERC-20 컨트랙트 주소가 없기 때문에, QBridge는 제로 주소(0x0000000000000000000000000000000000000000)를 플레이스홀더로 사용했습니다. 이 제로 주소가 컨트랙트의 화이트리스트에 추가되었습니다.
3단계 — EOA 호출이 조용히 성공함
섹션 제목: “3단계 — EOA 호출이 조용히 성공함”deposit()이 ETH의 resourceID로 호출되면, 컨트랙트는 토큰 주소를 제로 주소로 해석하고 그 주소에 대해 safeTransferFrom()을 호출했습니다.
EVM에서는 컨트랙트 코드가 없는 주소(EOA)에 대해 어떤 함수를 호출하든 조용히 성공합니다 — 리버트도, 오류도, 실제 전송도 일어나지 않습니다. 제로 주소는 EOA입니다. 따라서 safeTransferFrom()은 “성공”했고, 아무것도 이동하지 않았으며, 컨트랙트는 정당한 ETH 예치와 동일한 Deposit 이벤트를 발생시켰습니다.
이 EVM 동작은 2019년 0x Protocol 보안 업데이트에서 이미 문서화되어 있었습니다. Qubit 팀은 이를 몰랐거나 무시했습니다.
4단계 — 릴레이어가 BSC에서 실제 토큰을 발행함
섹션 제목: “4단계 — 릴레이어가 BSC에서 실제 토큰을 발행함”릴레이어는 Deposit 이벤트를 감지했지만, 그것이 위조라는 것을 알 방법이 없었고, 공격자에게 BSC에서 qXETH 토큰을 발행해 주었습니다 — 아무런 실제 자산의 뒷받침 없이.
공격자는 이 과정을 반복하여 막대한 양의 위조 qXETH를 축적했습니다.
5단계 — 가짜 담보, 실제 대출
섹션 제목: “5단계 — 가짜 담보, 실제 대출”부정하게 발행된 qXETH를 담보로 사용하여, 공격자는 Qubit Finance의 BSC 대출 풀에서 약 8천만 달러 상당의 실제 자산을 빌렸습니다: WETH, BTCB, BNB, MATIC, CAKE, BUSD 등.
대출 컨트랙트는 담보 가치를 정확하게 확인했지만 — 사기는 이미 브릿지 단계에서 발생한 뒤였습니다.
의심스러운 파라미터 변경
섹션 제목: “의심스러운 파라미터 변경”조사관들은 한 번도 설명된 적 없는 사실을 발견했습니다.
원래 deposit() 함수와 그 resourceID는 WETH — 실제 컨트랙트 주소를 가진 실제 ERC-20 토큰 — 을 브릿지하는 데 사용되었습니다. 이는 정상적으로 작동했습니다.
해킹 이전 어느 시점에, owner 전용 함수가 호출되어 resourceID 매핑이 변경되었습니다 — WETH의 컨트랙트 주소가 제로 주소로 교체된 것입니다. 바로 이 변경이 익스플로잇을 가능하게 만들었습니다.
핵심 사실:
- 컨트랙트 소유자만이 이 변경을 할 수 있었음
- 타임락이 없었음 — 변경이 즉시 적용됨
- 공개 발표가 없었음
- 어떠한 설명도 제공된 적 없음
팀의 대응
섹션 제목: “팀의 대응”해킹 이후 Mound Inc.가 취한 조치:
- 해커에게 25만 달러를 제안하여 8천만 달러 반환을 요청 (응답 없음)
- 경찰에 신고했다고 주장 — 사건 번호를 제공한 적 없음
- @moleh 운영자를 통해 피해자들을 Telegram에서 제거
- CTO가 LinkedIn을 삭제 — 해킹 4일 후인 2022년 2월 1일
- Binance 보안팀에 연락하지 않았고, 해커 지갑을 블랙리스트하기 위해 주요 거래소에도 연락하지 않음
- 해커에 대한 정보를 제공한 커뮤니티 멤버들에게 응답하지 않음
전체 기록은 팀 대응 및 9가지 미답변 질문을 참조하세요.
해커 지갑
섹션 제목: “해커 지갑”0xd01ae1a708614948b2b5e0b7ab5be6afa01325c7탈취된 자산 추정
섹션 제목: “탈취된 자산 추정”| 자산 | 대략적 USD 가치 |
|---|---|
| WETH | ~2,660만 달러 |
| BTCB | ~1,530만 달러 |
| BNB | ~950만 달러 |
| MATIC | ~560만 달러 |
| CAKE | ~800만 달러 |
| BUSD + 기타 | ~1,500만 달러 |
| 합계 | ~8,000만 달러 |