Author: Ed Felten, Co-Founder, Offchain Labs Source: medium Translated by: Good Oba, Golden Finance
Offchain Labsチームは3月22日、OP Labsチームに対し、彼らがテストネットワーク上に展開したOptimism詐欺防止システムに2つの深刻なセキュリティ脆弱性を発見したことを公表した。align: left;">3月22日、Offchain LabsチームはOP Labsチームに対し、彼らがテストネットワーク上に展開したOptimism詐欺防止システムに当社が発見した2つの深刻なセキュリティ脆弱性を開示した。私たちはOP Labsチームに攻撃用のデモ悪用コードを提供し、3月25日にOP Labsは両方の問題の有効性を確認しました。
私たちはOP Labsチームと情報公開を調整しましたが、OP Labsチームからは、これらの脆弱性が解決されるまで公開を保留するよう要請されました。昨日(4月25日)遅く、Optimismのテストネットワークが更新され、本日初めてこれらの脆弱性を公開します。
これらの脆弱性は、悪意のある当事者がOPスタック不正証明メカニズムに不正なチェーン履歴を受け入れさせること、またはOPスタック不正証明メカニズムが正しいチェーン履歴を受け入れることを妨げることを可能にします。これらの問題は、タイマーを処理するためのOP不正防止設計の欠陥に起因しています。
その結果、不正防止システムは、緊急評議会の介入のみに依存するアプローチと比較して、セキュリティを向上させることはできません。
脆弱性の性質
タイマーは、対話型不正防止設計の最も微妙な側面の1つです。敵側はチャレンジゲームでは全く行動しないかもしれないので、ある時点で、プロトコルは動かないプレイヤーがタイムアウトで失敗することを述べる必要があります。しかし、敵側は親L1チェーン(例えばイーサ)に対する検閲攻撃を使って、正直なパーティがゲームに参加できないようにすることもできます。
時間切れになってもプレイヤーが動かない場合、プロトコルはそのプレイヤーが検閲下にあるのか、それとも検閲下にあるふりをして沈黙している悪者なのかを見分けることができません。(どちらの場合も、プロトコルはプレイヤーの「無線の沈黙」を見ることしかできない)。したがって、プロトコルは正直なプレイヤーに十分な余裕を与えて、検閲に負けないようにし、悪意のあるプレイヤーがプロトコルを長く引き延ばさないようにしなければなりません。
例えば、1対1のチャレンジプロトコルでは、紛争の両側に1人ずつプレイヤーがいますが、Arbitrumの現在展開されているプロトコルは、非常にうまく機能するアプローチを使用しています。この方法を直感的に理解する方法を紹介しよう。各プレイヤーは、相手プレイヤーの手番が回ってきたときに「時間ポイント」を獲得し、7日間以上時間ポイントを貯めれば、時間によってチャレンジに勝利する。この考え方は、あるプレイヤーが合計7日間「遅れた」場合、その遅れが完全に検閲によるものであれば正当化されないため、そのプレイヤーは不誠実であるとみなされ、安全に負けを宣言できるというものである。これにより、1対1の契約は7日間まで検閲から安全になります。
これは紛争のどちらかの側にプレイヤーが一人しかいないときにはうまく機能します。しかし、Optimismがそうであるように、多くのプレーヤーが参加できるようにする場合、時間クレジットをどのように管理するかはあまり明らかではありません。プレーヤーを2つのチームに分け、それぞれのチームに時間クレジットを与えることは簡単にできる。しかし、裏切り者の攻撃には注意が必要で、悪意ある側がしばらくの間正直なふりをし、最悪のタイミングで正直な「チームメイト」の背中を刺すだけである。
OPプロトコルは、当初テストネットワークに導入されたものですが、裏切り者が相応しくないタイムボーナスを得ることができるため、この種の裏切り者攻撃に対して脆弱です。これにより、悪意のある行為者は、負けるはずの概念実証ゲームに不正に勝つことができ、それによって不正なチェーン履歴を受け入れたり、正しいチェーン履歴を拒否したりすることができます。
これらは解決するのが難しい問題であり、OPのオリジナルのデザインは微妙な攻撃を受けていましたが、私たちが提供したデモの脆弱性に対処するために、タイマー処理コードにいくつかの変更を加えました。現時点では、私たちは彼らの修正したプロトコルのセキュリティ分析を行っていません。
タイマー、裏切り者、およびその他の攻撃への対応
不正防止プロトコル、特にそのタイミング面の設計は非常に困難です。そのため、私たちの BoLD プロトコルには、詳細な脅威モデルと、BoLD プロトコルがそのような裏切り者攻撃の影響を受けないという証拠を提供する技術文書が付属しています。このような問題の複雑さと微妙さを考えると、潜在的な攻撃が存在しないことを確実にするためには、明確な脅威モデルと安全性の証明が必要だと考えます。実際、証明を作成する過程で、BoLDプロトコルの複数の問題を特定し、修正しました。
オリジナルのセキュリティ開示
以下は、3月22日に私たちがOP Labsに送った開示からの抜粋です:
私たち(Offchain Labsチーム)は、OP Stack Proof of Failureシステムの現行バージョンに重大なシステム欠陥を特定しました。この文書では、これらの欠陥について説明し、参考のために悪用コードのサンプルを提供します。
これらの欠陥により、敵対者はプロトコルを不正な請求にオープンにしたり、正しい請求を拒否したり、L1ガス制限内で解決できない紛争を発生させたりすることで、チェーンのセキュリティと活動を混乱させることができます。注(4月26日):3つ目の問題(解決不可能な紛争)は公開され、文書化されているため、これ以上の言及は削除します。
私たちは、あなたの現在のプロトコルがメインネットに展開された場合、ユーザーの資金を非常に高いリスクにさらすことになると考えています。
欠陥の性質
欠陥のいくつかは、障害防止システムにおけるタイマーの管理方法に起因しているようです。つまり、祖父母ステートメントからのタイマーの継承により、悪意のあるアクターによって作成されたステートメントが、以前に正直なアクターによって作成されたステートメントからタイマー クレジットを継承することができ、それによって悪意のあるアクターが勝利できるまで、悪意のあるステートメントのタイマー クレジットを人為的に膨らませることができます。課題たとえば、悪意のある行為者は、勝利を主張するために必要なクレジット量よりもわずかに少ないタイマー クレジットを継承するように手配することができます。
以下に、これらの攻撃を実証するエクスプロイトの例を示します。
最初の脆弱性 ( test_exploit_last_second_challenge
)は、攻撃者が正直な発言を妨害することを可能にします。
2つ目の脆弱性( test_exploit_last_second_defend
)は、攻撃者が不正な請求を受け入れることを可能にします。
これらの脆弱性は、コミット96a269bc793fa30c3e2aa1a8afd738e4605fa06e
時のOP Stack Fraud Proofing Systemの最新バージョンに適用されるようです。strong>