paint-brush
スマートコントラクト監査の取得: 知っておくべきことすべて@rareskills
144 測定値

スマートコントラクト監査の取得: 知っておくべきことすべて

RareSkills12m2023/06/26
Read on Terminal Reader

長すぎる; 読むには

「スマート コントラクト監査」という用語は業界用語が進化したものであり、厳密な定義はなく、人によって意味が異なる場合があります。
featured image - スマートコントラクト監査の取得: 知っておくべきことすべて
RareSkills HackerNoon profile picture
0-item

スマートコントラクト監査は、ブロックチェーンセキュリティの専門家によるレビューで、誤動作やセキュリティの脆弱性によってユーザーが資金を失わないようにするものです。さらに、監査では、コントラクトが展開される前に、予期せぬ望ましくないスマート コントラクトの動作を予測しようとします。


このフィールドをナビゲートするのは難しいです。監査法人は数十社あり、そのうちの数社から見積もりをもらうのは時間がかかり、適正価格かどうかを知るのは困難です。


この記事は、スマート コントラクトの監査を受けるタスクをナビゲートするための出発点として役立ちます。


この記事における監査法人への言及は、推奨するものとして解釈されるべきではありません。

スマートコントラクト監査の公式基準はありません

そして、業界の動きの速さを考えれば、当分の間はおそらくそのようなものは存在しないだろう。

「スマート コントラクト監査」という用語は業界用語が進化したものであり、厳密な定義はなく、人によって意味が異なる場合があります。 ISO 標準が標準である業界の出身者にとって、スマート コントラクト監査は西部劇のように思えるでしょう (率直に言って、それが正確な評価でしょう)。


スマート コントラクトの脆弱性の中にはよく知られているものもありますが、その他の脆弱性は複雑なシステムの新たな特性であり、体系的に検出するのが困難です。


標準は成熟した市場の特徴であり、 Web3全体としては成熟した市場ではありません。


スマートコントラクトの監査を「監査」と呼ぶのは、少し混同された用語です。会計の分野における「監査」には非常に厳密な定義があります。これはブロックチェーンエンジニアリングには当てはまりません。ブロックチェーンで「監査」と呼ばれるものは、専門家チームによるセキュリティレビューです。


これをさらに混乱させるのは、スマート コントラクトの監査人またはセキュリティ専門家となるための正式な定義や認定がないことです。はい、認定資格を販売している企業はありますが、これらの認定資格は業界では何の重要性も持ちません。


ご想像のとおり、専門知識を測定する確立された方法がないため、混乱に乗じて自分が持っていない専門知識を売り込む進取的な個人が何人もいます。


買い手責任負担。


そうは言っても、「このスマート コントラクトは監査されている」ということは、「セキュリティ専門家のグループがこのコードベースをレビューして問題を見つけるために報酬を得ている」ことを意味するというのが業界で広く合意されています。専門知識には正式な定義がないため、業界の評判が代用として使用されることがよくあります。

監査人の主なタイプは 3 種類

スマートコントラクト監査会社

これらはセキュリティ調査を専門とする会社です。スマート コントラクトのみを監査するものもあれば、スマート コントラクトと従来のコンピューター アプリケーションを監査するものもあります。これはセキュリティ研究者で構成される機関と考えることができます。最近まで、これがスマート コントラクトの監査を受ける標準的な方法でした。 Google でスマート コントラクト監査会社を検索すると、通常はこのような結果が得られます。

独立したセキュリティ研究者

セキュリティ研究者の中には、企業に入社するのではなく、自分で働く人もいます。代理店に比べてマーケティング予算がはるかに小さいため、見つけるのは少し困難ですが、諸経費が少ないため、より良い価格を提供できることがよくあります。


欠点の 1 つは、企業は複数の監査人にコードをレビューしてもらうことができるのに対し、独立監査人には 1 人のレビュー担当者しかいないことです。ただし、コードベースが小さいか、それほど複雑でない場合は、この方がコスト効率が高い可能性があります。

競争力のある監査

最近、いくつかのプラットフォーム ( Sherlock DeFiCode4rena ) が登場し、監査を要求する企業が賞金プールとともにソース コードをプラットフォーム上で公開し、独立した参加者がバグや脆弱性を見つけようとします。


出場者が見つけたバグが多ければ多いほど、より多くの賞金を獲得できますが、別の出場者が同じバグを見つけた場合、賞金は 2 人の間で薄められます。よく理解されているバグの場合、支払いは大幅に薄められる可能性があります。


