DeFiプロトコルは、市場の下落や規制措置ではなく、スマートコントラクトの悪用により、数十億ドルを失っています。開発者が予期しない方法で、誰かが意図的にコードを変えてしまったのです。これらの攻撃がどのように機能するかを理解することは、単なる学問的な演習ではありません。DeFiを使用している場合、あなたのお金はこれらのコントラクト内に存在しているのです。
Ethereum ETH$2,200ETH$2,20024h+0.46%7d+6.96%30d+8.02%1y+31.82%via Statility エコシステムだけで、2020年からDeFiがスケーリングを始めた以来、悪用による50億ドル以上の流出が見られています。これらの中には、高度なゼロデイ攻撃も含まれています。多くは、監査人が見落とした既知の脆弱性パターンか、監査完了後に導入されたものです。以下は、繰り返し現れる攻撃ベクトルです。
常習犯
再入性(Reentrancy)
再入性はスマートコントラクトの最も古い脆弱性であり、今でも機能しています。この攻撃は単純なロジックフローを悪用します。コントラクトが独自の内部残高を更新する前に、外部アドレスに資金を送信します。攻撃者のコントラクトが資金を受け取った後、すぐに元のコントラクトにコールバックして再度引き出します。残高がまだ更新されていないため、コントラクトは攻撃者がまだ資金を保有していると考え、さらに送信します。
最も有名な再入性攻撃は、2016年のThe DAOハックで、約6000万ドルのETHを流出させ、最終的にはEthereum Classic を生み出したEthereumのハードフォークにつながりました。業界がその教訓を学んだと想定するかもしれません。しかし学びませんでした。
2023年7月、Vyperコンパイラーの再入性脆弱性(個別プロトコルのコードではなく、プログラミング言語自体)により、複数のCurve Financeプールで悪用が発生し、6000万ドル以上が流出しました。このバグはVyperバージョン0.2.15~0.3.0に何年も存在していました。これが重要な理由は、再入性がプロトコル開発者と監査人さえも目を向けていないスタックのレイヤーに隠れることができることを示しているからです。
オラクル操作
DeFiプロトコルが機能するには価格データが必要です。貸付プラットフォームは担保の価値を知る必要があります。DEXsはスリッページ保護のための参照価格が必要です。この価格データはオラクルから来ており、オラクルを操作することはプロトコルを操作することを意味します。
2022年10月のMango Marketsの悪用は教科書的な事例です。Avraham Eisenbergは500万ドルを使用して、Mango独自の取引所でMNGOトークンの価格を人工的に上昇させ、担保ポジションの価値をインフレさせました。その後、インフレした担保に対して1億1400万ドルを借り、それを引き出しました。技術的には、プロトコルはまさに設計通りに動作しました。オラクルは見た価格を報告しました。貸出ロジックはそのルールに従いました。しかし、システムはオラクル価格が実際の市場価値を反映していると仮定しており、その仮定は間違っていました。
単一のオンチェーン価格ソース(特に低流動性トークン独自の取引プール)を使用するプロトコルは、本質的にこれに脆弱です。 Chainlinkと他の分散型オラクルネットワークはこれを軽減するために複数のソースにわたってデータを集約することで存在していますが、すべてのプロトコルがそれらを使用するわけではなく、集約されたフィードでさえ極端な条件下では操作される可能性があります。
フラッシュローン攻撃
フラッシュローンは、単一のトランザクション内で借り入れと返済を行う必要がある担保不要のローンです。返済が発生しない場合、全体のトランザクションはまるで発生しなかったかのように元に戻ります。これは伝統的金融には相当するものがない、真に新しい金融的なプリミティブです。
これは多くの悪用を経済的に実行可能にするツールでもあります。フラッシュローンより前は、5000万ドルのプールを操作したい攻撃者は5000万ドルが必要でした。フラッシュローンでは、ガス代とフラッシュローンプレミアムをカバーするのに十分なETHが必要であり、多くの場合、数百ドルに過ぎません。
このパターンは数十の悪用にわたって繰り返されます。フラッシュローン経由で膨大な金額を借り、価格オラクルを操作するか脆弱なプールを排水するのに使用し、ローンを返済し、利益を保つ。2020年のbZx攻撃はこのパターンを示す最初のものでした。2021年のPancake Bunnyは4500万ドルをフラッシュローン駆動の価格操作で失いました。リストは増え続けています。
フラッシュローンは脆弱性を作成していません。それを増幅しています。大規模な資本移動に脆弱だったプロトコルはすでに破壊されていました。フラッシュローンはそれを、誰もが大規模な資本になることを可能にしました。無料で。
監査が実際に行うこと(そしてしないこと)
スマートコントラクト監査は、通常は専門のセキュリティファームによって実行される行ごとのコードレビューで、既知の脆弱性パターン、ロジックエラー、および仕様からの逸脱を探します。優れた監査人はエッジケースもテストし、攻撃シナリオをシミュレートし、経済的インセンティブ構造を確認します。
監査がないのはこれです。保証。監査されたプロトコルは定期的にハッキングされます。これにはいくつかの理由があります。
まず、監査されたコードは展開されたコードではない可能性があります。プロトコルは監査後に変更を加えることが多く、時には重大な変更もあり、再監査なしに展開することもあります。次に、監査は限られた範囲内で単独のコントラクトを検査します。DeFiプロトコルはコンポーザブルであり、他のプロトコルと予測不可能な発生的行動を生み出す方法で相互作用することを意味します。貸出プロトコルは単独では安全かもしれませんが、誰かが予期しない方法でそれと相互作用する新しいプールを作成すると、脆弱性になります。
第三に、多くの悪用は技術的ではなく経済的です。コードはそれが書かれるように動作しますが、経済的インセンティブ構造には攻撃者が悪用できるフローがあります。純粋なエンジニアリング背景を持つ監査人はこれらをキャッチしないかもしれません。これが理由で、一部のセキュリティファームは監査チームに経済学者とメカニズム設計者を含めています。
監査が捕捉する対象vs.見落とす対象
| 監査が通常捕捉 | 監査が見落とすことが多い |
|---|---|
| 再入性パターン | 監査後のコード変更 |
| 整数オーバーフロー/アンダーフロー | クロスプロトコルのコンポーザビリティリスク |
| アクセス制御エラー | 経済的またはインセンティブ設計のフロー |
| 既知の脆弱性パターン | 新規な攻撃ベクトル |
| ガス最適化の問題 | ガバナンス攻撃サーフェス |
| 標準準拠(ERC-20など) | インフラストラクチャレイヤーのバグ(コンパイラー、EVM) |
事後分析パターン
十分な悪用事後分析の後、パターンが浮上します。ほとんどの悪用は新しくありません。既知のテーマのバリエーション、盲点を持つプロトコルに適用されています。
未検証の仮定は最も一般的な根本原因です。開発者はオラクル価格が正確だと仮定しました。意図されたコントラクトのみが特定の関数を呼び出すと仮定しました。誰も単一のブロック内でマーケットを40%移動させるだけの資本を持たないと仮定しました。すべての仮定は潜在的な攻撃サーフェスです。
アップグレード可能なコントラクトとadminキーは別の繰り返すテーマです。多くのプロトコルはプロキシパターンを使用して、展開後にコントラクトロジックをアップグレードできるようにします。これは開発者がバグをすばやく修正できるようにするセーフティメカニズムとしての意図です。しかし、これはまた、侵害されたadminキーが機能しているコントラクトを悪意のあるコントラクトで置き換えるのに使用できることを意味します。2022年のRonin Bridgeハック(6億2500万ドルを失った)は、スマートコントラクトロジックのフローではなく、adminキーの侵害でした。
注目すべきDeFiの悪用
| プロトコル | 年 | 流出額 | 攻撃タイプ |
|---|---|---|---|
| The DAO | 2016 | $60M | 再入性 |
| Ronin Bridge | 2022 | $625M | バリデータキー侵害 |
| Wormhole | 2022 | $320M | 署名検証バイパス |
| Mango Markets | 2022 | $114M | オラクル/価格操作 |
| Curve (Vyper) | 2023 | $60M | コンパイラレベルの再入性 |
| Euler Finance | 2023 | $197M | 清算ロジックのフロー |
自分自身を保護する
Solidityの開発者でない限り、スマートコントラクトを自分で監査することはできません。それでも、正しい質問をすることで、より明確にリスクを評価できます。
プロトコルが監査されているかどうか、誰によって、そしてどのくらい最近かを確認してください。2年前の監査は、50回更新されたコードベースにはあまり保証を提供しません。独立した複数のファームからの複数の監査は1つより優れています。バグバウンティプログラムは良い兆候です。ホワイトハット研究者が攻撃者の前に問題を見つけるための継続的なインセンティブを作成するからです。
adminキーを保有している人を理解します。3つの署名者を持つマルチシグがコントラクトをアップグレードする能力を制御する場合、これは有意な集中化リスクです。これらのキーがユーザーに変更前に退出する48時間を与えるタイムロックの背後にある場合、これはより良い設計です。
フォークに注意してください。チームが別のプロトコルのコードをコピーして新しいバージョンを起動する場合、セキュリティの含意を完全に理解せずにピースを変更することが多くあります。最悪の悪用の一部は、そうでなければ安全なプロトコルの実行不良フォークを打っています。
プロトコル間で多様化します。すべての法定紙幣を1つの銀行に保つのと同じロジックがここに適用されます。使用しているプロトコルが悪用された場合、ポートフォリオの一部に制限された露出は生存可能な損失です。集中はそうではありません。
DeFiセキュリティは向上しています。形式的検証ツール、より洗練された監査慣行、およびUniswapとAaveのようなバトルテスト済みコードベースは、よく構築されたコントラクトが事件なしで数年間に数十億ドルを保護できることを証明しています。しかし、フロンティアは常に乱雑であり、新しいコードは新しいリスクを運びます。最も高い利回りを提供しているプロトコルは、時間と敵対的な条件によってテストされる可能性が最も低いものです。それは偶然ではありません。
暗号プラットフォーム、取引所、およびDeFiアプリを探していますか?当社のキュレーションされたディレクトリを参照してください。