
Scout是一種可擴展的開源工具,旨在幫助Soroban Stellar Smart合同開發人員,審核員發現常見的安全問題和與最佳實踐的偏差。
該工具可幫助開發人員編寫安全,更健壯的智能合約。
我們對這個項目的興趣來自於其他區塊鏈中的手動審核和脆弱性檢測的經驗(請參閱Scout for Ink!)。
安裝偵察審計:
確保將貨物安裝在計算機上。然後,使用以下命令安裝偵察件:
cargo install cargo-scout-audit跑步偵察審核:
要在項目上運行偵察員執行以下命令:
cargo scout-audit偵察兵支持貨物工作區。在工作空間上運行時,將在指定為工作區成員的所有軟件包上執行偵察兵。
有關安裝和使用情況的更多信息,請參閱下面的文檔部分中的“入門”部分。
目前,偵察兵包括以下探測器。
| 檢測器ID | 它檢測到的 | 測試用例 | 嚴重程度 |
|---|---|---|---|
| 在逐漸劃分之前 | 在乘法之前執行劃分操作,導致精確度丟失。 | 1、2、3 | 中等的 |
| 不安全的unwrap | 不適當使用UNAWRAP方法,導致意外的程序崩潰。 | 1 | 中等的 |
| 不安全的期望 | 期望方法的使用不當,導致意外的程序崩潰。 | 1 | 中等的 |
| 溢出檢查 | 算術操作會溢出或低估分配給變量的可用內存。 | 1 | 批判的 |
| 隨機值不足 | 避免使用隨機數生成的塊屬性以防止操縱。 | 1 | 批判的 |
| 未受保護的上流 - 合同 - 合同 | 如果允許用戶調用update_current_contract_wasm() ,他們可以有意修改合同行為。 | 1 | 批判的 |
| 避免使用核心 - 驗證 | core::mem::forget()的使用可能導致內存洩漏和邏輯錯誤。 | 1 | 增強 |
| 設置合同存儲 | env.storage()方法上的訪問控制不足。 | 1、2、3 | 批判的 |
| 避免使用 | 錯誤的恐慌是錯誤的,而不是使用描述性枚舉。 | 1 | 增強 |
| 避免使用不安全塊 | 在風險中使用不安全的塊代碼安全性和可靠性。 | 1 | 批判的 |
| dos unbounded-Operation | DOS由於無界操作而引起的。 | 1、2、3 | 中等的 |
| Soroban-version | 使用舊版本的Soroban可能很危險,因為它可能存在錯誤或安全問題。使用可用的最新版本。 | 1 | 增強 |
| 未使用的返回 - 納姆 | 函數的返回枚舉未完全使用。 | 1,2 | 次要的 |
| 迭代器索引 | 用硬編碼索引迭代比使用迭代器要慢。另外,如果索引超出範圍,它將恐慌。 | 1 | 增強 |
| 斷言 | 避免使用宏斷言!它可能會驚慌。 | 1 | 增強 |
| 未受保護的映射操作 | 用用戶提供的任意密鑰修改映射可能是一個重要的漏洞。 | 1,2 | 批判的 |
| DOS不平衡 - 反向矢量 | DOS由於存儲不當而引起。 | 1,2 | 中等的 |
| 不受限制的轉移from | 避免將用戶定義的參數作為傳輸範圍內from作為a。 | 1 | 批判的 |
| 不安全的映射 | 不適當使用Soroban中Map的get方法 | 1 | 中等的 |
| 零或測試地址 | 避免零或測試地址分配以防止合同控制損失。 | 1 | 中等的 |
| 不正確的實心 | 警告不正確的用法。 | 1 | 批判的 |
您可以選擇最適合您需求的輸出格式。 Scout提供HTML,Markdown,JSON,PDF和SARIF報告。要指定所需的輸出運行以下命令:
cargo scout-audit --output-format [html|md|pdf|json|sarif]
HTML報告

使用Scout的VS代碼擴展名將Scout添加到您的開發工作區中,以自動保存文件時自動運行偵察兵。

提示:要查看代碼中突出顯示的錯誤,我們建議安裝錯誤鏡頭擴展名。
從Visual Studio Marketplace下載Scout vs代碼。
將偵察員集成到您的CI/CD管道中!自動根據目標智能合約運行該工具。這種直接的反饋循環使開發人員可以在將代碼合併到主要分支中之前快速解決任何問題,從而降低了引入錯誤或漏洞的風險。
偵察輸出作為拉的請求中的評論

在GitHub Marketplace中找到偵察兵GitHub動作。
加入我們,獲取一系列令人興奮的視頻教程,您將學習如何安裝和運行偵察兵。發現如何識別和解決該工具檢測到的特定問題,並通過我們的專家指導來提高您的技能。
?更多視頻即將開始!
為了驗證我們的工具,我們提供了位於測試台文件夾中的一組代碼示例。
為了運行集成測試,請導航到apps/cargo-scout-audit並運行:
cargo test --all --all-features為了運行特定測試案例的測試,請在該特定的測試案例文件夾上運行相同的命令(例如: test-cases/divide-before-multiply/divide-before-multiply-1 )
請遵循我們的文檔鏈接,並了解有關Scout檢測到的漏洞,該工具的工作原理以及如何為項目做出貢獻的更多信息!
Soroban的Scout是Coinfabrik的研發團隊開發的開源漏洞分析儀。
我們通過恆星社區基金(SCF)的贈款獲得了支持。
我們 - Coinfabrik-是一家專門從事Web3的研發公司,其網絡安全背景很強。成立於2014年,我們從事了180多個與區塊鏈相關的項目,包括EVM,以及Solana,Algorand,Stellar和Polkadot。除了開發之外,我們還通過專門的內部網絡安全專業人員團隊提供安全審核,目前正在從事底物,堅固,清晰,生鏽,藍綠色和Stellar Soroban的代碼。
我們的團隊在計算機科學和數學方面具有學術背景,其工作經驗的重點是網絡安全和軟件開發,包括學術出版物,專利變成產品以及會議演講。此外,我們與布宜諾斯艾利斯大學進行了知識轉移和開源項目的持續合作。
偵察兵是根據MIT許可證獲得許可和分配的。如果您正在尋找條款的例外,請與我們聯繫。