TL;DR
2025 年 2 月、暗号資産取引所 Bybit から約 401,347 ETH(当時約 15 億ドル相当)が流出した。暗号アルゴリズムは破られていない。攻撃者は Safe{Wallet}(旧 Gnosis Safe)の開発者マシンを侵害してフロントエンドに悪意ある JavaScript を注入し、マルチシグ署名者の画面には「通常の ETH 送金」と表示される一方で、実際に署名させたのは Safe の実装コントラクトを攻撃者制御アドレスに入れ替える delegatecall だった。マルチシグの閾値は満たされたが、署名者には「画面に表示された内容」と「実際に署名したバイト列の来歴」が一致するかを UI と独立に確かめる手段がなかった。発覚後の資金追跡・制裁・市場連携は一定の封じ込め効果を持ったが、署名の前に「この取引が本当に意図した内容か」を独立検証する層は存在しなかった。検出と事前証明は代替ではなく補完である。
事案概要
- 対象: Bybit(暗号資産取引所)の ETH コールドウォレット。Safe{Wallet}(旧 Gnosis Safe)マルチシグを使用
- 被害規模: 約 401,347 ETH(当時レートで約 14〜15 億ドル)。単一事案としての暗号資産流出額として史上最大
- 発生日: 2025-02-21
- 帰属: 北朝鮮 Lazarus グループ(FBI が同年 2 月に公式帰属。別称 TraderTraitor)
- 攻撃の起点: Safe{Wallet} 開発者のマシンが侵害され、フロントエンドコードに悪意ある JavaScript が注入された
- 悪用の核心: Bybit の署名者がトランザクションを承認した際、UI には「通常の ETH 送金(ウォームウォレットへのルーティン移動)」と表示されていた。実際に署名したバイトは Safe の実装コントラクトを攻撃者制御のアドレスに差し替える
delegatecallであり、これにより Safe のロジックが丸ごと置き換えられた。その後、攻撃者はコントラクトを通じてウォレット内の全 ETH を引き出した - 構造的要点: マルチシグ署名の「閾値」(3-of-X)は満たされた。暗号署名の強度は問題ではなかった。問題は署名者が「実際に何に署名しているか」を、UI の表示とは独立に確認する手段がなかったこと
- 事後対応: Bybit が声明を公表し自社資産で顧客補償を宣言。Mandiant がフォレンジクスを実施し Safe{Wallet} のサプライチェーン侵害を確認。Elliptic・Chainalysis が資金追跡を開始。取引所横断でアドレスブラックリスト化が実施された。米財務省 OFAC が関連アドレスを制裁リストに追加
- 核心: 署名者が承認したのは「UI に表示された内容」であり、「実際に署名したバイト列の来歴」とは独立に検証されていなかった — 表示と署名対象を分離するこの一点が、マルチシグの閾値充足を空洞化させた
タイムライン
- 2025-02-21(推定、攻撃直前): Safe{Wallet} 開発者マシンが侵害され、フロントエンドに悪意ある JS が注入される
- 2025-02-21: Bybit の署名者が通常のウォームウォレット移送として見えたトランザクションを承認。攻撃者が ETH の引き出しを実行
- 2025-02-21(当日): Bybit CEO Ben Zhou が X(旧 Twitter)で侵害を公表。取引所が顧客補償(自社資産)を宣言
- 2025-02-21〜22: Elliptic・Chainalysis が資金追跡を開始。取引所・ブロックチェーン関係者が連携してアドレスブラックリスト化を進める
- 2025-02-26: Mandiant が Safe{Wallet} のサプライチェーン侵害(開発者マシン経由)を確認
- 2025-03-初旬: FBI が北朝鮮 Lazarus グループ(TraderTraitor)を公式帰属として発表。関連アドレスの制裁措置が進む
注: 固有名・CVE・帰属は Mandiant・FBI・取引所の公表を一次として記載する。本 Brief は調査時点で確認できた値に基づき、規模・手口の断定を避けて出所を明示し、最新の一次情報を参照されたい。
攻撃ベクター
- 初期侵害: Safe{Wallet}(フロントエンドサービス)開発者のマシンが侵害される。具体的なマルウェア経路はフォレンジクスで確定
- JS 注入: 開発者アクセスを利用してフロントエンドコードに悪意ある JavaScript を注入。Bybit のウォレット管理 UI に限定して発火するよう設計されたとされる
- UI ポイズニング: Bybit の署名者が Safe UI 上でトランザクション承認操作を行う際、画面には「通常の ETH 送金」と表示される。悪意ある JS が実際に署名させるペイロードを差し替え、Safe の実装コントラクトアドレスを攻撃者のコントラクトに書き換える
delegatecallに変換する - マルチシグ閾値の充足: 複数の署名者が(それぞれ正規の手順で)承認を行い、マルチシグの閾値を満たす。このとき全員が「通常の移送」と信じていた
- コントラクト実装の差し替え: 署名が通ることで Safe の proxy が指す実装コントラクトが攻撃者制御アドレスに変更される
- 全資産の引き出し: 攻撃者が新たな実装を通じてウォレット内の全 ETH(約 401,347 ETH)を引き出す
- 資金の分散: 送金先アドレスを多段に分散してロンダリングを試みる
構造的論点
本事案は Pillar 01(来歴証明)の bridge-config-trust カテゴリに属する。中心的な**失敗 primitive は「マルチシグ署名者が承認したのは UI に表示された内容であり、実際に署名したトランザクションのバイト列の来歴とは独立に検証されていなかった」**である。
Safe のマルチシグ設計は「複数の鍵保有者が合意すれば実行される」ことを保証する。しかし本事案が示したのは、「鍵保有者が合意した内容」と「署名された実際のトランザクション」が同一かどうかは、その設計が保証しない、という論点だ。UI は署名対象を表示するインターフェースであり、その表示内容の来歴は暗号的に保護されていない。攻撃者は暗号を破る必要がなく、UI と署名バイトの間の「翻訳層」に介入した。
Brief No.045(Humanity Protocol マルチシグ鍵集中)・No.016(Verus ブリッジ Merkle Proof の意味的整合不在)・No.067(Syscoin SPV proof パース欠陥)と同じ bridge-config-trust だが、本事案の新しさは攻撃面がオンチェーンでも proof 検証ロジックでもなく、署名 UI というオフチェーンのサプライチェーンだった点にある。Proof の内容ではなく、「何が proof として署名者に提示されるか」の来歴が汚染された。No.004(Megalodon GitHub サプライチェーン)とは、開発者アクセスを起点に正規の配布物へ悪意あるコードを混入させた構造で同根である。
secondary カテゴリとして identity-auth(コントラクト実装の正規性を実行前に確かめる層の不在)を併記する。
検出と証明の落差
攻撃発覚後の Bybit の即時声明、Mandiant によるサプライチェーン侵害経路の特定、Elliptic・Chainalysis の資金追跡、取引所横断のブラックリスト化と OFAC 制裁は、被害の把握・封じ込め・再発防止議論に不可欠であり、本 Brief がその役割を否定するものではない。本事案でも、これらの連携によって流出資金の追跡と一部の凍結が図られた。検出は確かに機能した。
一方で、検出は受信側(署名を求められる署名者、署名を受け取って実行するコントラクト)が「何を accept するか」自体を変えない。署名者は UI に表示されたトランザクション内容を確認したが、「その内容が実際に署名するバイト列と一致するか」を UI と独立に確かめる手段がなかった。悪意ある JS は署名者の確認動作の外側で、表示と署名対象を差し替えた。マルチシグの閾値充足は「正規の鍵保有者が何かに合意した」ことは証明するが、「その何かが署名者の意図した内容である」ことは証明しない。欠けていたのは、署名の実行前に「署名対象のトランザクションが意図した承認フローの来歴を持つか」を UI とは別系統で独立検証する層である。事後の検知が制裁・追跡に発火しても、署名が通った時点での引き出しは止まらない。
事前証明(pre-execution attestation)は、署名対象のトランザクションバイト列とその来歴(どの承認フローを経て生成されたか)を、署名の実行前に独立検証可能な暗号証明として固定する。UI に表示される内容が「この来歴を持つトランザクション」であることを事前証明し、表示と署名バイトの一致が独立に確かめられなければ署名セッションを開始しない。表示内容の確認(detection 的な「画面はこう見える」)と、署名対象の来歴の事前証明(「署名するバイトは正規の承認フローを経た」)を切り離さず、両者が重なって初めて、マルチシグ承認を実務に安心して載せられる。検出と事前証明は代替ではなく 補完 の関係にある。
事後の検知が証明にならない論点は 「AI 時代のサイバー防衛に残された、最後の層」(Lemma、2026-05)、行動前に独立検証する設計は 「Proof-as-Auth: 鍵を一度も送らずにサインインする」(Lemma、2026-05)を参照。
対応経緯と業界動向
- Bybit: CEO Ben Zhou が即日声明。自社資産で全顧客補償を宣言し、実際に補填を実行
- Safe{Wallet}(Gnosis Safe): サービスを一時停止し、フロントエンドの侵害箇所を特定・除去。関連インフラの全面監査を実施
- Mandiant(Google Cloud): フォレンジクス担当としてサプライチェーン侵害経路(開発者マシン→フロントエンド JS 注入)を確認・公表
- FBI: 北朝鮮 Lazarus グループ(TraderTraitor)への帰属を公式発表
- 業界横断: Elliptic・Chainalysis による資金追跡、主要取引所でのアドレスブラックリスト化、OFAC 制裁が連携して実施された
- 業界への論点: マルチシグウォレットの UI レイヤーをサプライチェーン攻撃の対象として正面から突いた初の大規模事案として、HW ウォレットでのトランザクション直接表示・署名ペイロードの独立検証を義務化する議論が活発化した
Lemma による分析
本事案で露呈した検出と証明の落差(署名者が承認した「内容の来歴」と「実際の署名バイト」が切り離されていた)に対し、Lemma は以下の設計を提示する。
- 署名対象の来歴証明: トランザクションバイト列が「承認済み業務フローを経て生成された」ことを署名実行前に独立検証可能な暗号証明として固定し、UI 表示と署名対象の乖離を事前に検出する
- UI からの独立: 署名者が確認する UI とは独立したチャンネルで、署名対象の来歴ハッシュを検証する層を設ける
- マルチシグ閾値 ≠ 内容の正当性: 「複数の署名者が合意した」事実と「合意した内容が意図通りか」を切り離さず、後者を事前証明の対象とする
- 選択的開示: 内部業務フロー全体を開示せずに、「このトランザクションは正規の承認フローを経た」ことだけを最小開示で証明する
検出(事後の声明・フォレンジクス・追跡・制裁)は被害の是正に、事前証明(署名実行前の署名対象の来歴の独立検証)はマルチシグ承認の信頼確立に、それぞれ相補的に働く。
設計と適用範囲は Pillar 01 — 来歴証明 および Seal を参照のこと。
Sources
- Bybit 公式声明: CEO Ben Zhou による X(旧 Twitter)投稿(2025-02-21)および Bybit 公式ブログ
- Mandiant(Google Cloud): Safe{Wallet} サプライチェーン侵害の技術解析レポート(2025-02-26 前後公表)。Mandiant のフォレンジクス結果を報じた報道 — https://thehackernews.com/2025/03/safewallet-confirms-north-korean.html
- FBI 公式声明: “North Korea Responsible for $1.5 Billion Bybit Hack”(2025-03)— https://www.fbi.gov/investigate/cyber/alerts/2025/north-korea-responsible-for-1-5-billion-bybit-hack
- Elliptic: 資金追跡レポート(2025-02〜03)
- Chainalysis: ブロックチェーン分析レポート(2025-02〜03)
- Unchained / The Block / CoinDesk 等: 事案経緯の報道(2025-02-21〜)
Brief 配布について
本資料は公開情報の構造化分析であり、特定組織への監査・診断・推奨ではありません。
(c) 2026 FRAME00, INC. — Built for decisions that matter.