この形式の監査人の収益はかなり水準を下回ります。出場者は、かなりの努力をしたにもかかわらず、コンテストごとに 1,000 ドルをはるかに超える収益を期待できることはほとんどありません。参加者にとっての主なインセンティブは、従来の監査法人に就職したり、単独監査人(独立研究者)としてビジネスを誘致できるように自分の能力を証明することです。また、コンテストは誰でも参加できるため、参加者の質についての保証はありません。


ただし、これらのプラットフォームは、新しい監査人にとって非常に勉強になります。この形式はバグの発見に集中することを奨励し、その後、どのバグが見落とされたかについてフィードバックを提供するため、比較的緊密なフィードバック ループを提供し、学習のスピードアップに役立ちます。実際、私たちはソリッドティ トレーニングの一部に、教育目的でこれらのコンテストに参加するよう指導しています。


優秀な監査人は、自分自身または会社のために働いてはるかに多くのお金を稼いでいるため、コンテストに多くの時間を費やしません。したがって、監査コンテストで好成績を収めた人は、単に、参加したコンテストで大きな競争に直面しなかったことを意味している可能性があることに留意してください。また、監査人の公的収入のかなりの部分を 1 つのコンテストが占める場合には、運の要素もあります。 。


ただし、この形式は他の監査形式に比べてコードにはるかに多くの注目を集めており、監査コンテストでは他の監査人が見逃したバグが発見されています。また、企業が自社のプロトコルを開発者コミュニティや監査コミュニティにさりげなく宣伝するチャネルとしても機能するため、エコシステムへの貴重な貢献となります。

ボーナス: 非公式コードのロースト

一部の開発者 Discord グループは、あなたのコードを無料でレビューします (役に立ちたいという願望から、他の人の寛大さを乱用しないでください)。小規模で単純なコードベースの場合は、数人の専門家に時間を提供してもらうことが最も費用対効果の高い方法になる場合があります。このような見直しを「監査」と呼ぶのは極めて不誠実ですが、それが唯一の選択肢であるならば、全く見直しをしないよりは確かに良いでしょう。

スマートコントラクトの監査で注意すべきこと

同社の過去の監査を見る

監査人の中には、スマート コントラクトの脆弱性リストの厳格なチェックリストを使用し、問題が存在するかどうかをチェックする人もいます。これは最初のパスとしては良いですが、多くのバグはアプリケーション固有です (この記事で述べたように)。監査人がアプリケーションの微妙な違いやビジネス要件を考慮していることを確認したいと考えています。過去の監査を見ることで、彼らが機械的にリストに違反していないか、アプリケーションの詳細を深く掘り下げていないかを確認できます。監査人が過去の監査を提供しない場合は、一般に危険信号です。

監査人の専門分野

プロジェクトで珍しいDeFiトークンノミクスやゼロ知識証明を使用している場合は、選択した監査人にその経験があることを確認する必要があります。同様に、 Solanaのような evm 互換性のないチェーン上に dapp を構築している場合は、そのブロックチェーンの経験がある監査人が必要になります。

最小コスト

一部の監査法人は、営業電話やアカウント管理に支払うのに十分な収益が得られないため、ERC20 トークンや基本的な NFT などの小さなコードベースを気にしません。

ゴム印審査員

監査には正式な定義や受け入れられている定義がないため、揶揄的に「ゴム印監査」として知られるものを作成する会社も現れています。こうした企業が監査レポートを提供するのは、買い手が顧客に「ほら、私たちは監査を受けているよ!」と言えるように監査を望んでいるからにほかなりません。


すべてのプロトコルが意図的にゴム印監査を受けるわけではありません。彼らは自分たちがゴム印監査人であることを知らずに監査人を選んだだけかもしれません。

スマートコントラクトの監査はどの程度信頼できますか?

スマート コントラクトが監査されたとしても、その後ハッキングされる可能性があります。これは珍しいことではありません。


Rekt.news には、スマート コントラクトのハッキングを損失金額別に追跡するリーダーボードがあります。ハッキングされたプロトコルのほとんどがまったく監査されていないことは簡単にわかります。


しかし、プロトコルの中には監査が行われているものもあり、監査人が依然として監査を怠っていたものもありました。場合によっては、監査人が無能だったり、努力が足りなかったりしたことが原因である可能性がありますが、一般に、コードベースにバグがないことを保証することはできません。


