
Scoutは、Soroban Stellar Smart Contract Developersと監査人が、ベストプラクティスからの一般的なセキュリティの問題と逸脱を検出するのを支援することを目的とした拡張可能なオープンソースツールです。
このツールは、開発者が安全で堅牢なスマートコントラクトを書くのに役立ちます。
このプロジェクトへの関心は、他のブロックチェーンでの手動監査と脆弱性検出の経験から来ています(インクのスカウトを参照!)。
スカウト監査をインストールする:
貨物がコンピューターに設置されていることを確認してください。次に、次のコマンドでスカウトをインストールします。
cargo install cargo-scout-auditスカウト監査を実行:
プロジェクトでスカウトを実行するには、次のコマンドを実行します。
cargo scout-auditスカウトは貨物ワークスペースをサポートしています。ワークスペースで実行すると、スカウトはワークスペースのメンバーとして指定されたすべてのパッケージで実行されます。
インストールと使用の詳細については、以下のドキュメントセクションの開始セクションを参照してください。
現在、スカウトには次の検出器が含まれています。
| 検出器ID | それが検出するもの | テストケース | 重大度 |
|---|---|---|---|
| マルチプリーの前に分裂します | 乗算の前に分割操作を実行し、精度の損失につながります。 | 1、2、3 | 中くらい |
| 危険なアンドラップ | UNWRAPメソッドの不適切な使用法で、予期しないプログラムのクラッシュが発生します。 | 1 | 中くらい |
| 安全でない概要 | 予想されるプログラムのクラッシュにつながる期待方法の不適切な使用。 | 1 | 中くらい |
| オーバーフローチェック | 算術操作は、変数に割り当てられた使用可能なメモリにオーバーフローまたはアンダーフローします。 | 1 | 致命的 |
| ランダム価値が不十分です | 操作を防ぐために、乱数生成にブロック属性を使用しないでください。 | 1 | 致命的 |
| 保護されていないアップデート - 電流契約ワム | ユーザーがupdate_current_contract_wasm()を呼び出すことが許可されている場合、契約動作を意図的に変更できます。 | 1 | 致命的 |
| コアメム焦げを避けてください | core::mem::forget()の使用は、メモリリークとロジックエラーにつながる可能性があります。 | 1 | 強化 |
| セットコントラクトストレージ | env.storage()メソッドのアクセス制御が不十分です。 | 1、2、3 | 致命的 |
| パニックエラーを避けてください | 記述列挙を使用する代わりに、エラーのパニックをコードします。 | 1 | 強化 |
| Unsafe-blockを避けます | 危険なブロックをリスクコードの安全性と信頼性を使用する。 | 1 | 致命的 |
| dos-unbounded-operation | 無制限の操作によるDOS。 | 1、2、3 | 中くらい |
| ソロバンバージョン | ソロバンの古いバージョンを使用することは、バグやセキュリティの問題がある可能性があるため、危険です。利用可能な最新バージョンを使用してください。 | 1 | 強化 |
| 未使用のリターン - エナム | 関数からのリターンenumは完全には使用されていません。 | 1、2 | マイナー |
| イテレーター - インデックス | ハードコーディングされたインデックスを繰り返すと、イテレーターを使用するよりも遅くなります。また、インデックスが範囲外である場合、パニックになります。 | 1 | 強化 |
| アサートバイオレーション | マクロアサートの使用を避けてください!、パニックになります。 | 1 | 強化 |
| 保護されていないマッピング操作 | ユーザーによって与えられた任意のキーを使用してマッピングを変更することは、大きな脆弱性になる可能性があります。 | 1、2 | 致命的 |
| dos-unexpected-revert-with-vector | 不適切なストレージによるDOS。 | 1、2 | 中くらい |
| 無制限の移動からの移動 | ユーザー定義のパラメーターをfrom FROM FROMから渡すことを避けてください。 | 1 | 致命的 |
| 安全でないマップゲット | ソロバンのMapのgetメソッドの不適切な使用 | 1 | 中くらい |
| ゼロまたはテストアドレス | 契約制御の損失を防ぐために、ゼロまたはテストアドレスの割り当てを避けてください。 | 1 | 中くらい |
| 間違った発表 | 「^」の誤った使用に対する警告。 | 1 | 致命的 |
ニーズに最適な出力形式を選択できます。 Scoutは、HTML、Markdown、JSON、PDF、SARIFのレポートを提供しています。目的の出力を指定するには、次のコマンドを実行します。
cargo scout-audit --output-format [html|md|pdf|json|sarif]
HTMLレポート

ScoutのVSコード拡張機能を使用して開発ワークスペースにスカウトを追加して、ファイルを保存するとスカウトを自動的に実行します。

ヒント:コードで強調表示されているエラーを確認するには、エラーレンズ拡張機能をインストールすることをお勧めします。
Visual Studio MarketplaceからScout vsコードをダウンロードします。
スカウトをCI/CDパイプラインに統合してください!ターゲットを絞ったスマートコントラクトに対してツールを自動的に実行します。この即時のフィードバックループにより、開発者はコードをメインブランチにマージしてから、バグや脆弱性を導入するリスクを減らす前に、問題に迅速に対処できます。
プルリクエストのコメントとしてのスカウト出力

Github MarketplaceでScout Githubアクションを見つけてください。
スカウトをインストールして実行する方法を学ぶエキサイティングな一連のビデオチュートリアルにご参加ください。ツールによって検出された特定の問題を特定して解決する方法を発見し、専門家のガイダンスでスキルを向上させます。
?その他のビデオはすぐに通過します!
ツールを検証するために、テストケースフォルダーにある一連のコード例を提供します。
統合テストを実行するには、 apps/cargo-scout-auditに移動して実行します。
cargo test --all --all-features特定のテストケースのテストを実行するには、その特定のテストケースフォルダーで同じコマンドを実行します(例: test-cases/divide-before-multiply/divide-before-multiply-1 )
以下のドキュメントリンクをフォローして、スカウトによって検出された脆弱性、ツールの仕組み、プロジェクトへの貢献方法について詳しく知りましょう!
Scout for Sorobanは、Coinfabrikの研究開発チームによって開発されたオープンソースの脆弱性アナライザーです。
Stellar Community Fund(SCF)からの助成金を通じて支援を受けました。
We -Coinfabrik-は、Web3に特化した研究開発会社であり、サイバーセキュリティの強力なバックグラウンドを持っています。 2014年に設立され、180を超えるブロックチェーン関連のプロジェクト、EVMベース、およびSolana、Algorand、Stellar、Polkadotのために取り組んできました。開発を超えて、私たちは、現在基板、堅実さ、明確さ、錆、ティール、恒星のソロバンのコードに取り組んでいる上級サイバーセキュリティの専門家の専用の社内チームを通じてセキュリティ監査を提供しています。
私たちのチームは、コンピューターサイエンスと数学の学術的背景を持ち、学術出版物、特許が製品に変わった、会議のプレゼンテーションなど、サイバーセキュリティとソフトウェア開発に焦点を当てた実務経験があります。さらに、ブエノスアイレス大学との知識移転およびオープンソースプロジェクトに関する継続的なコラボレーションがあります。
スカウトはライセンスを取得し、MITライセンスの下で配布されます。用語の例外を探している場合は、お問い合わせください。