#币安被盗 バイナンスのハッカーによる攻撃の詳細が明らかに

ハッカーは Binance 14 のホットウォレットのリアルタイムの nonce を把握していなかったため、nonce 18,914,775~18,914,824 をカバーする EIP-7702 の認可署名を50件用意し、運任せにそれらを1つのトランザクションにまとめて投入しました。

ホットウォレットは毎秒トランザクションを処理しており、nonce は絶えず変化するため、攻撃者は認可がブロックチェーンに記録される時点でどの数値が有効なのかを特定できませんでした。最終的に、50件の認可のうち有効だったのは1件だけで、ウォレットの乗っ取りに成功しました。

ハッカーは EIP-7702 を使い、Binance 14 の実行ロジックを事前にデプロイしていた Sweeper コントラクトに委任しました。その後、指定された操作用アドレスから sweep 関数を呼び出し、ウォレット内の ETH とすべての ERC-20 資産を一度に送金しました。

残高が空になっても、この委任が自動的に無効になることはありません。その後、このアドレスに資金が入金されれば、攻撃者は再びコントラクトを呼び出して資金を回収できます。このバックドアを完全に閉じるには、EIP-7702 の委任を手動で取り消す必要があります。

しかし、さらに追及すべき重要な疑問があります。

この50件の認可署名は、いったいどこから入手したのでしょうか?

EIP-7702 の認可には Binance 14 自身の管理鍵による署名が必要です。攻撃者が nonce を推測しただけで、有効な署名を生成できるはずはありません。

つまり、nonce の推測は最後の段階にすぎず、本当の突破口は、攻撃者がどのようにホットウォレットの署名能力を手に入れたかという点です。

秘密鍵の漏えいなのか、署名システムへの侵入なのか、それとも社内の署名プロセスの悪用なのか、現時点ではまだ明確な結論は出ていません。