なぜプロトコルはこの種の攻撃を防ぐためにフラッシュローンを単純に禁止しないのですか?
フラッシュローン自体は中立的なツールであり、裁定取引者、清算ボット、一般ユーザーも正当な資金操作のためにフラッシュローンに依存しているからだ。禁止すれば市場効率性の重要なメカニズムも同時に停止させてしまう。ほとんどのプロトコルが選ぶのは、フラッシュローンを封じることではなく、自らの価格決定メカニズムを単一トランザクションによる操作に対して耐性のあるものにすることだ——例えば即時相場ではなく時間加重平均価格(TWAP)を採用することで、攻撃者が1ブロック内で価格を吊り上げられたとしても、プロトコルが実際に採用する価格は一定期間の平均値を反映するため、操作コストが大幅に上昇する。
言い換えれば、防御の重点は「ツールを塞ぐ」ことから「ツールを悪用しても効果が出ないようにする」ことへと移っている。
この攻撃パターンを説明する具体的な過去の事例はありますか?
2020年のHarvest Finance事件は初期の典型的なケースだ:攻撃者はフラッシュローンで大量の資金を借り入れ、Curveの資金プールで巨額の取引を実行してプール内のステーブルコイン交換レートを一時的に歪め、その後この歪んだ価格とHarvestのボールト(金庫)の価格決定メカニズムとの差を利用して裁定取引を行い、1回の攻撃で2,400万ドル以上の利益を得た。この一連のプロセスは数分間、1つのトランザクション内で完結した。
この種の事件はその後さまざまなプロトコルで繰り返し発生しており、パターンは非常に似ている——依存されている価格ソースをまず操作し、その価格差を利用して別のプロトコルで裁定取引を行う。違いは、悪用されるプロトコル機能が清算なのか、ミンティングなのか、借入限度額の計算なのかという点だけである。
フラッシュローン攻撃は一般的に理解される「ハッキング」とどう違いますか?
最大の違いは、フラッシュローン攻撃が通常システムへの侵入、秘密鍵の窃取、権限チェックを回避するコードの脆弱性の悪用を伴わない点にある——攻撃者が呼び出す各関数は、プロトコルが誰でも呼び出せると明示的に許可している正常な機能である。実際に悪用されているのは「システム防御の突破」ではなく、「複数の正当な機能が連鎖することで、設計者が予期していなかった組み合わせ効果が生まれる」ことだ。
これが、従来のセキュリティの考え方(ファイアウォール、アクセス制御、入力検証)がこの種の攻撃に対してほとんど防御効果を持たない理由でもある。攻撃者は最初から最後まで正当な鍵、正当な呼び出し、正当なトランザクションを使ってすべてを完了させる。唯一悪用される欠陥は経済的ロジックの層にあり、コードのアクセス制御の層にはない。
一般ユーザー(開発者ではない)は、自分が使っているプロトコルがフラッシュローン攻撃に脆弱かどうかをどう判断すればよいですか?
コードを読める必要はなく、いくつかの間接的な指標から判断できる。第一に、プロトコルが完全なサードパーティ監査報告書を公開しているか、そして監査範囲に「オラクル操作」や「価格操作」のテスト項目が明記されているかを確認する。第二に、プロトコルの価格決定メカニズムの説明を見る——「即時相場」としか書かれておらず、時間加重や複数ソース検証への言及が一切ない場合は警戒信号である。第三に、プロトコルのロック資産総額(TVL)とプールの深さに注意する——流動性が薄いプールはそれ自体、単発の巨額取引によって価格が動かされやすく、フラッシュローン攻撃が好んで狙う対象でもある。
これらは絶対的な保証ではないが、年利回りだけを見て資金を預けるのではなく、事前にこうした点を確認することで、地雷を踏む確率を大幅に下げられる。
2020年以降、DeFiプロトコルはフラッシュローン攻撃によって累計数億ドルの損失を被っている。これらの攻撃には共通点がある——攻撃者は元手を一切用意する必要がなく、それでも1つのトランザクション内で数千万ドルを借り入れ、市場を操作し、利益を確定して立ち去ることができる。これがどのように起こるかを理解するには、まずフラッシュローンという仕組み自体から説明する必要がある。
フラッシュローンの核心ルールは単純だ:借入と返済は同一のブロックチェーン・トランザクション内で完結しなければならない。トランザクション終了時までに借り手が元本と手数料を返済できなければ、トランザクション全体が自動的にロールバックされ、何も起こらなかったことになる。この「全て成功するか、全て取り消されるか」というアトミック性により、プロトコルは担保や信用審査を一切必要とせず、誰にでも巨額の資金を安心して貸し出せる——プロトコルが負うデフォルトリスクが実質的にゼロだからである。
正規のユーザーにとって、フラッシュローンは元々裁定取引、担保の入れ替え、清算といった一回限りの資金操作のために設計されたものだった。しかし同じアトミック性の仕組みにより、攻撃者も自身の資産規模をはるかに超える資金を一時的に動かし、あるプロトコルの価格決定や ガバナンスメカニズムを揺さぶることができてしまう。
ほとんどのフラッシュローン攻撃は似たような構造をたどる。第一段階:攻撃者があるプロトコルから大量の資金(多くの場合、数百万から数千万ドル相当のトークン)を借り入れる。第二段階:この資金を使い、標的プロトコルが依存する価格オラクルを操作する——例えば流動性の薄い資金プールで巨額の取引を実行し、あるトークンのオンチェーン価格を人為的に吊り上げるか押し下げる。第三段階:攻撃者はこの操作された誤った価格を利用し、同じ価格フィードに依存する別のプロトコルで清算、過剰借入、または不公平な交換を実行し、価格差を利益として確定させた後、フラッシュローンの元本と手数料を返済してトランザクションを終える。
この攻撃パターンが事前に防ぎにくいのは、各ステップを個別に見ればプロトコルが許可する正常な操作だからだ——借入、取引、清算はいずれも正当な機能である。問題は、攻撃者がこれらを連鎖させ、単一ブロック内で完結する自己完結型のループを作り出す点にある。
ほとんどの被害事例において、根本原因はフラッシュローンの仕組み自体の欠陥ではなく、標的プロトコルのオラクルの設計上の欠陥にある——特に単一のDEXプールから即時価格を直接読み取り、時間加重平均や複数ソースでの照合を行わないプロトコルは、単発の巨額取引によって瞬時に価格を歪められやすい。これが、多くの監査機関が「オラクルが単一トランザクション内で操作可能かどうか」をDeFiプロトコルのローンチ前必須チェック項目に含めている理由である。
あなたがDeFiユーザー(預金者、流動性提供者、またはトークン保有者)である場合、フラッシュローン攻撃による直接的な影響は通常、プロトコルの資金が枯渇する、トークン価格が瞬時に暴落する、あるいはガバナンスの投票権が一時的に乗っ取られて悪意ある提案が可決される、といった形で現れる。どのプロトコルに資金を預ける前でも、その価格データが単一DEXの即時相場から来ているのか、それとも複数ソース・時間加重型のオラクルから来ているのかを確認する価値がある——後者の方がフラッシュローン操作への耐性は一般的にはるかに高い。また、資産の大部分を単一のプロトコルに集中させないことも、1つの事件が保有資産全体に与えるダメージを効果的に抑える。