コンテンツにスキップ

何が起きたのか

2022年1月28日、Qubit Financeは約8000万米ドル相当の暗号資産を不正に搾取されました。これはDeFi史上最大級のハッキング事件の一つであり、資金は一切返還されていません。


Qubit Financeは、Binance Smart Chain上のDeFiレンディングプロトコルであり、韓国企業**Mound Inc.**によって構築されました。同社は2021年5月に約4500万ドルのエクスプロイト被害を受けたPancakeBunnyの開発チームでもあります。Qubitは彼らの2度目の挑戦でした。

このプロトコルにはQBridgeが含まれていました。これはクロスチェーンブリッジであり、ユーザーがEthereum上でETHを預け入れると、BSC上で同等のqXETHトークンを受け取ることができ、それを担保として他の資産を借り入れることが可能でした。

Qubit FinanceはBinanceから明確に支持を受けており、Binance Smart Chain上で運用されていました。


ステップ1 — 2つの関数、1つのイベント

Section titled “ステップ1 — 2つの関数、1つのイベント”

QBridgeにはETHを預け入れる方法が2つありました:

  • depositETH() — 正しい関数。実際のETH(msg.value > 0)が必要。Depositイベントを発行。
  • deposit() — ERC-20トークン用に設計された関数。トークンコントラクトのsafeTransferFrom()を呼び出す。こちらも**Depositイベント**を発行 — まったく同じイベント型。

ブリッジイベントを処理するオフチェーンリレイヤーには、この2つを区別する手段がありませんでした。

ステップ2 — ゼロアドレスがホワイトリストに登録されていた

Section titled “ステップ2 — ゼロアドレスがホワイトリストに登録されていた”

ネイティブETHにはERC-20コントラクトアドレスが存在しないため、QBridgeはプレースホルダーとしてゼロアドレス0x0000000000000000000000000000000000000000)を使用していました。このゼロアドレスがコントラクトのホワイトリストに追加されていました。

ステップ3 — EOAへの呼び出しはサイレントに成功する

Section titled “ステップ3 — EOAへの呼び出しはサイレントに成功する”

deposit()がETHのresourceIDで呼び出されると、コントラクトはトークンアドレスをゼロアドレスに解決し、そこに対してsafeTransferFrom()を呼び出しました。

EVMでは、コントラクトコードを持たないアドレス(EOA)に対する関数呼び出しは、リバートもエラーも実際の送金も発生せず、サイレントに成功します。ゼロアドレスはEOAです。そのためsafeTransferFrom()は「成功」し、何も移動せず、コントラクトは正当なETH預入と同一のDepositイベントを発行しました。

このEVMの挙動は2019年の0x Protocolセキュリティアップデートで文書化されていました。Qubitチームはこれを知らなかったか、無視していました。

ステップ4 — リレイヤーがBSC上で実際のトークンを発行

Section titled “ステップ4 — リレイヤーがBSC上で実際のトークンを発行”

リレイヤーはDepositイベントを検知しましたが、それが偽物であることを知る術がなく、攻撃者に対してBSC上でqXETHトークンを発行しました — 何の裏付けもないまま。

攻撃者はこのプロセスを繰り返し実行し、膨大な量の偽qXETHを蓄積しました。

ステップ5 — 偽の担保、本物のローン

Section titled “ステップ5 — 偽の担保、本物のローン”

不正に発行されたqXETHを担保として使用し、攻撃者はQubit FinanceのBSCレンディングプールから約8000万ドル相当の実資産を借り入れました:WETH、BTCB、BNB、MATIC、CAKE、BUSDなど。

レンディングコントラクトは担保価値を正しくチェックしていましたが、不正はブリッジレベルで既に完了していました。


調査者たちは、未だ説明されていない事実を発見しました。

元々、deposit()関数とそのresourceIDWETH — 実際のコントラクトアドレスを持つ実在のERC-20トークン — のブリッジに使用されていました。これは正しく機能していました。

ハッキングの前のある時点で、オーナー専用関数が呼び出され、resourceIDのマッピングが変更されました — WETHのコントラクトアドレスがゼロアドレスに差し替えられたのです。この変更こそが、エクスプロイトを可能にしました。

重要な事実:

  • この変更を行えるのはコントラクトオーナーのみ
  • タイムロックは存在せず — 即座に反映された
  • 公表はされなかった
  • 説明は一切なされていない

Mound Inc.がその後に取った行動:

  • ハッカーに25万ドルを提示し、8000万ドルの返還を求めた(応答なし)
  • 警察への届出を主張 — 事件番号は一切提示されなかった
  • モデレーター@molehを通じて被害者をTelegramから排除
  • CTOが2022年2月1日にLinkedInを削除 — ハッキングから4日後
  • Binanceセキュリティや主要取引所に連絡せず、ハッカーウォレットのブラックリスト登録を行わなかった
  • ハッカーに関する情報を提供したコミュニティメンバーに対応しなかった

完全な記録については、チームの対応および9つの未回答の質問を参照してください。


0xd01ae1a708614948b2b5e0b7ab5be6afa01325c7

資産推定USD価値
WETH約2660万ドル
BTCB約1530万ドル
BNB約950万ドル
MATIC約560万ドル
CAKE約800万ドル
BUSD + その他約1500万ドル
合計約8000万ドル