ByBitセーフ{ウォレット}ハック
2025/03/18
要約
2025年2月21日、1つのブロックチェーン取引がByBit暗号通貨取引所のSafe{Wallet}マルチシグネチャウォレットのオンチェーンバックエンドを更新しました。この取引には、6人の署名者のうち3人からの有効な署名が含まれており、すべてByBitのスタッフメンバーであると思われます。彼らは知らなかったのですが、Safe{Wallet}のウェブUIで提示された取引は、北朝鮮のハッカーによって差し替えられ、攻撃者がマルチシグネチャ(マルチシグ)ウォレットに完全に制御を持つようになりました。13ブロック内で、攻撃者はByBitのウォレットから全額14.6億米ドルの資産を攻撃者の財布に移しました。これによって、現時点で最大のハッキングが達成されました。攻撃者は、オンチェーンミキサーやブリッジを通じて資産を洗浄しました。

このブログ記事では、ハックの包括的な内訳をわかりやすい用語で提供します。暗号交換、マルチシグウォレット、ハードウェアウォレットの内部作業にすでに精通している方は、ハックがどのように行われたかに飛ばしてください。
典型的な暗号交換が顧客資産を管理する方法
暗号(暗号通貨)交換は、ユーザーを代表して膨大なデジタル資産を管理します。ユーザーが暗号通貨を暗号交換に転送する際は、通常は各ユーザーに割り当てられるユニークな入金アドレスに最初に転送します。暗号交換は、その後、自動化されたソフトウェアプロセスを使用して、各ユーザーの入金アドレスから資産を集約されたホットウォレットに移動します。ユーザーの資産は、取引所のホットウォレットで混合されますが、オフチェーン元帳(データベース)では別々にクレジットされています。ホットウォレットは、顧客の暗号通貨の引き出し要求に迅速に対応するのに効率的です。なぜなら、単一のブロックチェーン取引でユーザーのウォレットに任意の量の暗号を転送できるからです。

(上の図: 暗号交換のホットウォレットへの資産の流れ)
ホットウォレット自体は、スイーピングや引き出しを管理するソフトウェアプロセス内で保護される必要がある秘密鍵で構成されています。ホットウォレットを管理するコンピュータシステムが攻撃者によって侵害された場合、秘密鍵を使用してホットウォレット内のすべての資産を盗むことができます。ホットウォレットの使用は、引き出し要求に迅速に応答できるという観点から、リスクと顧客体験のバランスです。
ホットウォレットの残高が十分に大きくなると、暗号交換はリスク許容度を超える部分をコールドウォレットに移動します。コールドウォレットも通常は秘密鍵ペアで表されますが、一般的には自動化されたシステム内では保持されません。したがって、コールドウォレットから資産を転送するには何らかの手動プロセスが必要です。たとえば、暗号交換はコールドウォレットの秘密鍵をハードウェアウォレットに保持し、安全に保管し、2人の上級スタッフメンバーがそれをエアギャップコンピュータに接続してコールドウォレットからホットウォレットに暗号を補充するための取引に署名する必要があります。

(上の図: 暗号交換のホットウォレットとコールドウォレット間の資産の流れ)
悪用されたByBitコールドウォレットは、実際には秘密鍵で表されているのではなく、オンチェーンマルチシグネチャ(マルチシグ)ウォレットという別のタイプのウォレットで表されていました。
マルチシグウォレット
イーサリアム(またはEthereum Virtual Machine、EVM)エコシステムにおいて、マルチシグウォレットは通常、スマートコントラクトとして実装され、スマートコントラクトのコンピュータコードに実装されたルールに従って暗号通貨を保持および配布できます。たとえば、少なくともMのN(たとえば、2の3)署名者が、マルチシグウォレットから別のアドレスに資産を転送する取引を承認しなければなりません。署名者は、ハードウェアウォレットまたはソフトウェアウォレット上の秘密鍵を制御する個人です。署名しきい値は、マルチシグウォレットスマートコントラクトのコンピュータコードがブロックチェーンに展開されたときに最初に設定されます。オンチェーンマルチシグウォレットのセキュリティは、攻撃者が資産を盗むために、署名者の秘密鍵の少なくとも署名しきい値(たとえば、2の3)を侵害する必要があるという事実にあります。

