トップへ戻る
公開日
2025年3月18日
筆者:Curvegrid

ByBit Safe{Wallet} バイビット・セーフウォレット ハッキング事件

史上最大のハッキング事件を深掘り。

概要

2025年2月21日、暗号資産取引所ByBitのSafe{Wallet}マルチシグウォレットがハッキング被害を受け、約14億6000万ドル相当の資産が流出したことが分かりました。

問題の取引は、Safe{Wallet}のオンチェーンバックエンドを更新するもので、署名者6人のうち3人による有効な署名が含まれていました。これらの署名者はすべてByBitのスタッフであるとみられています。

しかし、Safe{Wallet}のウェブUI上で表示されていたトランザクションは、北朝鮮系とみられるハッカーによってすり替えられていたのです。この攻撃により、ハッカーはマルチシグウォレットを完全に掌握することに成功したとみられています。

攻撃者は、侵入後わずか13ブロック以内にByBitのウォレットから自身のウォレットへと資産を移動させました。2025年2月時点で、この被害規模は暗号資産市場における史上最大のハッキング事件となりました。

その後、攻撃者は資産を一連のオンチェーンミキサーおよびブリッジを通じて資産洗浄(ロンダリング)を行っているとみられています。

このブログ記事では、今回のハッキング事件について、分かりやすく包括的に解説します。暗号資産取引所やマルチシグウォレット、ハードウェアウォレットの仕組みにすでに詳しい方は、「ハッキングの経緯」まで読み飛ばしてください。

一般的な暗号資産取引所が顧客資産を管理する方法

暗号資産(仮想通貨)取引所は、ユーザーに代わって膨大なデジタル資産を管理しています。ユーザーが暗号資産を取引所に送金する際、通常は各ユーザー専用の入金アドレスに送られます。

取引所はその後、自動化されたソフトウェアプロセスを用いて、各ユーザーの入金アドレスから資産をまとめてホットウォレットへ移動(スイープ)します。このホットウォレット内では、ユーザーの資産は混合されますが、オフチェーンの台帳(データベース)上では個別に記録・管理されます。

ホットウォレットの利用により、取引所はユーザーからの暗号資産の出金要求に迅速に対応できます。ホットウォレットからユーザーのウォレットへ、単一のブロックチェーントランザクションで任意の額を送金できるためです。

(上図:暗号資産取引所のホットウォレットへの入出金の流れ)

ホットウォレットの仕組みとリスク管理

ホットウォレット自体は、スイープ処理や出金を管理するソフトウェアプロセス内で保護されるべき秘密鍵によって構成されています。もし、このホットウォレットを管理するコンピュータシステムが攻撃者によって侵害された場合、秘密鍵を悪用されてホットウォレット内の全資産が盗まれる可能性があります。ホットウォレットの使用は、出金リクエストに迅速に対応できるという点で、リスクと顧客体験のバランスを取ることになります。

コールドウォレットへの資産移動とセキュリティ対策

ホットウォレット内の残高がある程度以上に増え、取引所が許容するリスクの範囲を超えた場合、暗号資産取引所はその一部をコールドウォレットへ移動させます。

コールドウォレットも通常は秘密鍵のペアによって管理されますが、ホットウォレットとは異なり、自動化されたシステム上でオンラインで保管されることはありません。そのため、コールドウォレットから資産を移動するには、何らかの手動によるプロセスが必要です。

例えば、ある取引所では、コールドウォレットの秘密鍵をハードウェアウォレットに保存し、金庫に保管することがあります。この場合、ホットウォレットを補充するためにコールドウォレットから資産を移動する際は、安全を確保するために、2人の上級スタッフが立ち会い、エアギャップ(ネットワーク接続のない)コンピュータに接続して取引に署名する必要があります。

(上図:暗号資産取引所のホットウォレットとコールドウォレット間の資産フロー)

今回悪用されたByBitのコールドウォレットは、一般的な秘密鍵で管理されるものではなく、「オンチェーン・マルチシグネチャ(マルチシグ)ウォレット」と呼ばれる別の形式のウォレットでした。

マルチシグウォレットとは?

EthereumやEthereum Virtual Machine(EVM)エコシステムにおいて、マルチシグウォレットは通常、スマートコントラクトとして実装されます。このスマートコントラクトは、そのコード内に定義されたルールに従って暗号資産を保持・送金することができます。 例えば、「N人の署名者のうち少なくともM人の承認が必要」(例:3人中2人)という条件を設定し、その条件を満たすことでマルチシグウォレットから別のアドレスに資産を移動できます。 ここでいう「署名者」とは、ハードウェアウォレットまたはソフトウェアウォレット上で秘密鍵を管理する個人のことです。署名のしきい値(必要な署名者の数)は、マルチシグウォレットのスマートコントラクトがブロックチェーン上にデプロイされる際に設定されます。 オンチェーンのマルチシグウォレットのセキュリティは、攻撃者が資産を盗むためには、設定されたしきい値(例:3人中2人)の署名者の秘密鍵を少なくとも取得しなければならないという点にあります。

