今回のバイナンス攻撃の根本的な仕組み

今回の攻撃の突破口となったのは、イーサリアムのPectraアップグレードで導入されたEIP-7702です。

簡単に言うと、EIP-7702では通常のEOAウォレットが、一時的にコントラクトコードの実行を委任できます。署名して承認すると、そのウォレットアドレスがコントラクトとしての機能を持つようになります。
攻撃者は事前に、バイナンスのホットウォレットが署名したEIP-7702の承認を50組入手していました。それぞれ異なるnonceに対応しています。
攻撃者はウォレットの現在の正確なnonceを事前に知ることができなかったため、50件すべての承認を一斉にブロードキャストしました。そのうち1件でも現在の状態とnonceが一致すれば、委任が有効になります。
一致したその承認によって、資産を一掃するコントラクトがバイナンスのホットウォレットアドレスに直接ひも付けられ、ハッカーは一瞬でウォレット内の資産をすべて引き出しました。

重要なのはここです。トロン上で行われたTRXステーブルコインの移転は、ハッカーによるものではなく、バイナンス自身が行った操作です。取引所内の資金移動にあたるため、盗難額の集計に含めてはいけません。

多くの人は56億の流出ばかりに注目していますが、この脆弱性の恐ろしさを理解していません。
秘密鍵が直接漏えいしたのではなく、署名による承認の仕組みの隙を突かれたのです。nonceが一致すれば、コントラクトがアカウントを乗っ取り、一度の操作で資産を空にできます。
EIP-7702は本来、アカウント抽象化への足がかりとなる機能でしたが、今や巨大なホットウォレットから資産を刈り取る武器になってしまいました。