スマートコントラクトのセキュリティ分析ツールの商業化の機会は来たのでしょうか?
著者:Ray Xiao, Sally Gu, IOSG Ventures
前言:
9月末にParadigmがブロックチェーンセキュリティプロジェクトBlowfishのリード投資を完了したことが発表され、スマートコントラクトのセキュリティ分析分野に対する関心が再び高まりました。しかし、実際にはParadigmチームはそれ以前からスマートコントラクトのセキュリティテストに多くの実践を行っており、今年の3月にParadigmのCTOであるGeorgiosが彼らが開発したFoundryスマートコントラクトテストスイートを発表しました(Runtime Verificationチームも重要な貢献者です)。現在、ブロックチェーンセキュリティ分析はより詳細な分業の方向に進化しています。
最近数ヶ月の資金調達のトレンドと市場の反応から見ると、一次市場の資本は現在、セキュリティ情報のタイムリーさ、リスクの カバレッジ、技術的に軽量なセキュリティモニタリング、ファイアウォール分野に強い関心を持っています(これは従来の資本が監査分野に多く投資していたこととは大きく異なります)。
CertiKとSlowMistの関連報告によると、2022年の第一四半期と第二四半期だけで、セキュリティ攻撃の問題により暗号資産の損失は20億ドルに達しました。第二四半期には、単一のフラッシュローン攻撃によって総額3億ドルの資産損失が発生しました。そして今月は、史上最大のハッカー活動の月となり、2週間でDeFiプロトコルに対する攻撃が12回を超え、盗まれた金額は7億ドルを超えました。
出典: https://twitter.com/chainalysis/status/1580312145451180032?s=20\&t=QfqOMqMKjHd3EtX_0O-QjA
もし私たちがオンチェーンのスマートコントラクトを開発>>ブロックチェーンネットワークへのデプロイ>>運用という完全なライフサイクルと見なすなら、スマートコントラクトに対するセキュリティ分析は、契約のデプロイ前(ブロックチェーンネットワークが正式に稼働する前)とデプロイ後の分析に分けられます。これには大きく分けて、テスト、監査、モニタリングの3つのカテゴリが含まれ、それぞれのカテゴリにはさまざまな分析手法と対応するツールがあります(下図参照)。PS:スマートコントラクトの監査のカバレッジは、契約のデプロイ前からデプロイ後(契約のアップグレード監査)まで広がります。
1. スマートコントラクトデプロイ前のセキュリティ分析:テスト+監査
1.1 テスト(Testing)
契約テストは、開発者と監査者が最も多くの労力を費やす作業であり、これは従来の開発者とは異なります。ブロックチェーンの改ざん不可能な特性により、一度スマートコントラクトがEVM仮想マシンにデプロイされると変更が難しくなるため、セキュリティ分析やセキュリティホールの修正作業の大部分は「事前分析」に費やされます------スマートコントラクトデプロイ前のセキュリティテストです。
正式な監査を受ける前に、契約の開発者/監査者は契約のコードに対していくつかの基本的なテストを行う必要があります。初期テストのカバレッジが高いほど、簡単なバグが正式な監査段階に入るのを避けることができます(一般的に、スマートコントラクトの85%-90%のコードがテストカバレッジを持つことが合理的なレベルです;コアモジュールに対するカバレッジは95%以上が必要です)。
一般的な基本的なテストには、単体テスト(単一の関数に焦点を当てたテスト)と統合テスト(各部分のコードが組み合わさって正常に動作することを確認する)が含まれます。この段階でよく使用されるツールにはHardhat、Truffle test frameworkなどがあり、一般的なテスト内容には、状態チェック、イベントトリガー、トランザクションリセット、関数計算、完全機能テストが含まれます。
出典: https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d
1.2 監査 Auditing
"テストはプログラムに存在する欠陥を効果的に発見できますが、プログラムに欠陥が存在しないことを証明することはできません。"------ Edsger Wybe Dijkstra(計算機科学者、1972年チューリング賞受賞者)
Ethereum公式文書の定義によれば、監査はスマートコントラクトの各行のソースコードの詳細評価であり、攻撃者の思考方法を用いてスマートコントラクト内の可能な攻撃ベクトルを描き出し、潜在的な故障点、安全ホール、不適切な開発慣行を発見することです。監査段階には、静的分析、動的分析(ファジングテスト、シンボリック実行)、人工分析、形式的検証が含まれます。上図のDijkstraが言うように、テストだけではプログラムに故障がないと完全に信じることはできず、監査や形式的検証は、プログラムに欠陥がないという目標により近づくことを目指しています。
金銭的コスト
スマートコントラクトセキュリティ会社Hackenのデータによると、スマートコントラクト監査サービスの業界の平均コストは5000ドルから30000ドルの間です(中小規模プロジェクトの場合)。大規模プロジェクトの場合、コストは時には50万ドル以上に達することがあります。スマートコントラクト監査のコストは、コードの複雑さと合意された作業範囲に直接依存します。価格に影響を与える他の要因には、緊急度、スマートコントラクトのサイズ(何行のコードがあるか)、完了プロセスに必要なエンジニアリング時間、プロジェクト関連の文書の可用性などが含まれます。
時間的コスト
初期監査には平均して2日から14日かかりますが、これはプロジェクトの複雑さ、スマートコントラクトの規模、緊急性に依存します。大規模プロジェクトやプロトコルの場合、初期監査には最大1ヶ月の時間がかかることがあります。初期監査が完了すると、クライアントはどのような修正を導入すべきかに関する提案を受け取ります。
人的コスト
IOSGがブロックチェーンの形式的検証分野でリードしたプロジェクトRuntime Verificationのフィードバックによれば、監査の人的コストはプロトコルの複雑さに依存します。大部分の経験豊富な業界経験と学術経験を持つトップセキュリティ監査会社にとって、暗号顧客プロジェクトのビジネスロジックやトークンエコノミクスを理解することはほとんど難しくなく、一般的に2人の専門エンジニアが1〜2週間で初期ステップを完了できます。
しかし、その後の部分はクライアントの具体的なニーズに依存します。あるクライアントは、監査対象プロジェクトの基本的なビジネスロジックに対して人工監査(コードを確認し、必要なビジネスロジックに合致しているかを手動で確認)を行うだけで済む最も安価なサービスを希望します。別のクライアントは、ビジネスロジックとトークンエコノミクスをモデル化し、重要な結果が成立することを保証するために手動で数学的証明を行うことを望みます。MakerDAOやEthereum財団などの大手クライアントは、さらに進んでコードの形式的検証を希望します。
ここで形式的検証についてもう少し言及すると、形式的検証は数学的方法を用いてプログラムの正確性を検証することです------プログラムの実装がプログラマーの意図と一致していることを証明し、最終的にプロジェクトのシステムがバグフリーであることを証明します。言い換えれば、形式的検証はより包括的な「テスト」であり、理論的にはすべての可能な入力と状態を含むものであり、これはテストでは実現できません(下図の例のように、転送契約にオーバーフローのバグがある場合、テストではテスターが非常に大きな値を入力する必要がありますが、形式的検証者は「トークンの総額 = すべてのアドレスの残高の合計」という数学的論理を通じてオーバーフローのバグを見つけます)。
実際のスケールでの運用に関して言えば、形式的検証は従来のテストソリューションに比べてスケールでの運用が比較的遅いです。大部分の暗号プロジェクトにとって、スマートコントラクトの監査を完了した時点で十分であり、コスト投入と潜在的な利益の観点から、小規模プロジェクトにとっては必需品ではありません(あるいは、プログラムがバグフリーであることを証明するコストがまだ高いと言えます)。核心的な理由は、形式的検証には専門の形式的な人材が必要であり、プロジェクトコードに形式的仕様(formal specification)を作成することは非常に複雑な作業であり、契約コードの属性をカバーし、契約が異なる状況でどのように振る舞うかを定義する必要があるため、専門の人材が必要です。(興味のある読者は、以前に書いた「なぜ私たちがRuntime Verificationに投資したのか」をご覧ください:https://mp.weixin.qq.com/s/VWVgn4k9k0XqbM-O7-TVXg)
スマートコントラクトの監査は現在も労働集約的な業界であり、技術的な要件が高いです。現在、市場には十数種類の人気のある監査ツールが存在します(ほとんどが主流のセキュリティ監査会社や学術研究者によって開発されています)が、これらの監査ツールの開発目的は一般的な脆弱性を発見することです。たとえば、トランザクションオーダー依存、ランダム数、タイムスタンプ、コールスタックの深さ、再入可能性、危険なデリゲートコールなどです。したがって、これらのツールに依存して監査作業を完了することは難しく、ビジネスロジックに関連する多くの脆弱性を見逃す可能性があります。通常、スマートコントラクトの監査には自動化ツールと手動コードレビューを組み合わせた方法が必要であり、クライアントのスマートコントラクトのビジネスロジックやトークンモデルの違いに応じてケースバイケースでの人工レビューが必要です。
スマートコントラクトのセキュリティ分析と監査は、プログラムの正確性、すなわちプログラムの実装がプログラマーの意図と一致していることを検証することがよくあります。プログラムのバグは、実際にはプログラムの実装とプログラマーの意図との間に違いがあることから生じます。以前、私たちがRuntime Verificationに投資したことを共有した記事で言及した形式意味論は、開発者の開発意図(すなわち「意味」)と実装(すなわちプログラミング言語の「文法」)が正確に一致する言語フレームワークを提供することで、バグの発生を減少させることができます。
スマートコントラクトのセキュリティ監査分野では、現在市場に多くのツールが存在し、ほとんどがオープンソースですが、実際に成功裏に商業化されたものはほとんどありません。この根本的な理由については後で分析しますが、要するに現在はセキュリティサービスプロバイダー自身の自動化ツールと、各行のコードを手動で読むかモデル化することに依存しており、基本的に自動化監査ツールを直接販売してスケール化された商業収入を得ることはできません。
PS: 最近私たちがリードしたHexensのフィードバックによると、初期段階では静的分析のテストSlitherとMythXが彼らの一般的に使用するオープンソースツールであり、結果にはあまり満足していないとのことです。より高度なテストには、Echidna、Forge + built-in fuzzerなどのファジングツールを主に使用しています。
2. スマートコントラクトデプロイ後のセキュリティ分析------モニタリング(Monitoring)
現在、最も一般的な10種類のブロックチェーンネットワークセキュリティ攻撃の中で、スキャムが最も頻繁に発生し、ユーザーに直接資産損失をもたらしています。Peckshieldのデータによると、2021年には暗号に関するさまざまなスキャムによって、オンチェーン経済損失が120億ドルに達し、ハッカーによる直接攻撃による損失の6.7倍に達しました。
一般的なスキャム攻撃:
フィッシング(一般的なフィッシング手法は、ユーザーにパスワードをリセット/アカウントを復元するように要求する電子メール/ウェブサイトを送信することです。ユーザーがこれらの偽のウェブサイトにログインすると、秘密鍵が盗まれます)
例:アリスがある取引所にログインした後、MetaMaskウォレットにリンクし、ウォレットの故障を通知するポップアップが表示され、助記詞を使用して復元した後、ウォレット内の資産がすべて盗まれました。
なりすまし/偽装(特定のdapps/機関の従業員または代表者を名乗る者が、電子メール、電話、またはソーシャルメディアを通じてユーザーに接触します。彼らは偽の無料ミント/エアドロップサイトを送信してユーザーから資金を盗むか、なりすまし行為を通じて被害者を操り、資金や機密データを引き出します)
例:ウクライナ政府が暗号通貨の寄付を受け入れ、NFTのエアドロップを発表した際、なりすまし者がウクライナ政府を装って偽のトークンエアドロップを行い詐欺を働きました。
Discord管理者アカウントのハイジャック(攻撃者がコミュニティに信頼されている管理者のボットを制御し、偽の発表、詐欺リンクを投稿したり、被害者を欺いて暗号通貨やNFTを放棄させたりします)
例:ハッカーがBored Ape Yacht ClubなどのブルーチップNFTの公式Discordサーバーを制御し、メンバーに誤ったリンクを大量に送信し、ユーザーがクリックすると資産が不可逆的に盗まれます。
BGPハイジャック(実際には制御できないIPプレフィックスを持っていると偽り、それをインターネットBGPルーターのルーティングテーブルに追加することで、攻撃者はそのIPアドレスのトラフィックをハイジャックできます。この場合、ユーザーがログインしようとすると、攻撃者が設定したトラップアドレスにリダイレクトされます)
例:CelerがBGPハイジャック攻撃を受け、32名のユーザーと23.5万ドルの損失が発生しました(2022.08)。
コードのバックドアとトラップ(攻撃者が正常なプログラムに隠された特殊な機能を持つ悪意のあるコードの一部を埋め込むことで、ファイルを破壊・削除したり、パスワードを送信したり、キーボードを記録したり、DDoS攻撃を行ったりするバックドアプログラムを使用してユーザーの個人情報を盗みます)
例:ボブがあるウェブサイトでNFTをミントした後、2日後にそれが消えてしまいました。攻撃者がNFTコードに特定の機能を埋め込んでおり、他の人にNFT取引を許可したり、他のNFTを破壊したり、注文を出せなくすることができました。
フロントエンドの悪意のあるコード(攻撃者が取引所などのウェブサイトのフロントエンドに悪意のあるコードを埋め込み、ユーザーのブラウザのタブ管理システムを通じてこの悪意のあるコードが誤った承認を生成し、ユーザーの資産が攻撃者のアドレスに移転されることを許可します)
例:KyberSwapがハッカーによって埋め込まれたフロントエンドの悪意のあるコードにより256万ドルの損失を被りました(2022.09)。
一般的なツール:
スマートコントラクトのセキュリティ監査と比較して、モニタリングとファイアウォールサービスが関与するビジネス内容はより広範で詳細です。
契約デプロイ前および契約デプロイ後のスマートコントラクトコードのセキュリティ監査に焦点を当て、さまざまなテスト(静的分析、動的分析)を通じて一連の値を入力し、契約の出力値や状態が正常に動作しているかを確認します。たとえば、一般的なオンチェーントランザクションロジックに対して(下図参照)、一般的なテスト担当者は次のようなことを行います:ゼロイーサを転送、すべてのイーサを転送、すべてのイーサをわずかに超えて転送、可能な限りの最大のイーサを転送、アカウントの値を自分自身に転送など、契約がプログラマーの期待通りに機能するかどうかを確認します。
事中のセキュリティ分析のモニタリング/ファイアウォールサービスは、処理する問題がより複雑です。現在のところ、この種のプロジェクトが提供するセキュリティサービスは、可能な限り多くの問題のあるオンチェーン資産契約、最新の詐欺行為のアドレス契約、フィッシングウェブサイトなどをカバーすることに重点を置いており、契約監査のセキュリティサービスよりも軽量です。 コードの正確性を確認すること以外のさまざまなセキュリティリスク、たとえばさまざまな詐欺やフィッシング関連の攻撃が含まれます。これらの脆弱性を監視するには、契約解析能力に加えて、疑わしいアドレス、疑わしい契約ロジック、疑わしい資産リストなどのデータのリスクデータベースを継続的に更新する必要があります。
私たちと最近の業界関係者との交流を通じて、異なるモニタリングサービスのポジショニングがそれぞれ異なることがわかりました。たとえば、GoPlusはプロジェクト側やフロントエンドのファイアウォールにデータAPIサービスを提供することに重点を置いています。HarpieやBlowfishは、ユーザーがトランザクションを実行したり、承認を完了する前にそのトランザクションをシミュレートして問題を発見し、ユーザーに安全リスクのあるトランザクションを防ぐことに重点を置いています。Tenderlyは開発者のニーズに重点を置き、スマートコントラクト開発者に運用モニタリングなどのサービスを提供しています。もちろん、この分野はまだ比較的新しく、Openseaのような大規模な取引プラットフォームがいくつかのプロジェクトと実質的な商業協力を行っていますが、私たちは将来的な商業化の道筋はまだ明確ではなく、同業競争も少なくないと考えています(コード監査に比べて技術的なハードルが低いため)。
3. スマートコントラクトセキュリティ分析ツールの商業的発展機会と課題
1)現在、業界内の多くの人々は、モニタリングとファイアウォールの間の商業的境界がまだあいまいであると考えています(現在、どちらも2Bサービスに属し、顧客の大部分はさまざまな暗号プロジェクトです)。理論的には、ブロックチェーンセキュリティ分野で長年深耕してきた専門のセキュリティ監査会社が直接モニタリングサービスを提供し、さらにはB2C、2C化されたエンドユーザー向けの収益製品を開発することが商業的発展の論理に合致します。しかし、モニタリング分野はまだ始まったばかりで、料金モデルや収益モデルはまだ明確ではありません(現在は2Bサービス料またはプロジェクトの取引手数料の分配を見ています)。市場が回復すれば、セキュリティ監査市場は供給>需要の状態にあり、注文が完了しない可能性があるため、この新興市場に目を向ける余裕がないかもしれません。この時間のウィンドウは、モニタリング/ファイアウォールを専門に行う新たに登場した企業にとって良い機会となるでしょう。
2)スマートコントラクト監査の自動化ツールは現在市場に多く存在し、一般的には十数種類がほとんどオープンソースです。この方向でツールを販売して収益を上げるビジネスモデルはまだ確立されていません。その核心的な理由は:
- ハッカーとセキュリティ防御者の間の攻防関係は武器競争であり、攻撃は常に移動する標的です。攻撃者は新しい攻撃形式を開発し、セキュリティツールを回避しようとします。したがって、セキュリティツールは常に更新され、攻撃のハードルを引き上げる必要があります。
- 大部分のツールは使用のハードルが高く、専門のセキュリティ分析ツールを使用する人は少ないため、市場規模が制限されています(Runtime Verificationは一般の開発者向けにFireflyを提供しており、ConsenSys DilligenceもMythXを提供しています)。
- セキュリティ分析ツールは主流の脆弱性をカバーすることができますが、プロトコルのビジネスロジックの経済モデルの違いにより、顧客は主観的に監査チームにカスタマイズされたサービスを提供してほしいと望んでいます。
チームは、市場で認可された監査会社がより深いカスタマイズされた監査サービスを提供し、スタンプを押すことを望んでいます。したがって、モニタリングサービスを提供することは、専門のセキュリティチームがスケール化された製品に切り込むための良い機会点となるでしょう。
3)DeFiプロジェクト、DAO、または個人向けの保険ビジネスは次のブルーオーシャンになる可能性があります。現在、市場はハッカーによる秘密鍵の直接盗取などの攻撃方法に対して良好な防止策や解決策を持っていないため、リスク回避と資産保護を目的とした保険ビジネスは将来的により多くの支持を受ける可能性があります。
もちろん、暗号資産自体の複雑性やコンプライアンスに関する多くの不確実性を考慮すると、アンダーライターはしばしばより大きなリスクを負うことになります。そのため、この問題を解決する前に、保険産業の発展は予見可能な限り、一定のボトルネックに直面するでしょう。全体的な暗号資産の規模が増加し、より多くの伝統的な機関ユーザーが参入することで、保険ビジネスが次のサイクルが到来する前により多くの制度的な改善を実現できることを期待しています。
参考文献:
https://www.paradigm.xyz/2022/03/foundry-02
https://www.coindesk.com/business/2022/09/30/paradigm-leads-118m-funding-round-into-web3-firewall-blowfish/
https://ethereum.org/en/developers/docs/smart-contracts/testing/
https://docs.openzeppelin.com/learn/writing-automated-tests
https://iamdefinitelyahuman.medium.com/an-in-depth-guide-to-testing-ethereum-smart-contracts-2e41b2770297
https://betterprogramming.pub/how-to-test-ethereum-smart-contracts-35abc8fa199d