テクノロジーインサイト一覧へ戻る
2026.09.07

Cozy Finance、UMA楽観的オラクルへの無争議の回答で保険トリガーを偽装され約16万ドルが流出

Cozy Finance、UMA楽観的オラクルへの無争議の回答で保険トリガーを偽装され約16万ドルが流出

何が起きたか

Cozy FinanceはDeFi向けのプロテクション(保険類似)プロトコルで、ユーザーは特定プロトコルの障害・攻撃に備えてPTokenを購入し、対象事象が発生すればUSDCで支払いを受ける。対象事象が発生したかどうかの判定には、UMAのOptimistic Oracle(楽観的オラクル)が用いられていた。

SlowMistの記録によれば、2026年9月7日、Optimism上のCozy Financeが約16万ドル(1ドル=152.27円換算で約2,436万円。為替は2026年9月13日時点のGoogle Finance値)を失った。攻撃の流れは次の通りとされる。攻撃者はまずAave v2とCurveを対象とするプロテクションマーケットでPTokenを購入した。次にUMAのOptimistic Oracleに対して「YES」の回答(該当事象が発生したという主張)を提出した。この主張には誰からも異議が申し立てられず、そのまま確定した。対象マーケットがTRIGGERED状態へ移行すると、攻撃者はPTokenをバーンしてUSDCを請求した。

本稿執筆時点で、Cozy Finance自身による公式のポストモーテムは確認できていない。以下の分析は、SlowMistの技術分析を一次に近い情報として扱いつつ、公開されている仕組みの一般的性質から導いたものである。

何が欠けていたのか

指摘されている欠陥は二つある。一つは、トリガーがAaveやCurveで実際に攻撃が起きたことを独立に検証していなかったこと。もう一つは、PTokenの支払い受給資格が、主張が提出される前の保有者スナップショットに紐づいていなかったことである。

この二つは単独ではそれほど危険に見えない。楽観的オラクルは、そもそも「主張を出し、一定時間内に異議がなければ真とする」仕組みなのだから、外部の独立検証を持たないのは設計どおりとも言える。受給資格についても、保険的商品でトークンが自由に取引されるなら、保有者はいつでも変わりうる。

危険なのは組み合わせである。主張の真偽が異議申し立ての有無だけで決まり、かつ支払いの受給資格が事後の保有状態で決まるなら、攻撃者は「請求権を買ってから、事故が起きたと主張する」という順序で利益を確定できる。火事が起きていないのに、保険証券を買ってから自分で火事が起きたと申告し、誰も否定しなければ保険金が下りる、という構図に等しい。

ここで重要なのは、UMA側が誤作動したわけではない点である。楽観的オラクルは、経済的インセンティブを持つ誰かが虚偽の主張に異議を申し立てることを前提に、その前提のもとで正しく動いた。異議が来なかったのは、対象が実際にどの程度注視されていたかという、技術ではなく市場の問題である。これは他のオラクル事故——例えばスポット価格を単独のソースとして使った価格操作型の攻撃——と同じ構造を持つ。オラクルは真実を教えてくれる装置ではなく、「どういう条件下でならその値を信じてよいか」という前提の束であり、事故は前提が満たされない条件で起きる。

異議申し立てを支える経済が成り立っていたか

楽観的オラクルの安全性は、最終的に一つの不等式に還元できる。虚偽の主張によって攻撃者が得る利得が、異議申し立て者が得る報酬より大きければ、その差額の分だけ攻撃は割に合う。異議申し立て者は、虚偽だと見抜き、ボンドを預け、係争期間を待ち、最終的な裁定で勝って初めて報酬を得る。一方の攻撃者は、主張が通れば即座に支払いを受け取る。両者の期待値は対称ではない。

この非対称性は、対象が小さいほど厳しくなる。プロテクションマーケットの残高が数十万ドル規模であれば、専業の監視者が常時張り付く経済的理由はない。UMAの仕組みを使う側は、この「誰が見張るのか」という問いに具体名で答えられる必要がある。答えが「コミュニティの誰か」であれば、それは監視されていないのと同じである。

もう一つ見落とされやすいのが、支払い条件の判定に使われるデータと、そのデータが参照する対象の乖離である。今回の対象はAave v2とCurveという外部プロトコルの被害であり、Cozy側のコントラクトからは直接観測できない。外部プロトコルの状態を条件にする商品は、必然的に「誰かの申告」に依存せざるをえない。だからこそ、申告を受け取る側の設計——スナップショットと、申告者以外による検証——が唯一の防波堤になる。

