
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许可证获得许可和分配的。如果您正在寻找条款的例外,请与我们联系。