40分で56億ドル。

攻撃者は秘密鍵を盗んだわけでも、サーバーに侵入したわけでもありません。

ただ、Binanceのホットウォレットに権限付与の署名をさせただけです。すると、ウォレットは自ら資金を送金してしまいました。

オンチェーン上には、「外部アドレスが資産を持ち出した」形跡はありません。Binance 14が通常の出金を行ったように見えます。

EIP-7702とは何か?一言で説明してください。

イーサリアムのPectraアップグレードにより、一般的なウォレットでもスマートコントラクトのコードを一時的に借りられるようになりました。

技術の進歩に聞こえますね。

しかし、柔軟性の裏側にはこんな危険もあります。署名ひとつで、あなたのウォレットが他人のATMになってしまうのです。

攻撃の手順は3段階。

第1段階:コントラクトをデプロイする。中身はsweepという関数ひとつだけ。ETHと指定したトークンをすべて、指定したアドレスに送る。

第2段階:Binance 14の認可署名を手に入れる。このsweepコードをBinanceのホットウォレットに「組み込む」。

第3段階:3分24秒後、Binanceのホットウォレットアドレス上で直接、資産を一掃する処理を呼び出す。

オンチェーンでは、「外部アドレスが資産を持ち去る」動きは一切ない。見た目には、Binance自身が資金を移しているだけだ。

攻撃者は1件のトランザクションに50件の認可を詰め込み、nonceをNからN+49まで並べた。そのうちひとつが通ることに賭けたのだ。

結果として、有効になったのはひとつだけだった。

委任から最初の資産一掃まで、わずか3分24秒。

Binanceのリスク管理システムは、これを阻止できなかった。

その後、40分にわたる「自分で自分を空にする」事態が続いた。

Binance 14自身が呼び出しを開始し、167,464 ETHと63種類のトークンを送金。手数料は1ドル未満だった。

Binance 16がほぼ間を置かずに続き、さらに28,005 ETHを送金した。

その後、資産は細かく分散された。PEPE 7.77兆、UNI 702万、wBETH 29,934が、ひとつずつ新規アドレスへ送られた。

夜が明ける頃には、イーサリアム、ビットコイン、トロン、複数のL2にまたがって、56億4,300万ドルが流出していた。

Tether、Circle、Ripple、World Libertyが連携して約25億4,000万ドルを凍結した。全体の45%にあたる。しかし、悪意ある委任は今も取り消されていない。

EIP-7702の本来の目的は、ウォレットをより柔軟にすることだった。

しかし、柔軟であることは安全であることを意味しない。アカウント抽象化の物語が長く語られるなか、誰もが「より優れたユーザー体験」「より低い参入障壁」「よりスマートなウォレット」をうたってきた。

誰も真剣に答えていない問いがある。認可そのものが攻撃対象となり、たった一度の署名で、あるアドレスに任意のコードを実行させられるとしたら、安全性のモデルは本当に成り立つのか?

これはBinanceだけの脆弱性ではない。イーサリアムのアカウント抽象化をめぐる物語全体が、答えなければならない問いだ。

テクノロジーそのものに悪意はない。だが、テクノロジーの「柔軟性」にはブレーキが必要だ。

今回は、そのブレーキがなかった。次は、56億ドルでは済まないかもしれない。