ブログ>1秒未満でDeFiの脆弱性を検出する方法

1秒未満でDeFiの脆弱性を検出する方法

DecurityのCTOが、Defimonをポーリング方式からプッシュ方式へと再構築した経緯について語る。Quicknode への移行Streams により、ブロックの遅延を2秒から0.5秒未満に短縮し、対応チェーンを8つに拡大するとともに、エクスプロイトの検出を1人のエンジニアでも運用可能なものへと変えた。

Quicknode

Quicknode

2026年4月21日 — 読了時間7分

1秒未満でDeFiの脆弱性を検出する方法

By DecurityのCTO兼共同創業者、アルセニー・レウトフ Quicknode ブログに掲載


私は10年以上にわたり、攻撃検知システムの構築に携わってきました。最初はWeb2の分野で、トラフィック分析やWAF(Webアプリケーションファイアウォール)の開発に従事し、その後Web3の分野に移りました。Web3では、Web2と同様の攻撃問題が、より速いペースで、より多額の資金が絡んで発生しています。2022年にDecurityを共同創業しました。当社はDeFiプロトコルの監査を行うほか、本番環境での監視ツールを開発しています。 Defimonはその監視機能を担うもので、by プロトコルチーム をはじめ、セキュリティ企業、そしてDeFiが実際に稼働するさまざまなチェーンにわたるリスクキュレーターから信頼されているリアルタイムのエクスプロイト検知システムです。ハッキング事件がニュースになる前にアラートを発信します。そうでなければ、その役割を果たしているとは言えません。これほど多くのチェーンにまたがり、そのスピードで動作するシステムを構築することは、セキュリティ上の課題というよりも、むしろインフラ上の課題としてより困難であることが判明しました。これが、その構築を通じて私たちが学んだことです。


検出速度がセキュリティの基礎要素である理由

DeFiでは、プロトコルがたった1回のアトミックトランザクションで資金をすべて奪われる可能性があります。しかし、多くの場合、攻撃の最初の兆候が現れてからプロトコルが完全に資金を奪われるまでの間に、ある程度の時間的余裕があります。BalancerのインシデントやYearnのハッキング事件がその例です。いずれの場合も、問題は「誰かが監視していたかどうか」ではなく、「その最初の兆候を検知し、時間内に反応できたかどうか」でした。

自動化されたインシデント対応を機能させるためには、アラートが適切なタイミングで届き、契約の一時停止、マルチシグ保有者への通知、資金の移動といった措置を講じられる必要があります。ブロック処理に2秒の遅延が生じることは、大したことではないように思えるかもしれません。しかし、プロトコルレベルでは、それが「警告」と「事後検証」を分ける決定的な違いとなるのです。

検出速度は単なる機能ではありません。それ自体が製品そのものです。


世論調査の問題点

Defimonの開発を始めた当初、オンチェーン のデータ取得は標準的な方法、つまりRPCによるポーリングを行い、ブロックチェーン に対して新しいブロック、トランザクション、ログ、トレースを繰り返し要求していました。

うまくいっていたが、ある時突然うまくいかなくなった。

監視すべきウォレットアドレスやスマートコントラクトとのやり取りが数百万件に上る中、ポーリング方式では、技術的な回避策を講じることができない2つの問題が生じました。

レイテンシ。ポーリングサイクルが1回増えるごとに、ブロックのレイテンシが約2秒増加しました。検知のタイミングによって、プロトコル「equipe 」への警告が間に合うかどうかが決まる製品において、2秒という遅延はパフォーマンスのチューニングの問題ではなく、構造的な問題です。

スケール。監視対象アドレスのウォッチリストは増え続けていました。 ブロックチェーン のデータを、メモリ内に動的なアドレスリストを保持しながら、AWS上で稼働するApache Flink SQLパイプラインに取り込みました。監視範囲が拡大するにつれ、メモリ不足エラーが日常茶飯事となりました。システムは、監視対象の増加に対応できるだけのスケール性を持ち合わせていませんでした。また、SQLパイプラインに変更を加えるたびにApache Flinkを完全に再起動する必要があり、そのたびに最大20分のダウンタイムが発生していました。

最悪の時期には、3つのチェーンを運用するために毎月4,000ドルをAWSに費やしており、3~4人のエンジニアがパイプラインの稼働を維持していました。equipe の専門分野は検知ロジックにあるにもかかわらず、私たちはそのリソースをインフラに費やしていたのです。


なぜ「Push Data」に移行したのか

最大の変更点は、ポーリングをQuicknode (Streams )を用いたプッシュ型モデルに置き換えたことです。

ブロックチェーン にデータをリクエストする代わりに、ブロックが到着した瞬間にデータが取得されるようになりましたオンチェーン 。ブロックの遅延は、約2秒から0.5秒未満に短縮されました。Telegramへの通知は、検出から1秒以内に送信されるようになりました。これは単なる改善にとどまりません。まったく別の次元の製品と言えるでしょう。

しかし、遅延は問題の一部に過ぎなかった。より大きな成果は、アップストリームフィルタリングだった。

以前のApache FlinkパイプラインはSQL上で動作していました。検出ロジックは、多数のサブクエリから構成される1つの巨大なクエリ内に実装されており、当初は宣言的な記述が可能でしたが、規模が大きくなるにつれてメンテナンスが困難になっていました。Streams への移行に伴い、検出ロジックもSQLからJavaScriptへ移行し、フィルタはブロックチェーン ノード内で直接実行されるようになりました。この変更により、以下の3つのメリットが得られました:

柔軟性。検知ロジックの変更は、ダウンタイムなしで即座に反映されます。過去のDeFiインシデントを基に構築された包括的なテストスイートにより、変更後もロジックが正しく機能し続けることを検証しています。Quicknode のJSフィルターテストツールを使用することで、デプロイ前にこのテストスイート全体を実行することができます。

