Bybit の事件
2025 年 2 月 21 日、Bybit は Safe のマルチシグのコールドウォレットから約 15 億ドルを失いました。この業界の歴史で最大の盗難であり、丁寧に読む価値が あります。というのも、たったひとつを除いて、ほとんどすべてが正しかったからです。
何が起きたか
公開されたポストモーテムからの短い要約です。
- 攻撃者が
Safe{Wallet}の開発者のマシンを侵害し、Safe{Wallet}の フロントエンドを配信していた AWS S3 バケットに悪意ある JavaScript を注入しました。 コードは 2 月 19 日に入り、2 月 21 日に、Bybit の特定の Safe を狙って発火しました。 - Bybit の署名者たちはインターフェースを開き、ごく普通に見える取引を確認しました。
- 実際に彼らのハードウェアウォレットへ送られたのは、その取引ではありませんでした。
Safe プロキシの
masterCopy——スロット 0——を上書きし、アカウントの実装まるごとを 攻撃者のものに置き換えるdelegatecallでした。 - 署名者は承認しました。署名は有効でした。コントラクトは、言われたとおりのことを 正確に実行しました。
帰属については、北朝鮮に関連する活動として公表されています(FBI は TraderTraitor クラスターを名指ししました)。
壊れていなかったもの
- Safe のコントラクトではありません。 有効に署名された命令を実行しただけです。 Safe のバグが突かれたわけではありません。
- 暗号でもありません。 どの署名も本物でした。
- ハードウェアウォレットでもありません。 Ledger の端末は経路に入っていて、
それでも署名しました。ハードウェアウォレットは渡されたものを見せるだけであり、
渡されたのが悪意ある内容だったからです。
delegatecallを人が判断できる形に できない端末が守るのは鍵であって、判断ではありません。
壊れたのは、あらゆるウォレットのインターフェースの下に横たわる前提です。 取引を説明している画面と、署名されているバイト列は同じものである、という前提です。
これが例外ではなく一般則である理由
あなたがウェブウォレットで作ったすべての署名は、その前提に乗っていました。 インターフェースが内容を組み立て、インターフェースが要約を描き、両者が一致して いるかを独立に確かめるものは何もありません。そのインターフェースを配信するコードが 置き換われば——侵害されたビルドパイプライン、乗っ取られた CDN、悪意ある依存、 盗まれたデプロイ資格情報——要約は攻撃者の望むものになり、あなたの署名は本物になります。
これが Vela の署名設計が狙っているリスクです。フィッシングでも、鍵の流出でもなく、 あなたに嘘をつく署名画面です。
Vela がしていること
calldata まで届くクリア署名。 すべての取引は、承認前に人が読める意図へ変換され
ます——金額、受取人、その呼び出しが実際に何をするのか
(ERC-7730)。デコードできない呼び出しは、問題ないかの
ように静かに描かれるのではなく、デコード不能と明示されます。Bybit の内容は実装
アドレスを差し替える delegatecall でした。それこそ署名者を立ち止まらせるべき形で
あり、親切な要約の裏に隠れていたからこそ止まらなかったのです。
インターフェースを検算できる独立した経路。 Vela は、ビルドなし・依存なしの署名 ページを作っています。意図を自分で描き、WebAuthn の署名も自分で行う——端から端まで 読める、自分で配信できる、ブラウザ拡張としても動く静的ファイルのフォルダです。 その存在意義は、本体アプリとサプライチェーンを共有しないセカンドオピニオンになること です。状態:作成とテストは完了、まだデプロイしていません。 公開後は任意の機能で、 状況が変わればこのページにそう書きます。
私たちがアップグレードできるコントラクトはありません。 Bybit の攻撃は、アカウント の実装を差し替えることで成立しました。Vela のアカウントは 改変していない Safe v1.4.1で、Vela はそこに特権的な 役割を持ちません。管理者鍵も、強要や侵害で使われうるアップグレード経路もありません。
署名ごとに生体認証をやり直します。 長命のセッション鍵がないので、あなたが その場にいないのに何かが代わりに署名できる窓は存在しません。
最後の砦としてのセルフホスト。 アプリもすべてのバックエンドサービスもオープン ソースです。私たちのビルドパイプラインをまったく信頼したくないなら、自分で動かして ください。この種の攻撃に対して、誰かを信頼せずに済む答えはそれだけです。
Vela が主張しないこと
Vela のフロントエンドも、Safe{Wallet} と同じやり方で侵害されうります。私たちの
コードは監査されていません。それ以上に良く言うことこそ、この事件が終わらせるべき
だった類いの保証です。
この設計がしようとしているのは経路を狭めることです。内容を不透明ではなく読めるもの にし、攻撃が頼った「アップグレード」という原始的な仕掛けを取り除き、私たち以外の ものと突き合わせる手段を渡すこと。正直にまとめれば、 この種の攻撃は設計によって弱められてはいるが、消えてはいないのであり、 さらに硬くするための部分は、未完成のまま 監査と既知の問題に並んでいます。