概要と事件の発生
2025年11月3日未明、Check Point Researchのブロックチェーン脅威監視システムがEthereumメインネット上で不審なパターンを検知しました。このアラートはBalancer V2のVaultコントラクトから発せられ、DeFi史上最も壊滅的な脆弱性の一つが明らかになりました。防御側が介入する前に、攻撃者はわずか30分足らずで、6つの異なるブロックチェーンネットワークにわたるBalancer ComposableStablePoolコントラクトから1億2864万ドルを流出させました。
脆弱性の核心
この侵害の核心には、Balancerの算術ロジックに深く隠された、微妙だが極めて重要な脆弱性がありました。Balancer V2プロトコルは、すべてのプールトークンを「Vault」に集中させ、スワップやその他の流動性アクションを管理するスマートコントラクトロジックから分離しています。これによりガス使用量とクロスプール機能が最適化される一方で、コアプールの計算における単一の脆弱性がすべての安定化プールに波及する可能性があり、今回の事件でそのシナリオが恐ろしい効率で現実のものとなりました。
主な脆弱性は_upscale Array関数にあり、スワップや残高のスケーリング中に、最小限の境界値(約8~9 wei)を扱う際に重大な精度誤差を発生させます。Solidityの整数除算は常に切り捨てるため、この超低粒度での繰り返し操作により、計算ごとに最大10%の相対誤差が蓄積される可能性があります。このような「マイクロスワップ」が高速なアトミックバッチで実行されると、複合的な誤差がBalancer Pool Token (BPT)の価格設定の基礎となる不変計算を狂わせます。
攻撃の手口と自動化
攻撃者は手動で操作するのではなく、自動化のためにエクスプロイトコントラクトを展開しました。このコントラクトのコンストラクタは、展開後すぐに65回以上のバッチスワップ操作を実行しました。各マイクロスワップは、プールの残高を精度損失の閾値に近づけ、プールの計算を誤算のサイクルに陥らせました。攻撃の核心は、BPT価格を人為的に引き下げ、過小評価されたBPTを買い集め、それを即座に完全な原資産価値で償還するという精密な裁定取引サイクルでした。
3段階の攻撃パターン
この強奪は、各バッチスワップにおける巧妙に設計された3段階のパターンで展開されました。
- 境界調整フェーズ: 大量のBPTを出し入れして、プールトークンを高リスクの丸め閾値に強制的に移動させる。
- トリガーフェーズ: 小規模なスワップで丸め誤差を悪用し、プールの価格設定ルール全体に精度損失を連鎖させる。
- 抽出フェーズ: 過小評価されたBPTを購入し、即座に原資産トークンと交換することで、価格差を利益として得る。
内部的には、Balancerの「内部残高」会計機能が意図せず加担しました。エクスプロイトコントラクトは、トークンを外部アドレスに即座に引き出すのではなく、コンストラクタフェーズ中に盗まれた資金をまずVault内部に蓄積しました。その後、これらの資金はカスタム関数を介して外部に引き出され、攻撃者の最終的な受取人アドレスに送金されました。
ブロックチェーン分析と教訓
ブロックチェーン分析により、この操作は以下のコントラクトとアドレスに関連付けられました。
- エクスプロイトデプロイヤー:
0x506D1f9EFe24f0d47853aDca907EB8d89AE03207 - 攻撃者コントラクト:
0x54B53503c0e2173Df29f8da735fBd45Ee8aBa30d - 最終受取人:
0xAa760D53541d8390074c61DEFeaba314675b8e3f
この事件は、DeFiプロトコルにおける数学的なエッジケースの脅威を明確に示しています。このような丸め誤差や精度損失のバグは、通常の使用では取るに足らないように見えるかもしれませんが、敵対的なトランザクションエンジニアリングとオンチェーン自動化と組み合わせると、壊滅的なエクスプロイトに増幅される可能性があります。DeFi開発者と監査人にとって、Balancer攻撃は、セキュリティが原子的な正確さに焦点を当てたテストだけでは不十分であることを明確に示しています。セキュアなプロトコル設計の課題と未来は、微妙な脆弱性が持続的かつ自動化された攻撃の下でどのように拡大するかを予測する敵対的モデリングを要求しています。これによってのみ、業界は軽微な算術的欠陥が数百万ドル規模の危機にエスカレートするのを防ぐことができるでしょう。
