メインコンテンツまでスキップ

1億 2800万ドルの丸め誤差:1セント未満の計算バグが、いかにして 9つのチェーンにわたる DeFi 最古の AMM を資金枯渇させたか

· 約 16 分
Dora Noda
Software Engineer

8 wei。これは約 0.000000000000000008 トークンに相当し、ドル換算では実質的な価値を持たないほど極小の量です。しかし、2025 年 11 月 3 日、攻撃者はこの規模の丸め誤差を悪用して 1 億 2,800 万ドルの資産を奪い取り、30 分足らずの間に 9 つのブロックチェーンにわたる Balancer の Composable Stable Pool を枯渇させました。

Balancer V2 の脆弱性悪用は、単一の脆弱性に起因するマルチチェーン DeFi エクスプロイトとして史上最大のものとなりました。これにより一晩で Balancer の TVL(Total Value Locked)の 52% が消失しました。このコードは業界トップクラスの企業による 10 回以上のセキュリティ監査を通過しており、Berachain に至っては資金を回収するために緊急ハードフォークの実行を余儀なくされました。この脆弱性の正体は何だったのでしょうか?それは、計算の端数を間違った方向に丸めていた、たった 1 行のコードでした。

Balancer プールの仕組みと崩壊の理由

Balancer V2 は、Curve の StableSwap モデルから借用した概念、D と呼ばれる数学的不変量(Invariant)を使用しています。これはプール内にロックされた総価値を表します。ユーザーがトークンをスワップするたびに、プロトコルはプールのバランスを維持するために D を再計算します。ユーザーが流動性を提供した際に受け取る LP トークンである Balancer Pool Token(BPT)の価格は、この不変量から直接導き出されます:BPT 価格 = D / totalSupply

D を計算する前に、プロトコルはスケーリング関数を使用してトークンの残高を共通の精度に正規化する必要があります。ここに致命的な欠陥が潜んでいました。

_upscaleArray 関数は、生のトークン残高をスケール後の値に変換する際、mulDown(切り捨て)を使用していました。数千、数百万といった通常の残高であれば、1 wei 未満の切り捨ては無視できます。しかし、トークンの残高がわずか 8 〜 9 wei という境界値まで押し下げられると、Solidity の整数除算によって、その微小な丸め誤差が相対的に巨大な歪みへと変貌します。

8 wei において、わずか 1 wei の切り捨てであっても 12.5% の精度低下 を意味します。この歪んだ残高を不変量計算に投入すると、D が低下します。D が低下すると、BPT の価格も下がります。BPT の価格が人為的に抑えられた状態になれば、攻撃者は安く買い、本来の価値で償還(リデンプション)することが可能になります。

攻撃:単一トランザクション内での 65 回のマイクロ・スワップ

Check Point Research のブロックチェーン監視システムは、2025 年 11 月 3 日 07:46 UTC にこの攻撃を検知しました。その時すでに、攻撃者のスマートコントラクトは破壊的なシーケンスを実行していました。

攻撃は 3 つのステージで展開され、それらすべてが 65 件のスワップ操作 を含む単一の batchSwap トランザクションに詰め込まれていました。

ステージ 1 — 境界値への押し込み。 攻撃者は大量の BPT を原資産トークンと交換し、意図的に 1 つのトークンのプール残高をクリティカルな 8 〜 9 wei の閾値まで枯渇させました。この残高レベルでは、そのトークンが関わる以降のすべての操作で最大の精度低下が発生します。

ステージ 2 — 誤差の累積。 1 つのトークンを丸め境界に固定した状態で、攻撃者は高速に小規模なスワップを繰り返しました。各スワップはスケーリング中の _upscaleArray 関数による切り捨てを誘発し、不変量 D を組織的に過小評価させました。1 回のスワップによる精度低下は微々たるものでしたが、同じ batchSwap 呼び出し内の 65 回の操作を経て、その損失は劇的に累積しました。これにより、BPT 価格を本来の価値よりも大幅に低く抑え込むことに成功しました。

ステージ 3 — 安く買い、高く償還する。 攻撃者は抑制された価格で BPT を購入し、即座にそれらのトークンを本来の価値で原資産と交換しました。操作された価格と実際の価格の差額が、そのまま純利益となりました。

最初のスワップから最終的な資金流出まで、全行程は 30 分もかかりませんでした。攻撃者はコンストラクタにエクスプロイト・ロジックを組み込んだカスタム・スマートコントラクトをデプロイしており、デプロイと同時にそれ以上の操作を必要とせず自動的に攻撃が実行される仕組みになっていました。

9 つのチェーン、1 つのバグ