幸いなことに、一部の脆弱性は監査員によって見逃されるだけではありません。ハッカーにも見逃されます。一部のスマート コントラクトは、パッチが適用されるまでに数か月にわたって脆弱性が存在し続けていました。適切な監査により、ハッカーにとっての「簡単にできる成果」が確実に排除されます。

複数の監査を受ける必要がありますか?

これは、多額の資金を保有することを目的とした、資金豊富な DeFi プロトコルの標準的な慣行です。 3 つ以上の監査会社にコードをレビューしてもらうのはごく普通のことです。


ある監査人が見逃しても別の監査人が気づくこともあり、その逆も同様です。同様に、1 人の監査人が脆弱性に気づき、開発者が別の脆弱性を導入しながらその脆弱性にパッチを適用する可能性があります。

監査を受ける一般的なワークフロー

1. 見積もりを取得するさまざまな会社に連絡して見積もりを依頼し、その会社の在庫状況と発売日を基に調整します。


2. 監査の開始監査を開始するときは、コードがフリーズしているはずです。監査人が本番環境で起動するコードベースとは異なるコードベースをレビューしている場合、おそらくお金を無駄にしていることになります。


3. 監査レポートほとんどの監査レポート (固定チェックリストに従っていないもの) は、重大、高、中、低、情報、およびガス最適化に分類された結果のリストを返します。これらについては次のセクションで説明します。プロジェクトの範囲に応じて、監査は最短で数日から最長で数か月かかる場合があります。


4. 修正のレビュー契約に応じて、監査人は開発者が行った変更をレビューし、修正が実際にバグに対処していることを確認します。許容されるとみなされる改訂レビューの数は監査人によって異なります。


5. レポートの公開監査人は通常、顧客が許可した場合にレポートを公開します(顧客は通常、監査を受けたことを示すために監査を公開することを望んでいます)。

監査結果の重大度

ほとんどの監査レポートでは、セキュリティの検出結果が次のように重大度に分類されます。

  • 致命的

  • 高い

  • 中くらい

  • 低い

  • 情報提供

  • ガスの最適化


すべての企業が同じラベルを使用しているわけではありません。前述したように、普遍的な標準が存在しないため、何が「高」または「中」の脆弱性とみなされるのかについての統一的な定義はありません。一部の監査人は、同じバグを割り当てる適切な評価について意見が異なりますが、監査人が重大度を割り当てるために使用するいくつかの要素を次に示します。


  • 最悪の場合の結果。すべての資金が盗まれると悲惨です。ハッカーが資金を盗むことはできないが、ユーザーが自分の足を撃つことから十分に保護されていないバグは、重大度が低いとラベル付けされます。

  • 影響を受けるユーザーの数。プロトコル全体の損失は、個々のユーザーの損失よりも深刻です。

  • 攻撃を実行する動機。攻撃者が攻撃を実行するために、攻撃を実行することで得られる以上の資本を費やす必要がある場合、重大度は低下します。攻撃者は経済的以外の動機で攻撃を実行する可能性があるため (見せびらかし、個人的な復讐など)、これは依然として脆弱性です。

  • 攻撃の不明瞭さ。脆弱性がアクセス制御の欠落などである場合、未熟な攻撃者が攻撃を実行する可能性があります。脆弱性が高度な数学を使用した洗練されたトケノミクス メカニズムの深い理解に依存している場合、攻撃者が問題を発見する可能性は低くなります。


監査人の中には、最後の 2 つの要素、つまり攻撃の可能性を 1 つに組み合わせる人もいます。このモデルでは、次の表を使用して重大度を割り当てます。 スマート コントラクトの脆弱性重大度テーブル

クリティカル vs 高 vs 中

一部の監査人は重大な脆弱性と高度な脆弱性を区別し、他の監査人は重大な脆弱性を高度な脆弱性とグループ化します。いずれの場合も、これらは非常に深刻なバグであると考えられます。区別する場合、「重大」はプロトコル全体が深刻な影響を受ける可能性があることを意味し、「高」は個々のユーザーが深刻な影響を受ける可能性があることを意味します。


中程度の重大度の問題は、通常、損害を与える可能性はあるものの、発生する可能性は低い問題を意味します。

情報提供

監査人の中には、Solidity スタイル ガイドに準拠していない、変数名や関数名のスペルが間違っている、または誤解を招くなどの問題を指摘する人もいます。これらはセキュリティ上の脆弱性ではありませんが、将来的に混乱を引き起こす可能性があります。すべての監査人が情報の問題を指摘するわけではありません。

ガスの最適化