経済性。 ブロックチェーン のデータをすべて処理することはなくなりました。Streams がノードレベルでフィルタリングを行い、必要なデータのみを配信します。これにより、帯域幅の使用量が大幅に削減されました。

速度。新しいブロックが出現するとすぐにデータが送信されます。ポーリング間隔はありません。往復遅延もありません。


検知アーキテクチャ

現在の当社のパイプラインは、以下の通りです。

ブロックが、当社が監視している8つのチェーンのいずれかにオンチェーン として到着します。Streams はJavaScriptを使用してノードレベルでフィルタリングを行い、関連するデータのみを下流へ転送します。Quicknode Streams に組み込まれたキーバリューストアには、当社のウォッチリストである、JSフィルタが直接参照できる数百万件の追跡アドレスが格納されています。エクスプロイト検出ロジックは、上流サービス内のフィルタリング済みデータに対して実行されます。パターンが一致した場合、アラートが発火します。

一連の処理は1秒未満で完了します。

具体的な例を挙げると、by では、Streams を使用してトランザクショントレースを処理することで、初期化されていないプロキシスマートコントラクトへのバックドア侵入の試みを検出できます。私たちが CPIMP(Clandestine Proxy In the Middle of Proxy)と呼ぶこの攻撃パターンは、プロキシがデプロイされたものの、同じトランザクション内でアトミックに初期化されなかった場合に発生します。この隙を突いて、悪意のある攻撃者がプロキシを乗っ取り、悪意のある実装コントラクトを設定してしまうのです。これを検知するには、トレースデータを早期かつ迅速に把握する必要があります。Streams によって、それが可能になります。


オペレーション部門なしで8つのチェーンへの拡張equipe

Defimonは当初、3つのチェーンで運用を開始しました。現在は、Ethereum 、BNB Smart Chain 、Arbitrum 、Base 、Polygon 、Avalanche 、Optimism 、およびHyperEVMの計8つのチェーンを監視しています。

従来の体制では、チェーンを追加するには、新たなインフラ、新たなサーバー、新たなパイプライン、そして人員の増員が必要でした。こうした追加作業のそれぞれが、検出作業とエンジニアの作業時間をめぐって直接競合することになっていました。

Streams では、チェーンの追加は設定変更だけで済みます。HyperEVMの統合には1日もかかりませんでした。いくつかの定数と関連するアドレスを調整しただけで、作業の大部分はそれで完了しました。

現在、パイプライン全体の運用は1人のエンジニアだけで行われています。他のメンバーは全員、検知ロジックの開発に注力しています。以前の体制では、インフラを稼働させ続けるだけでも3~4人の人員が必要でした。


アラート発生後の流れ

Defimonの加入者は、単にエクスプロイトを監視しているだけではありません。彼らは、当社のアラートを基盤として、自動化されたインシデント対応体制を構築しています。アラートが早ければ早いほど、対応に充てられる時間は増えます。

あるヘッジファンドの顧客は、9桁規模のDeFiポジションを運用しており、WebSocketsを介して当社のシステムと連携させることで、設定済みのプロトコルを標的とした攻撃の初期兆候を当社が検知した瞬間に、自動的にポジションを決済できるようにしています。個人投資家やトレーダーは、発生中のインシデントが特定された際、当社のアラートを活用してポジションを調整しています。

しかし、最も重要な活用例は、ホワイトハットによる積極的な介入です。私たちはホワイトハットボットを運用しており、これまでに合計200万ドル以上を救出しています。最近では、トークンの割り当て設定を誤って設定してしまったユーザー に対し、51万2000ドルを回収しました。悪意のある攻撃者が気付く前に、私たちは迅速に対応することができました。この介入を可能にしたのは、基盤となるパイプラインの処理速度です。


閉会

すべてのDeFiプロトコルは、自社のスマートコントラクトで何が起きているかをリアルタイムで把握しておくべきです。AIによってエクスプロイトの件数と巧妙さが増大している現代において、攻撃の初期兆候を早期に察知することは、もはや「あれば良い」というレベルの話ではありません。それは最低限必要な要件なのです。

デフィモンの役割は、チーム が対応できるだけの十分な時間を確保してアラートを発信することです。データパイプラインは、それを可能にするものであり、あるいはその妨げとなるものです。

equipe が依然としてポーリング方式を採用している場合、問題は「レイテンシが問題になるかどうか」ではなく、「いつ問題になるか」です。ソースから再ビルドするのは面倒な作業です。しかし、根本的に遅いアーキテクチャにパッチを当てるだけでは、1秒未満の検出を実現することはできません。私たちにとって、プッシュ型モデルへの移行は単なる技術的な選択ではありませんでした。それは、製品を実際に機能させるための唯一の方法だったのです。


アルセニー・レウトフ氏は、by 、1inch、Gearbox、Arbitrum 財団などから信頼されているWeb3セキュリティ企業DecurityのCTO兼共同創業者です。DefimonはDecurityが提供するリアルタイムのエクスプロイト検知プラットフォームであり、8つのEVMチェーンを監視し、3,500人以上の加入者にサービスを提供しています。

Quicknodeについて

2017年に設立されたQuicknode は、開発者 および企業向けに、機関投資家レベルのブロックチェーン インフラストラクチャを提供しています。99.99%の稼働率と、77以上のチェーンに対応したサポート を備え、チーム は妥協のないオンチェーン アプリケーションの構築とスケーリングを実現します。

今日から作り始めましょう

最新情報を入手する

最新のエンジニアリングに関する知見、製品の最新情報、Web3のニュースを、メールボックスに直接お届けします。