(上図:マルチシグウォレットの署名者による資産の承認と譲渡)

最も人気があり、広く使われているマルチシグウォレットの一つは、GnosisからスピンアウトしたSafe社のSafe{Wallet}です。このウォレットは、Gnosisから分離独立したSafeによって開発され、以前から人気のあったGnosis Multisig Walletの進化版と言えます。 Safe{Wallet}はオンチェーンのスマートコントラクトとして実装されており、それと効率的にやり取りするためにはオフチェーンのユーザーインターフェース(UI)が必要です。Safeは、この目的のためにapp.safe.globalというウェブUIを運営しています。Safe{Wallet}のオンチェーンスマートコントラクトと オフチェーンのウェブUIはどちらもオープンソースであり、ソースコードは公開されていて誰でも確認、再コンパイル、または自分自身でホスティングすることができます。

署名者としてのハードウェア・ウォレット

秘密鍵とは、極めて長く非常にランダムな数字のことです。この数字は推測されないように十分に大きく、かつランダムに生成される必要があります。その大きさは、例えるなら「観測可能な宇宙に存在するすべての原子の数」に匹敵するほどです。 ソフトウェアウォレット(例:MetaMask)は、ノートパソコンやデスクトップコンピュータ上、あるいはモバイルデバイスのアプリとして動作するプログラムです。これらはホストデバイス上で秘密鍵を生成し保存します。しかし、これらはインターネットに接続された汎用コンピュータであるため、フィッシングや脆弱性を狙った攻撃に対して脆弱であり、多くの攻撃は特に暗号資産をターゲットとしています。

一方、ハードウェアウォレット(例:Ledger、Trezor)は、秘密鍵の生成と保存、署名されていないトランザクションの受け取り、ユーザーによる署名操作の確認、そして署名済みトランザクションをコンピュータやモバイルデバイスを介してブロックチェーンに送信することを専門に行う専用デバイスです。 ハードウェアウォレットは通常、シンプルなUSBインターフェースでホストデバイスに接続され、攻撃に対して強化されたセキュリティが施されています。

(上図:USB経由でコンピューターに接続されたLedgerのハードウェア・ウォレット)

ソフトウェアウォレットとハードウェアウォレットのいずれも、操作する人が必要です。トランザクションを確認し、署名するための承認作業を行う必要があります。

ハッキングの経緯

The attackers were undoubtedly looking at the whole chain of operations of ByBit’s multisig wallets: ByBit staff members with their individual private keys, the off-chain Safe{Wallet} web UI, and the on-chain Safe{Wallet} multisig smart contract.

(Figure above: Architecture of ByBit’s Safe{Wallet} setup)

攻撃者は、GitHub で公開されている Safe{Wallet} Web UI のソースコードの侵害を試みるのではなく、Amazon Web Services (AWS) にデプロイされている本番の Safe{Wallet} Web UI を標的としました。彼らは、多くの Safe のスタッフが、app.safe.global で Safe{Wallet} Web UI を実行する Safe の AWS インフラストラクチャにアクセスできることを突き止めました。おそらくスピアフィッシング攻撃によって、Safe のスタッフの 1 人のラップトップにアクセスし、AWS のアクセス認証情報を引き出すことができました。そこから、彼らはSafe{Wallet} Web UIを自分たちのバージョンに置き換えることが可能となります。

(Figure above: Attacker phishing Safe{Wallet} employee’s AWS credentials and deploying exploit code to Safe{Wallet} web UI hosted on AWS)

ハッキングされたWeb UIは正規のものとほぼ同一でしたが、ユーザーが接続して特定のマルチシグトランザクションを開始する際に、表向きはユーザーが署名しようとしている正規のトランザクションを表示する一方で、バックグラウンドではその正規のトランザクションを攻撃者が選んだ別のものにすり替える仕組みになっていました。

Safe{Wallet}のオンチェーン・マルチシグ・スマート・コントラクトはプロキシ・パターンを使用しており、実際には2つのスマート・コントラクトであることを意味します。実装スマートコントラクトはコンピュータコードの大部分を含み、Safe{Wallet}チームによってブロックチェーンに一度デプロイされます。将来のすべてのSafe{Wallet}スマートコントラクトは、自身の状態を保持するプロキシですが、元の実装スマートコントラクトのロジックに依存します。これにより、アップグレードが可能になり、Safe{Wallet}をデプロイするための取引手数料を削減することができますが、その代償として複雑さと攻撃対象が広がります。