監査人の中には、特定のコードのガス効率を改善する方法を提案する人もいます。これらはセキュリティとは関係ありませんが、ユーザー エクスペリエンスは確実に向上します。

スマートコントラクトの監査にはどれくらいの費用がかかりますか?

公開情報に基づく推計

Fiverr を調べると、低価格でスマート コントラクトを監査するサービスがいくつか見つかりますが、これほど重要なことを本当にその種のサービスに依存したいと思いますか?通常、契約には機密保持契約があるため、料金を決定するのは難しい場合がありますが、ここでは公開情報をいくつか紹介します。


1. 競争力のある監査の報酬プール 競争力のある監査プラットフォームは報酬プールを宣伝しており、もちろん、このお金は監査に支払った顧客から得られます。ここでは、賞金プールが最低 5,000 ドルから、非常に大規模なプロジェクトの場合は最大で数十万ドルに達することもあります。もちろん、コンテストを運営する側はプラットフォームの運営費を期待しているので、実際のコストはもっと高くなります。


2. 請負業者の給与監査法人スピアビットは、監査人(従業員ではなく請負業者)への給与を公表しているため、これに基づいて監査にかかる費用(業務と利益率は含まず)を推測できます。監査人1人当たりの給与は年功に応じて週3,000~20,000です。これはフルタイムの仕事ではなく、契約ごとに行われることに注意してください。


3. 独立監査人私たちが入手できるもう 1 つのデータポイントは、収益について公表している独立監査人です。ある者は、月に約 4 件の監査を受けて好調な月には月収 4 万ドルを稼いでいると主張し、別の者は 5 件の監査で月に 5 万ドルを稼いでいると主張しました。これは独立監査人が期待できる最高水準ですが、可能性の範囲を超えているわけではありません。シリコンバレーのトップ企業のスタッフエンジニアはそれ以上の収入を得ています

監査人が見積を作成する方法

標準的な価格設定モデルはありませんが、監査人が見積価格を決定するために使用するいくつかの慣行を以下に示します。

コード行あたりの金額

一般的な価格モデルは、コード行あたり $ です。これには、1 回線あたり数ドルから数十ドルの費用がかかる可能性があります。

サイズと複雑さ

他の監査人は、規模と複雑さを組み合わせて使用します。 1,000 行の NFT は、1,000 行の数学ライブラリよりもかなり単純です。監査法人はこれらの要素を組み合わせて主観的に判断します。

既存のプロトコルとの類似性

一部の監査人は、監査対象のプロジェクトがフォークされている場合、または確立されたプロジェクトに非常によく似ている場合、過去の監査を利用してプロジェクトが過去の間違いから学習したかどうかを判断できるため、割引を適用します。また、レビューされていない行の総数はプロジェクトのわずかな割合です。監査人が異なれば、確立されたプロジェクトと「類似」するものについての基準も異なります。

脆弱性ごとに支払う

このモデルは独立監査人の間で一般的です。セキュリティ研究者には少額の頭金が支払われますが、バグが見つかるたびに、重大度の高い問題についてはより高額な報酬が支払われます。これには監査人がより熱心に調査するようになるという利点がありますが、バグの重大度を誇張するようになる可能性もあります。

なぜ監査にはこれほど費用がかかるのでしょうか?

弁護士などの他の高度に専門化された知識労働者(最も優秀な人材は 月収 100 万ドル以上を稼ぐことができます)と比較すると、スマート コントラクトの監査は法外に高価ではありませんが、中小企業にとっては重大な負担となる可能性があります。


スマートコントラクト監査人になるのは簡単ではありません。一般に、必要なスキル レベルはシリコン バレーで競争の激しい仕事に就こうとするのと同等であり、初任給は軽く 6 桁の領域に達することになります。監査法人が利益を上げ続けるには、これらの給与に加えてかなりのマージンを請求する必要があるため、監査に数十万ドルとは言わないまでも、数万ドルの費用がかかることは驚くべきことではありません。

RareSkills のサポートが必要ですか?

RareSkills は監査法人ではありませんが、講師の多くはプロの監査人であり、セキュリティ調査に取り組んでいます。私たちは、どの企業が評判が良く、どの企業がそうでないかについての内部情報を持っています。お気軽にお問い合わせいただき、お客様のニーズについてお知らせください。状況に応じて適切なリソースをご紹介いたします。


安全なスマート コントラクトを開発する方法についてエンジニアをトレーニングしたい場合は、プロのエンジニア向けの業界をリードするスマート コントラクト ブートキャンプに興味があるかもしれません。


ここでも公開されています。