想定される落とし穴

第一に、楽観的オラクルの安全性は「異議申し立てが来ること」に依存し、それは対象マーケットの注目度に比例する。取引量の少ないマーケット、長く動きのないマーケット、あるいは深夜や週末に始まる liveness ウィンドウでは、監視者が存在しない可能性が高い。プロトコルの規模が小さいほど、この前提は弱くなる。自社が楽観的オラクルを使う場合、想定される支払額に対して異議申し立てのボンドが十分に大きいか、そして誰が異議を申し立てるインセンティブを持つのかを、マーケットごとに書き出せるかが問われる。

第二に、受給資格のスナップショットは、保険的商品のほぼ必須要件である。「主張が提出された時点より前の保有者だけが受給できる」という制約がなければ、請求権そのものが事後に取得可能な資産になる。同じ論点は、ガバナンストークンによる投票(提案後の買い集め)、エアドロップの資格判定、清算保護など、状態変化の前後で価値が跳ねるあらゆる設計に共通する。

第三に、トリガー条件が自然言語で書かれている場合、判定の曖昧さがそのまま攻撃面になる。楽観的オラクルの回答者は文言を解釈する。文言が「Aaveで攻撃があったか」程度の粒度であれば、何をもって攻撃とするかの線引きは異議申し立て側の主観に委ねられ、争うコストが上がる。争いにくい文言は、そのまま異議が出にくい文言でもある。

第四に、被害額の小ささを軽視すべきではない。約16万ドルという規模は、攻撃が経済的に成立する下限を示しているにすぎない。同じ設計のマーケットが大きな残高を持っていれば、同じ手順がそのまま通る。実際、この数週間に公開された事例を並べると、価格オラクルのスポット参照、フィードの偏差閾値、そして今回の楽観的オラクルと、攻撃対象は「価格の正しさ」から「判定の正しさ」へ広がっている。価格フィードについては、TWAPや複数ソース、サーキットブレーカといった対策が定型化してきたが、事象判定型のオラクルには同等の定型がまだない。

第五に、プロテクション商品は事故のときにだけ動く。平時に支払いが発生しないため、支払い経路のテストが手薄になりやすく、攻撃者が最初に通る利用者になるという構図が生まれる。支払い経路は、実際に支払いが起きない期間が長いほど検証の機会を失う。定期的に本番環境でトリガー条件と支払い経路を検証する運用を持たない限り、この種の欠陥は事故のときに初めて発見される。

【技術インサイトとアクション】

  1. 楽観的オラクルは「真実を確認する仕組み」ではなく「反証されなければ真とみなす仕組み」である。この前提は、注目されていないマーケットでは自動的に破れる。自社が同種のオラクルに依存している場合、依存しているのは技術ではなく、異議申し立てを行う第三者の存在という市場条件である。 [プロトコル開発者] 今月中に、楽観的オラクルを使う全マーケットについて、想定最大支払額・異議ボンド額・liveness時間・実際に監視している主体を一覧化し、支払額がボンドを大きく上回るマーケットを特定する。
  2. 状態変化の前後で価値が跳ねる請求権は、変化を主張する行為より前の時点でスナップショットを取らなければ、事後取得による裁定が成立する。保険の受給資格に限らず、ガバナンス投票、清算保護、条件付き報酬のすべてに同じ原則が効く。 [コントラクト開発者] 次のリリースまでに、支払い・投票・報酬の受給資格が「提案時点以前の状態」に紐づいているかをコード上で確認し、紐づいていない箇所にスナップショット取得を追加する。
  3. 判定条件が自然言語である限り、異議申し立てのコストは条件の曖昧さに比例して上がる。争いにくい条件は攻撃されやすい条件である。オンチェーンで機械的に判定できる条件(特定コントラクトの残高減少、特定イベントの発火)へ寄せられる部分は寄せたほうがよい。 [プロダクト設計] 新規マーケットの設計時に、トリガー条件をオンチェーンの観測可能な事実へ翻訳できるか検討し、できない条件には支払い上限を設ける。

【引用:出典】

本記事は公開情報に基づく技術解説であり、投資助言を目的としたものではありません。本件についてCozy Finance自身による公式のポストモーテムは本稿執筆時点で確認できておらず、攻撃経路の記述は第三者分析に基づきます。