(Figure above: Attackers replacing the legitimate Safe{Wallet} implementation contract for ByBit’s Safe{Wallet} with one that granted them complete control)

侵害されたウェブUIは、ByBitのSafe{Wallet}に対してのみ有効化され、トリガーがかかるまで検知されないようになっていました。2025年2月21日、6人のByBit署名者のうち3人が、おそらくByBit Safe{Wallet}のコールドウォレットからByBitのホットウォレットへ資産を送金する、日常的な取引と思われるものを承認しました。攻撃者は、ByBitの署名者を騙すことができるのは一度だけだと考え、オリジナルのSafe{Wallet}実装コントラクトと彼ら自身がデザインしたコントラクトを入れ替えるトランザクションに署名させました。

(Figure: End-to-end view of how the attackers gained control over ByBit’s Safe{Wallet})

侵害されたウェブUIは、ByBitのSafe{Wallet}に対してのみ有効化され、トリガーがかかるまで検知されないようになっていました。2025年2月21日、6人のByBit署名者のうち3人が、おそらくByBit Safe{Wallet}のコールドウォレットからByBitのホットウォレットへ資産を送金する、日常的な取引と思われるものを承認しました。攻撃者は、ByBitの署名者を騙すことができるのは一度だけだと考え、オリジナルのSafe{Wallet}実装コントラクトと彼ら自身がデザインしたコントラクトを入れ替えるトランザクションに署名させました。

更新されたスマートコントラクトには、攻撃者にのみ回答する2つの機能があります:マルチシグから攻撃者が選んだアドレスにすべてのETHを転送するsweepETHと、指定されたERC20トークンに対して同じことを行うsweepERC20です。

(Figure above: Attackers use their control over ByBit’s Safe{Wallet} to steal all of its assets)

攻撃者がsweepETHとsweepERC20を連続して何度も呼び出すのに要したブロック数はわずか13ブロックであり、14億6000万米ドルの暗号通貨を自分のウォレットに盗み出すことに成功しました。一方、ByBitは彼らのSafe{Wallet}へのアクセスをすべて失いました。

ブロックチェーンのユーザー体験の実態

これらすべての要因は、トランザクションへの署名に関して、ブロックチェーンのユーザーエクスペリエンスにまだ改善すべき点が多く残っていることです。ByBitの署名者はおそらくすべて、app.safe.globalにある同じSafe{Wallet}ウェブUIを使用していたと思われますが、これは単一障害点であり、ByBitの直接の管理下にはありませんでした。

(Figure above: Reviewing a transaction on the Safe{Wallet} web UI at app.safe.global)

技術的な観点から見ると、Safe{Wallet}トランザクションは、Ledgerハードウェアウォレットの基本モデルでは、署名されようとしているトランザクションに関する人間が読める重要な詳細をデコードして表示することができないほど複雑です。

(Figure above: Reviewing a Safe{Wallet} transaction on a Ledger Nano S Plus hardware wallet connected to a laptop)

結論

国家レベルの攻撃者に対抗することは非常に困難です。なぜなら、彼らは事実上無限のリソースと制約のない時間を持っているからです。ByBitは多くのことを正しく行い、Safe{Wallet}はマルチシグウォレットの優れた選択肢であり続けています。しかし、どのようなトランザクション署名ワークフローにおいても、単一障害点を排除するか、少なくとも軽減することが重要です。app.safe.globalにあるSafe{Wallet}のウェブUIをトランザクションの承認に使用することもできますが、トランザクションの作成には、MultiBaasのような Safe{Wallet} トランザクションの作成をサポートする代替のWeb UIを利用することも可能です。署名者は自分が署名する取引の詳細やハッシュを時間をかけて確認することもできます。暗号資産取引所のような価値の高いプラットフォームでは、Safe{Wallet}ウェブUIの独自のコピーを稼働させ、積極的で24時間体制の情報セキュリティチームとエンドポイント保護ソフトウェアを導入することは、決して過剰ではないと言えるでしょう。

最後に、興味深い点として、攻撃者は実際の攻撃に先立つ数日間、Ethereum上で「本番環境でのテスト」を行っていたことが挙げられます。具体的には、元の攻撃者のウォレットにガス代を供給したウォレットを通じて、Safe{Wallet} をデプロイし、何度も攻撃を実行していました。おそらく、侵害された Safe{Wallet} のUIを利用してテストを行い、本番での攻撃に備えていた可能性があります。こうした攻撃を未然に防ぐためには、より高度な事前監視・検知ツールの開発が求められます。

盗まれた暗号資産のごく一部が回収されたとはいえ、業界がこの件から学び、ウォレットのユーザー体験とともにセキュリティのベストプラクティスを進化させ続けることを期待します。