この事件を単なる重大なハッキングから歴史的な事件へと押し上げたのは、その被害範囲でした。Balancer V2 の Composable Stable Pool がデプロイされていたすべてのチェーンで、同じ脆弱なコードが実行されていました:

  • Ethereum — 最大のプールがあり、最も重い損失
  • Arbitrum — かなりの流動性が流出
  • Base — Coinbase の L2 も被害
  • Optimism — OP Stack 上のプールが空に
  • Polygon — 長年運用されていたプールが標的に
  • Avalanche — C-Chain のプールが侵害
  • Gnosis — 規模は小さいものの影響あり
  • Berachain — 立ち上げたばかりのチェーンが大きな打撃
  • Sonic — 最新のデプロイ先も脆弱

攻撃者は 9 つの異なるエクスプロイトを必要としませんでした。1 つのエクスプロイトを 9 回デプロイするだけで十分だったのです。効率的なマルチチェーン展開を可能にしていた Balancer の共有コードベースが、同時多発的なマルチチェーン破壊のベクトルとなってしまいました。

重要な点として、他の Balancer プールタイプ(Weighted Pool、Managed Pool)や新しい V3 プロトコルは全く影響を受けていません。このバグは Composable Stable Pool の計算ロジックに特有のものでした。

TVL の崩壊

攻撃前、Balancer V2 には 4 億 4,200 万ドル の TVL がありました。しかし 24 時間以内に、その数字は 2 億 1,400 万ドル まで急落し、52% のフリーフォールを記録しました。ニュースが広まり、流動性提供者が念のために影響を受けていないプールからも慎重に資金を引き出したため、TVL は数週間で約 1 億 8,200 万ドル まで下がり続けました。

2020 年以来 DeFi の柱となってきたプロトコルにとって、この下落は壊滅的でした。Balancer は 2022 年の弱気相場、Terra の崩壊、および FTX の破綻も乗り越えてきました。マクロ経済の惨劇にも屈しなかったプロトコルを、たった一つの丸め誤差が崩壊させたのです。

リカバリー:ハードフォーク、ホワイトハット、そして回収された $33M

その直後、DeFi 史上最も劇的なリカバリーの取り組みが行われました。

Berachain の緊急ハードフォーク。 新しくローンチされたこのチェーンは、最も積極的な行動を取りました。バリデーターは緊急ハードフォークを調整し、オンチェーンで攻撃者の資金を凍結しました。自称ホワイトハットのオペレーターが、盗まれた 1,280 万ドル相当の Berachain 資産を返還したことで、同チェーンの被害ユーザーは全額を回収することができました。

StakeWise による直接回収。 このリキッドステーキングプロトコルは、緊急マルチシグを通じてコントラクトコールを実行し、約 5,041 osETH(1,930 万ドル相当)と 13,495 osGNO(170 万ドル相当)を回収しました。これは盗まれた osETH の 73.5% に相当します。

コミュニティのホワイトハットによる取り組み。 追加のリカバリーにより、回収総額は約 $33M に達し、純損失は約 9,500 万ドルにまで減少しました。

残りの資金(主に Ethereum と Arbitrum 上)は、攻撃者によって ETH に変換され、特定されたウォレットに保管されたままです。これらが交渉、法的措置、またはバグバウンティの提案を通じて回収されるかどうかは、依然として不透明です。

10 回の監査、ゼロの発見

Balancer のエクスプロイトに関する最も不都合な真実は、OpenZeppelin、Trail of Bits、Certora といった業界で最も尊敬されるセキュリティ企業によって、そのコードが 10 回以上 監査されていたことです。

2022 年、Certora は Balancer V2 における主要なソルベンシー(支払能力)特性を形式検証しました。しかし、それらの形式証明は、スケーリング関数における丸め方向のリスクを特に対象としていませんでした。検証された特性は、通常の状態ではプールが空になることはないことを証明していましたが、「通常の状態」には、攻撃者が意図的にトークン残高を 8 wei に押し下げることは考慮されていませんでした。

Trail of Bits は、エクスプロイト後の報告で、以前の監査において丸めの問題が指摘されていたものの、高リスクとしては優先されていなかったと述べています。当時の判断は理解できるものでした。個別の丸め誤差による損失は無視できるほど小さかったからです。しかし、1 つのアトミックトランザクションの中で 65 回もの誤差が累積した場合に何が起こるかをモデル化した者はいませんでした。

これは、DeFi 業界が繰り返し直面しているパターンです。監査は範囲を限定したレビューであり、特定の瞬間の特定のコードのスナップショットに過ぎません。既知の攻撃パターンをテストし、特定の特性を検証するものであって、保証ではありません。プロトコルが進化し、新しいプールタイプが追加され、コードが新しいチェーンにデプロイされるにつれ、監査された内容と本番環境で動作している内容との間のギャップは静かに広がっていきます。

「仕様は法なり(Spec Is Law)」という提言

Balancer のエクスプロイトは、「形式仕様(Formal specification)」、すなわちコードを書く前にプロトコルの挙動を数学的に定義する手法の支持者にとって、重要なケーススタディとなりました。

