用途:Slither 是面向 Solidity 智能合约的 Python 静态分析框架,由 Trail of Bits 开发,通过检查代码结构而非执行代码来发现潜在问题,可与模糊测试、形式化验证互补。
主要能力:内置 95+ 检测器,按影响与置信度分级(高、中、低、信息、优化),覆盖重入、任意 ETH 发送、受控 delegatecall、未初始化状态变量、弱随机数等;支持 JSON 机器可读输出;提供 Python API 编写自定义检测器;Printers 可输出合约概览、函数摘要、调用图、继承图、控制流图、存储布局、函数选择器等结构信息。
使用方式:安装包名为 slither-analyzer,可用 uv tool install slither-analyzer、pip install slither-analyzer、brew install slither-analyzer 或 Docker 镜像 trailofbits/eth-security-toolbox。需配合 Solidity 编译器,可用 solc-select 管理版本。Foundry 项目先 forge build 再 slither .;Hardhat 项目先 npx hardhat compile 再 slither .;也可直接分析单个 .sol 文件或 Etherscan 已验证合约。常用参数包括 --filter-paths 过滤依赖、--exclude 排除检测器、--detect 仅运行指定检测器、--triage-mode 交互式分诊、--json 输出报告。配置可写入项目根目录 .slither.conf.json,CLI 参数优先。
适用场景:智能合约安全审查、CI/CD 集成(如 crytic/slither-action 与 SARIF 上传 GitHub Code Scanning)、pre-commit 钩子、升级able 合约存储布局检查。
限制:静态分析无法捕获运行时逻辑错误、经济攻击或预言机操纵;真实项目误报率约 30-60%,原始输出不等于审计报告,必须分诊;默认会扫描依赖文件,需配置过滤;检测器 ID 随版本变化,应以 slither --list-detectors 为准;--detect 与 --exclude 语义相反,不可混用。资料未提供具体收费与价格信息。