(上の図: マルチシグウォレットの署名者による資産の承認と転送)
最も人気があり広く使用されているマルチシグウォレットの1つは、SafeによるSafe{Wallet}で、これはGnosisからスピンアウトしたものです。これは、以前に同様に人気があったGnosisマルチシグウォレットの進化です。オンチェーンスマートコントラクトとして、Safe{Wallet}はこれと効率的に相互作用できるオフチェーンユーザーインターフェース(UI)を必要とします。Safeはこれを行うためのapp.safe.globalウェブUIを運営しています。Safe{Wallet}のオンチェーンスマートコントラクトとオフチェーンウェブUIはどちらもオープンソースであり、つまりソースコードは公開され、誰でも検査、再コンパイル、ホストできます。
署名者としてのハードウェアウォレット
秘密鍵は基本的に非常に長く、非常にランダムな数字です。これは十分に大きく、十分に無作為に生成されて推測できない必要があります。-知られている宇宙の原子の数と同様に大きな数を考えてください。ソフトウェアウォレット(例: MetaMask)は、ラップトップまたはデスクトップコンピュータ上で実行されるコンピュータプログラムで、またはモバイルデバイス上のアプリケーションとして機能します。これらは秘密鍵を生成してホストデバイスに保存します。しかし、インターネットに接続された汎用コンピュータであるため、フィッシングや脆弱性攻撃の危険にさらされており、その中には暗号通貨を特に狙ったものが多くあります。
ハードウェアウォレット(例: Ledger, Trezor)は、秘密鍵を生成して保存し、未署名の取引を受信し、ユーザーにこれらの取引に署名するように促し、署名された取引をコンピュータやモバイルデバイスを介してブロックチェーンに戻す特別なデバイスです。通常はホストデバイスにシンプルなUSBインターフェースを介して接続され、攻撃に耐性があります。

(上の図: USBを介してコンピュータに接続されたLedgerハードウェアウォレット)
ソフトウェアとハードウェアウォレットの両方は、操作する人が必要で、取引をレビューして承認し署名する必要があります。
ハックがどのように行われたか
攻撃者は、ByBitのマルチシグウォレットの全体の操作チェーンを確実に見ていました: ByBitのスタッフメンバーとその個々の秘密鍵、オフチェーンSafe{Wallet}ウェブUI、およびオンチェーンSafe{Wallet}マルチシグスマートコントラクト。

(上の図: ByBitのSafe{Wallet}セットアップのアーキテクチャ)
攻撃者は、GitHubでのSafe{Wallet}ウェブUIの公開ソースコードを侵害しようとしたのではなく、代わりにAmazon Web Services(AWS)にデプロイされたプロダクションSafe{Wallet}ウェブUIをターゲットにしました。彼らは、複数のSafeスタッフメンバーが、Safe{Wallet}ウェブUIがapp.safe.globalで実行されるためのSafeのAWSインフラにアクセスできることを確認しました。おそらくスピアフィッシング攻撃を通じて、彼らは1人のSafeスタッフメンバーのラップトップにアクセスし、そのAWSアクセス資格情報を抽出しました。そこから、彼らは自分たちのバージョンでSafe{Wallet}ウェブUIを置き換えました。

(上の図: 攻撃者がSafe{Wallet}従業員のAWS資格情報をフィッシングしてSafe{Wallet}ウェブUIに悪用コードをデプロイする)
ハッキングされたウェブUIは正規のものとほぼ同一ですが、ユーザーがそれに接続して特定のマルチシグ取引を開始するプロセスを経ると、ユーザーが署名することを期待していた取引を表示しましたが、バックグラウンドでは正規の取引を攻撃者の選択したものと置き換えていました。
Safe{Wallet}オンチェーンマルチシグスマートコントラクトはプロキシパターンを使用しており、つまり実際には2つのスマートコントラクトです。実装スマートコントラクトはコンピュータコードの大部分を含み、Safe{Wallet}チームによって一度だけブロックチェーンにデプロイされます。将来のすべてのSafe{Wallet}スマートコントラクトは、自身の状態を保持するプロキシですが、元の実装スマートコントラクトのロジックに依存します。これにより、アップグレード可能になり、Safe{Wallet}をデプロイするための取引手数料を削減しますが、複雑さと広範な攻撃面が増加します。

