2025年はスマートコントラクト攻撃の年でした。複数のスマートコントラクト監査に合格したプロトコル、何年にもわたって実戦テストされてきたプロトコル、深いセキュリティの専門知識を持つチームによって構築されたプロトコル。これらすべてが攻撃の犠牲となり、不快な事実が明らかになりました。従来のバグを発見する能力は向上していますが、プロトコルが経済学、数学、システム設計について考える方法における根本的な欠陥を見逃しているのです。
この振り返りでは、スマートコントラクトのセキュリティについて教訓を与える、今年最も技術的に興味深いインシデントを検証します。経済的不変条件の違反により攻撃者が無限にトークンを発行できた仕組み、自動マーケットメイカーの計算における精度エラーがわずかな丸め誤差を数百万ドル規模の攻撃に変えた仕組み、そしてシステム境界の障害が単一コンポーネントのスマートコントラクト監査では発見できなかった脆弱性を露呈させた仕組みを探ります。
これらのハッキングは、プロトコル設計における根本的な問題を明らかにしています。単純なミスを超え、分散型金融システムがどのように機能すべきかという中核的な前提に触れる障害です。
2025/12
Yearn Financeは2025/12に2つの関連する攻撃を受け、いずれもプロトコルアップグレード後にオンチェーン上に残っていたレガシーインフラを標的としていました。
最初の攻撃:経済的不変条件の違反(900万ドル) — 12/1
Yearn FinanceのレガシーyETHステーブルスワッププールが単一トランザクションで流出しました。攻撃者はシェア計算ロジックの欠陥を発見し、ほぼ無限のyETHトークンを発行できました。約1,000ETH(約300万ドル相当)がTornado Cashに送られました。
攻撃者はステーブルスワップの計算式におけるエッジケースを発見し、シェア計算を操作できました。脆弱性は会計ロジック自体に存在していました。プロトコルが入金または出金のシェアを計算する際、計算を操作して何もないところからシェアを作り出すことができました。
2回目の攻撃:レガシーコントラクトのリスク(30万ドル) — 12/17
最初の攻撃に続いて、YearnのV1コントラクトが標的となりました。プロトコルがアップグレードされても、古いコントラクトは消えません。オンチェーン上に残り、価値を保持する可能性があります。Yearnの場合、V1コントラクトにはまだ資金がロックされており、最初の攻撃がYearnのレガシーインフラに注目を集めた後、それらの資金が標的となりました。
重要な理由(監査人と組織の観点):
最初の攻撃は、スマートコントラクト監査方法論における重要なギャップを示しています。静的解析ツールは経済的不変条件を検証しません。ファザーはコードパスをテストしますが、経済モデルはテストしません。スマートコントラクト監査プロセスは、すべての操作シーケンスにわたって会計ロジックが意図した不変条件を維持することを明確に検証する必要があります。
2回目の攻撃は、レガシーコントラクトが継続的なリスクを表すことを強調しています。最初の攻撃がYearnのレガシーインフラに注目を集め、2回目につながった可能性があります。プロトコルには、古いコントラクトの廃止、残存価値の移行、予期しない相互作用の監視のための明確な計画が必要です。
緩和策: すべての操作にわたってシェア対価値の関係が保持されることを主張する不変条件テストを実装します。差分ファジングを使用して、参照実装と会計計算を比較します。継続的な監視を伴うレガシーコントラクトの明確な廃止戦略を持ちます。
脆弱性クラス: 経済的不変条件の違反とレガシーコントラクトのリスク。
詳細: Yearn Finance DeFi Project Hacked for $9M | PeckShield Alert | Yearn Finance V1 Exploit
2025/11/3
Balancerのステーブルプール計算における小さな丸め誤差が、高頻度のバッチスワップを通じて増幅され、複数チェーンで7,000万〜1億2,800万ドルの流出となりました。攻撃者は数百または数千のスワップを実行し、各スワップが前の丸め誤差を増幅させ、これらの小さな誤差が大規模な価値抽出に累積されました。
仕組み:
Balancerのステーブルプールは、価格の安定性を維持するために複雑な計算式を使用します。これらの計算式には複数のステップで丸め処理が含まれます。通常の操作では、丸め誤差は小さいです。しかし、攻撃者は一貫して丸め方向から利益を得るバッチスワップを構造化する方法を見つけ、繰り返し操作を通じて価値を抽出しました。
重要な理由(プロトコル設計者の観点):
自動マーケットメイカーの計算は、敵対的条件下でも正確である必要があります。大規模な資本と多数のトランザクションを迅速に実行する能力を扱う場合、すべての丸め決定が潜在的な攻撃ベクトルとなります。設計者は敵対的に考える必要があります:攻撃者がこの操作を1,000回実行したらどうなるか?
スマートコントラクト監査が見逃したもの: 標準的なスマートコントラクト監査プロセスは個々のスワップをテストしましたが、数百または数千のシーケンスはテストしませんでした。丸め誤差はスワップあたり1wei未満と測定され、無視できるものとして扱われました。N回の繰り返し操作にわたって不変条件は主張されませんでした。ステートフルシーケンスモデリングなしのファザーはこれを発見できませんでした。
緩和策: 繰り返し操作にわたって保持される不変条件を主張します。敵対的なバッチサイズでテストします。形式的検証を使用して、任意の操作シーケンス下で丸め誤差の境界が許容範囲内であることを証明します。
脆弱性クラス: 自動マーケットメイカーの計算式における数学的精度エラー。
詳細: Balancer DeFi Protocol Suffers Massive Exploit | Balancer Hack Explained with Multi-Chain Details
2025/7/9
数十億ドルの取引量を処理する無期限先物取引プロトコルGMXが、4,200万ドルの攻撃を受けました。この攻撃は、コア取引ロジックのバグから生じたものではありません。コンポーネント間の境界で発生しました:オラクルが利用可能な証拠金計算と出会う場所、清算ロジックがクロスチェーンブリッジインフラと相互作用する場所です。
仕組み:
脆弱性は、単一のコンポーネントではなく、これらのコンポーネントがどのように相互作用するかに存在していました。オラクルが価格を更新すると、証拠金要件が変化し、清算ロジックが応答します。攻撃者はおそらく、オラクルの更新と証拠金計算のタイミングを合わせるなど、これらの相互作用を操作する方法を見つけました。攻撃直後に約960万ドルがEthereumにブリッジされ、慎重な計画が示唆されています。
重要な理由(システムアーキテクチャの観点):
十分にスマートコントラクト監査された個々のコンポーネントでも、統合時に失敗する可能性があります。脆弱性は単一のコントラクトには存在しません。コンポーネント間のスペース、つまりそれらがどのように通信し相互作用するかに存在します。プロトコルがより複雑で構成可能になるにつれ、攻撃面はコンポーネント境界で拡大します。
スマートコントラクト監査が見逃したもの: 従来のスマートコントラクト監査プロセスは通常、コンポーネントを単独で重点的に扱います。統合テストは存在しますが、攻撃者がコンポーネント境界を越えて操作のタイミングを合わせられる敵対的シナリオをカバーしていない可能性があります。
緩和策: システム全体の動作をシミュレートする統合テストを実装します。コンポーネント間の相互作用をモデル化できる敵対的シミュレーションフレームワークを使用します。コンポーネントの相互作用を悪用するために操作がシーケンスされるタイミング攻撃をテストします。
脆弱性クラス: システム統合の失敗。
詳細: GMX Exploit Coverage
2025/5/28
Cork Protocolは、リキッドステーキングデリバティブの処理方法における脆弱性により、約3,761 wstETH(約1,200万ドル相当)を失いました。stETH、wstETH、osETHのようなリキッドステーキングデリバティブは、隠れた状態変化を導入します。wstETHとETHの間の交換レートは、ステーキング報酬が蓄積されるにつれて時間とともに変化します。
仕組み:
この攻撃には、Cork ProtocolがwstETHの価値蓄積をモデル化した方法と実際の動作との間の不一致が関与していました。プロトコルはおそらく、実際には成り立たない静的な1:1の関係を想定していました。攻撃者は交換レートが有利なときにwstETHを入金し、価値が蓄積されるのを待ってから、本来できる以上の金額を出金できました。
重要な理由(組織の観点):
これは組織的な知識のギャップを浮き彫りにします。多くの開発チームはすべてのERC-20トークンを同じように扱いますが、リキッドステーキングデリバティブは異なる動作をします。これは単なるコードの問題ではありません。知識管理の問題です。チームは統合前にトークン固有の動作を特定し文書化するプロセスが必要です。
緩和策: 常にトークンの交換レート関数を使用します(例:wstETH.getStETHByWstETH())。1:1の関係を決して想定しないでください。LSDを含む計算では、時間経過に伴う価値蓄積を考慮します。
脆弱性クラス: トークンメカニクスの誤解。
詳細: Cork Protocol Hacked for $12M, Smart Contracts Paused
これらのハッキングは、特定の脆弱性クラスに関するより狭いながらも教訓的なレッスンを明らかにします。
2025/9/2
集中流動性プロトコルBunniは、LP会計システムの精度/丸めバグを通じて攻撃を受けました。正確な損失は情報源によって異なります(当初240万ドルと報告され、後の分析では最大830万ドルと示唆されています)。
仕組み:
攻撃者は、自分に有利な丸めを悪用する繰り返しの入金と出金を行う方法を見つけました。各操作はわずかな量を抽出しましたが、多数の操作を通じて、これらのわずかな量が数百万ドルに蓄積されました。
重要な理由(テスト方法論の観点):
ほとんどのテストスイートは、操作シーケンスではなく単一の操作をモデル化します。テストは単一の入金がシェアを正しく計算することを検証するかもしれませんが、数十の操作後にのみ現れる精度エラーは捕捉しません。ステートフルシーケンスをモデル化しないファザーは、これらの問題を見逃します。
緩和策: 確立された数学ライブラリを使用します(例:PRBMath、ABDKMath)。単一の操作だけでなく、操作のシーケンスをテストします。外部インターフェースが標準精度を使用する場合でも、内部的により高い精度を使用することを検討します。
脆弱性クラス: LP会計における精度/丸めエラー。
詳細: Bunni V2 Exploit: $8.3M Drained
2025/10/30
Garden Financeは、複数チェーンにわたって550万ドル以上の攻撃を受けました。攻撃者は1つのチェーンで攻撃を実行し、クロスチェーンブリッジを使用して盗んだ資産を他のチェーンに移動し、異なるDEXを通じてスワップして痕跡を隠しました。
重要な理由(脅威モデリングの観点):
マルチチェーン展開は新しい攻撃面を生み出します。脅威モデルはクロスチェーン攻撃ベクトルを考慮する必要があります。攻撃者はあなたのプロトコルを1つのチェーンで攻撃し、クロスチェーンインフラを使用して逃げるか、痕跡を隠す可能性があります。
緩和策: クロスチェーン攻撃ベクトルを含む脅威モデルを設計します。クロスチェーンブリッジの動作とそのセキュリティの前提を理解します。クロスチェーンの監視とアラートの実装を検討します。
脆弱性クラス: マルチチェーン攻撃パターン。
詳細: Garden Finance Breach Coverage
2025/9/8
Sui上のNemo Protocolが240万ドルの攻撃を受けました。攻撃者はCircle経由でArbitrumからEthereumに盗んだUSDCをブリッジしました。この攻撃はMoveの安全機能にもかかわらず発生しました。
重要な理由(ツールの観点):
Moveの型システムは特定のバグを防ぎますが、プロトコルレベルの脆弱性全体のクラスには対処しません。プロトコルの経済ロジックに欠陥がある場合、アクセス制御が弱い場合、オラクル統合に脆弱性がある場合、Moveの型システムは役に立ちません。
脆弱性クラス: 非EVMエコシステムにおける経済ロジックエラー。
詳細: Nemo Protocol Exploit Details
2025年の他のいくつかのハッキングは、新規の技術的脆弱性ではなく、単純な運用上の障害を表しています:
これらのインシデントは既知のパターンに従っています:侵害された管理者キー、過度なトークン承認、アクセス制御の失敗。解決策は既知です:管理機能にマルチシグを使用し、適切なアクセス制御を実装し、過度な承認を監視します。
2025年のハッキングを振り返ると、いくつかのパターンが浮かび上がります。経済的正確性はコードのセキュリティと同じくらい重要です。Yearnの無限発行とBalancerの丸め誤差は、プロトコルがコードのスマートコントラクト監査だけでなく、経済モデルの形式的検証が必要であることを示しています。システム境界は複雑性を隠します。GMXの攻撃は、十分にスマートコントラクト監査されたコンポーネントでも統合時に失敗する可能性があることを示しています。統合テストと敵対的シミュレーションは不可欠です。
精度と丸めは依然として危険です。Bunniの攻撃は、固定小数点演算の脆弱性が持続することを思い出させます。単一の操作だけでなく、操作シーケンスをテストします。クロスチェーンは新しい攻撃面を生み出します。Garden FinanceとNemo Protocolは、マルチチェーン展開がクロスチェーン攻撃ベクトルを考慮したセキュリティモデルを必要とすることを示しています。言語の安全性は経済的バグを排除しません。Nemo Protocolは、型安全な言語が特定のバグを防ぐものの、経済ロジックエラーには対処しないことを示しています。レガシーコントラクトは継続的なリスクです。Yearnの12月の攻撃は、廃止されたコントラクトが脆弱なままであり、1つの攻撃がレガシーインフラに注目を集める可能性があることを示しています。明確な廃止戦略と継続的な監視を持ちます。
Audited, Tested, and Still Broken: Smart Contract Hacks of 2025 was originally published in Coinmonks on Medium, where people are continuing the conversation by highlighting and responding to this story.