a16z や Certora などの企業が主張する論理は明快です。もし Balancer が「丸めによって D が 1 回の操作につき X% 以上減少してはならない」や「N 回のスワップにおける累積丸め誤差は一定の範囲内に収まらなければならない」といった形式仕様を維持していれば、脆弱性は本番環境ではなく検証段階で発見されていたはずです。

ほとんどの DeFi 監査で使用される標準的なインバリアント(不変条件)である「丸めはプロトコルに有利に働かなければならない」というルールは不十分であることが証明されました。これは丸めの方向は捉えていますが、複数の操作フローにわたる累積誤差の大きさは考慮していません。仕様を優先するアプローチでは、極端な残高範囲におけるエッジケースを含め、システムが依存するすべての数学的インバリアントを定義し、保護することがプロトコル設計者に求められます。

このアプローチが DeFi 開発のスピードに対応できるかどうかは議論の余地があります。形式仕様の作成と維持には多大な投資が必要です。しかし、Balancer のエクスプロイトが示したように、そうしない場合の代償は 9 桁(億ドル単位)に及ぶ可能性があります。

これが DeFi セキュリティに意味すること

Balancer のエクスプロイトは、業界のプロトコルセキュリティに対する考え方を再構築するいくつかのトレンドを浮き彫りにしました。

共有コードベースがリスクを増幅させる。 マルチチェーン展開は効率的ですが、単一の脆弱性がマルチチェーンのカタストロフィー(大惨事)になることを意味します。複数のチェーンに展開するプロトコルには、チェーン固有の監視と、個別のデプロイメントを独立して停止できる機能が必要です。

精度演算は最優先のセキュリティ事項である。 丸め誤差は単なる帳簿上の些細な問題ではありません。数十億ドルの TVL を管理するプロトコルでは、サブペニー単位の精度の損失が武器になり得ます。すべてのスケーリング、正規化、および変換関数において、明示的な丸め方向の分析が必要です。

バッチ操作には損失制限の保証が必要。 batchSwap 関数はガス効率のために設計され、単一のトランザクションで複数のスワップを可能にしました。しかし、それは中間的な検証なしにエラーが累積することも許してしまいました。将来の実装では、開始時と終了時だけでなく、バッチ操作の間にもインバリアントチェックを含めるべきです。

継続的なセキュリティは、一時点の監査に勝る。 Trail of Bits の事後分析では、業界が単発の監査から、継続的なファジング、進化するコードベースの形式検証、自動停止機能を備えたリアルタイム監視を含む、継続的なセキュリティパートナーシップへと移行する必要があることが強調されました。

リカバリーインフラの重要性。 Berachain のハードフォークと資金凍結の能力、そして StakeWise の緊急マルチシグによるリカバリーにより、3,300 万ドルが救われました。不可避なエクスプロイトが発生した際、必要になる前に対策インフラに投資しているプロトコルやチェーンこそが、より有利な立場に立てるのです。

Balancer V3 における疑問

唯一の救いは、Certora が Balancer V3 のアーキテクチャはこの脆弱性の影響を受けないことを確認したことです。V3 の再設計では、今回の悪用(エクスプロイト)を可能にしたスケーリングの不整合が解消されており、Balancer チームが特定の攻撃ベクトルを予測していなかったとしても、精度の取り扱いが改善すべき領域であることをすでに認識していたことが示唆されています。

Balancer への復帰を検討しているリクイディティプロバイダーにとって、V3 の採用状況が重要な指標となります。プロトコルの長期的な存続は、信頼がさらに損なわれる前に、残りの V2 の流動性をより安全なアーキテクチャへと移行できるかどうかにかかっています。

繰り返される教訓

DeFi は 2020 年以来、フラッシュローン攻撃や数学的な悪用によって、これまでに 20 億ドル 以上の損失を被ってきました。Balancer の悪用事例は、業界が打破できそうにないパターンの最も鮮明な例です。監査人には見えず、何年も見過ごされてきた微細な算術バグが、攻撃者がそれらを複合させるための適切な一連の操作を見つけたとき、9 桁(数億ドル)規模の惨事へと発展するのです。

8 wei の丸め誤差。1 億 2,800 万ドルの盗難。9 つのチェーンが被害。10 回の監査を通過。最初のスワップから最後の流出までわずか 30 分。

これらの数字は、DeFi 業界がもはや無視することのできない物語を物語っています。コードが法律(Code is Law)であるシステムにおいては、あらゆる端数処理の決定がセキュリティ上の決定なのです。


BlockEden.xyz は、複数のブロックチェーンネットワークにわたってエンタープライズグレードの RPC および API インフラストラクチャを提供しており、異常なオンチェーン活動を検出するように設計された監視機能が組み込まれています。DeFi プロトコルがクロスチェーンのセキュリティ課題に取り組む中で、リアルタイムの可観測性を備えた信頼性の高いインフラストラクチャが不可欠になっています。API マーケットプレイスを探索する して、セキュリティを最優先に設計された基盤の上で開発を進めてください。