1. ホーム
  2. 用語集
  3. ランタイム監視

ランタイム監視

別名 リアルタイムのセキュリティ監視 · オンチェーンの脅威検知

定義

ランタイム監視とは、プロトコルの稼働中のオンチェーン活動を継続的に見守り、不審なトランザクションが起きたその場で検知し、場合によっては阻止することです。ある時点のコードをレビューする監査を補い、コードが実際に何をしているかを見守ります。

DeFi のエクスプロイトの多くは、1回のトランザクションで完結するものではありません。攻撃者はコントラクトをデプロイし、テストし、資金を借り、価格を動かし、そのあとでようやく標的から資金を抜き取ります。その過程は数分から数時間に及ぶこともあります。各ステップは公開ブロックチェーン上に痕跡を残します。ランタイム監視とは、その痕跡を、対処が間に合う速さで読み取る取り組みです。

仕組み

監視システムは、ブロックチェーン、そして多くの場合はブロックへの取り込みを待っているトランザクションの列を見張り、攻撃に結びつくパターンを探します。典型的なシグナルには次のようなものがあります。

  • 新たにデプロイされたコントラクトが、プロトコルの関数を通常とは異なる順序で呼び出している
  • 大口のフラッシュローンのあとに、オラクルの価格を動かす取引が続いている
  • ボールトのシェア価格やプールの残高が急に変化している
  • 所有権の移転やアップグレードなど、誰も告知していない管理操作が行われている
  • 過去のエクスプロイトに関係するアドレスへ資金が移動している

検知は通常、2段階で行われます。まず高速なフィルターが、新しいトランザクションやコントラクトを既知の攻撃パターンと照らし合わせて点数を付けます。不審なものは、チェーンの現在の状態に対してシミュレーションされ、実際に何が起きるのか、つまりどの残高が変わり、どの価格が動き、資金がどこへ行くのかが確かめられます。大きいけれど普通の取引と、エクスプロイトの最初の一手とを見分けられるのは、このシミュレーションがあるからです。

シグナルが発せられると、システムはチームに警告を送ります。構成によっては、自動的な対応を起動することもできます。攻撃が完了する前にコントラクトを一時停止したり、関数をブロックしたり、資金を手の届かない場所へ移したりするのです。

シンプルな例

攻撃者が、フラッシュローンで大きな金額を借り、薄い流動性プールでスワップして価格をゆがめ、その価格を使って借り入れをしようとするコントラクトをデプロイします。監視システムは新しいコントラクトをシミュレーションし、パターンを認識して、実際のトランザクションが取り込まれる前に高リスクと判定します。プロトコルのガーディアンが借り入れを一時停止し、攻撃は失敗し、チームが調査に入ります。監視がなければ、最初に気づくきっかけは空になったボールトだったかもしれません。

監視、監査、バウンティの違い

スマートコントラクト監査はデプロイ前またはその直後にコードを調べ、バグバウンティはリサーチャーに調べ続けてもらう仕組みです。ランタイム監視は、それとは違って挙動を見守ります。新たにローンチされたプロトコルとのやり取りのように、誰もレビューしようと思わなかったコードを使う攻撃を捉えることができ、不審な管理操作のような、コードレビューでは決して見えない運用上の出来事もカバーします。

リスクと限界

監視は、間に合うように見えないものは止められません。1回のトランザクションで完結する攻撃もあり、その場合に残されるのはブロックに取り込まれるまでの短い時間だけです。プライベートなトランザクション経路を使えば、それすら隠されることがあります。自動的な対応には慎重な設計が必要です。簡単に作動しすぎる一時停止は誠実なユーザーの妨げになり、作動が遅すぎれば役に立ちません。一時停止の権限そのものも、その背後にある鍵の保護が甘ければリスクになります。そして監視システムの質はそのモデルの質で決まるため、新しい種類の攻撃はどの既知のパターンにも当てはまらないことがあります。だからこそ監視は、監査、バウンティ、準備金証明の代わりではなく、それらと並んで機能するのです。

Tori Finance での使われ方

Tori Finance は、Hypernative によるランタイム監視を使って、スマートコントラクトのオンチェーン活動を見守っています。これは、Sherlock と Nethermind によるスマートコントラクト監査に、リアルタイムの層を加えるものです。Tori は独自の社内バグバウンティプログラムも運営しています。

よくある質問

DeFi のハッキングをリアルタイムで止めることはできますか?

場合によってはできます。攻撃に複数のステップが必要な場合や、トランザクションがブロックに取り込まれる前に見える場合には、監視がそれを検知し、自動対応が標的の関数を一時停止できます。隠れた1回のトランザクションで完結する攻撃を止めるのは、はるかに難しくなります。

監査と監視の違いは何ですか?

監査は、デプロイ前またはその直後にコードをレビューします。監視は、コードが稼働したあとに何が起きているかを見守り、監査では決して見えないやり取りや管理操作も対象にします。

監視システムは何を探しているのですか?

通常とは異なるパターンです。プロトコルを探る新しいコントラクト、価格を動かす大口のフラッシュローン、残高やシェア価格の急な変化、告知のないアップグレード、過去のエクスプロイトに関係するアドレスへの資金移動などです。

出典

Tori Finance チームが執筆しました。投資助言ではありません。利回りは変動し、元本を失うおそれがあります。