(上の図: 攻撃者がByBitのSafe{Wallet}の正当な実装契約を完全な制御を与えた自分たちのものと置き換える)
侵害されたウェブUIはByBitのSafe{Wallet}のみに対してだけアクティブ化され、トリガーされるまで検出されませんでした。2025年2月21日、6人のByBitの署名者のうち3人が彼らが思っていたのは通常の取引を承認したかもしれません。おそらくByBitのSafe{Wallet}コールドウォレットからByBitのホットウォレットに資産を移動しました。攻撃者は、ByBitの署名者を一度だけだましておくことができると考え、元のSafe{Wallet}実装契約を自分たちの設計のものに置き換える取引に署名させました。

(図: 攻撃者がByBitのSafe{Wallet}の制御を得るまでのエンドツーエンドのビュー)


更新されたスマート契約には、攻撃者が選択したアドレスにリダイレクトするすべてのETHを転送するsweepETHという機能と、特定のERC20トークンに対して同様のことを行うsweepERC20という2つの機能があります。

(上の図: 攻撃者がByBitのSafe{Wallet}を使用してその資産を盗む)
攻撃者は、13ブロックかけてsweepETHとsweepERC20を連続して呼び出すだけで済み、14.6億米ドルの暗号を自分たちのウォレットに盗むことに成功しました。ByBitはSafe{Wallet}へのすべてのアクセスを失っていました。
ブロックチェーンユーザーエクスペリエンスの現実
これに寄与する要因の1つは、取引の署名に関するブロックチェーンユーザーエクスペリエンスが依然として改善の余地が多く残っていることです。ByBitの署名者は、おそらくすべて同じSafe{Wallet}ウェブUIを使用していて、これは単一の障害点であり、ByBitの直接の管理下にはありませんでした。

(上の図: app.safe.globalでのSafe{Wallet}ウェブUIでの取引のレビュー)
技術的な観点から見ると、Safe{Wallet}取引は複雑すぎて、Ledgerハードウェアウォレットのベースモデルが署名される直前の取引についての重要な人間可読の詳細をデコードおよび表示できません。

(上の図: ラップトップに接続されたLedger Nano S PlusハードウェアウォレットでのSafe{Wallet}取引のレビュー)
結論
国家規模の行為者に対する防御は、実質的に無限のリソースと無制限の時間枠へのアクセスを考えると、非常に困難です。ByBitは多くのことを正しく行っており、Safe{Wallet}は優れたマルチシグウォレットの選択肢のままです。しかし、取引署名ワークフローにおいて、単一の障害点を排除するか、少なくとも軽減することが重要です。app.safe.globalのSafe{Wallet}ウェブUIは、依然として取引承認に使用できますが、MultiBaasのような代替のウェブUI(Safe{Wallet}取引の構成をサポート)を取引開始に使用することができます。署名者は、署名する取引の詳細とハッシュを確認する時間を取ることができます。暗号交換のような高価値プラットフォームでは、独自のSafe{Wallet}ウェブUIのコピーを運営し、24時間体制の情報セキュリティチームやエンドポイント保護ソフトウェアを持つことは、おそらく不当ではないでしょう。
最後に、攻撃者が実際に攻撃自体の数日前にイーサリアムで「本番環境でテスト」を行っていたことは興味深いです。元の悪用者のウォレットにガスを供給するためにウォレットを展開しました。彼らはテストのためにSafe{Wallet}をデプロイし、おそらく悪用されたSafe{Wallet} UIを介して、トラップを仕掛ける前に数回攻撃を実行しました。より良い事前モニタリングおよび検出ツールの開発が役立つかもしれません。
盗まれた暗号通貨の一部が回収されたとはいえ、この業界がこのことから学び、ウォレットユーザーエクスペリエンスとともにセキュリティのベストプラクティスを進化させ続けることを願っています。
