Slither可以检测编译器遗漏的代码优化项并给出优化建议。 代码理解。Slither能够绘制合约的继承拓扑图,合约方法调用关系图等,帮助开发者理解代码。 辅助代码审查。 用户可以通过API与Slither进行交互。 二、Slither运行流程 Slither的工作方式如下: 智能合约源码经过solc编译后得到Solidity抽象语法树(AST)作为Slither的输入。 在代码分析阶段,Slither运行一组预定义的分析,包括合约中变量、函数的依赖关系;变量的读写和函数的权限控制。 经过Slither的核心处理之后,就可以提供漏洞检测、代码优化检测和代码理解输出等。 pip安装 pip3 install slither-analyzer 源码编译 $ git clone https://github.com/crytic/slither.git && cd slither
Slither是第一个开源的针对Solidity语言的静态分析框架。Slither速度非常快,准确性也非常高,它能够在不需要用户交互的情况下,在几秒钟之内找到真正的漏洞。 可自主集成其他功能 Slither拥有简单的命令行接口,如果你想对一份Solidity文件运行所有的检测工具,你只需要运行: $slither contract.sol ? (s)函数会给状态变量myVar写入值: #function_writing.pyimport sysfrom slither.slither import Slither iflen(sys.argv 大家可以查看一下Slither的【文档】来了解如何添加自己的printer。 工具安装 Slither要求Python 3.6+、solc和Solidity编译器。 && cd slither$ python setup.py install 工具使用 审计单一文件: $slither tests/uninitialized.sol # argument can
这份清单并非详尽无遗,它包括来自广泛参考来源的建议,如Slither 的 detector 文档[7]、智能合约弱点分类注册表[8]、Solidity 的已知漏洞列表[9]、Sigma Prime[10 自动工具(如 Slither)可以检查其中的许多陷阱,是开发/审计过程中的必备工具,但它们在某些情况下可能会出现错误提示,需要人为干预以获得更大的信心/覆盖率。 的 detector 文档: https://github.com/crytic/slither/wiki/Detector-Documentation [8] 智能合约弱点分类注册表: https:/ /Detector-Documentation#misuse-of-a-boolean-constant [62] 这里: https://github.com/crytic/slither/wiki/ /wiki/Detector-Documentation#missing-events-access-control [73] 这里: https://github.com/crytic/slither
] 基于 DeFi 合约漏洞利用的 Semgrep (静态分析)规则[19] Solidity Fuzzing Boilerplate[20]: 用 Echidna 和 Foundry 运行模糊测试 Slither v0.8.3[21]: 支持 Foundry,允许用户通过代码注释增强 Slither,增加了一个新的工具来读取链上的变量存储值(slither-read-storage) Vyper v0.3.2[ patrickd-/solidity-fuzzing-boilerplate#solidity-fuzzing-boilerplate [21] v0.8.3: https://github.com/crytic/slither
Slither 格式工具slither-format可自动生成补丁。这些补丁与 git 兼容。补丁在应用前应仔细审查。 该工具支持的检测器有: 未使用的状态 Solc-version pragma 命名规范 外部函数 常量状态 常量函数 Slither ERC 一致性工具slither-check-erc对 ERC20、 所有的功能都存在 所有的事件都存在 函数返回正确的类型 必须是视图的函数是视图 事件的参数被正确索引 这些函数发出了事件 派生合约不会破坏一致性 Slither 属性生成工具slither-prop可以生成代码属性 要求使用 burn(address) returns()函数 Slither 新的检测器: Slither 的插件架构让你可以整合新的检测器,从命令行运行。 : https://github.com/crytic/slither [54] 74个检测器: https://github.com/crytic/slither#detectors [55] 奖杯
用 Slither 进行安全分析 当涉及到智能合约安全时,Slither 绝不是一个简单的解决方案,但它是有用的,并提供了一些自动检查,如检查重入错误。 为了使用 slither,我一般会切换到 WSL(linux 的 Windows 子系统),它可以用以下命令安装(注意 0.8.13 是目前 foundry 演示合约中使用的 solc 版本。 apt install python3-pip pip3 install slither-analyzer pip3 install solc-select solc-select install 0.8.13 solc-select use 0.8.13 然后把以下复制到我们工作的主目录下一个叫 slither.config.json 的文件里 { "filter_paths": "lib", " src/Contract.sol 在官方 readme 中有更多关于 slither 的信息:https://github.com/crytic/slither Foundry 作弊代码 Foundry
to, msg.value, _data ); // Send calldata into L2 // slither-disable-next-line reentrancy-events sendCrossDomainMessage(l2TokenBridge, _l2Gas, message); // slither-disable-next-line deposited token on L1 matches the L2 deposited token representation here if ( // slither-disable-next-line finalized, we credit the account on L2 with the same amount of // tokens. // slither-disable-next-line reentrancy-events IL2StandardERC20(_l2Token).mint(_to, _amount); // slither-disable-next-line
pip install slither-analyzer # 分析单个文件 slither contract.sol # 分析整个项目 slither # 启用特定检测器 slither contract.sol --detect reentrancy-eth,reentrancy-no-eth # 生成JSON报告 slither contract.sol --json report.json 编写自定义检测器示例: from slither.slither import Slither from slither.detectors.abstract_detector = Slither(file_path) detector = CustomReentrancyDetector(slither, slither.config) results = 进行初步静态分析 slither .
时间序列模型(历史数据+网络状态) 路径优化:带约束的图搜索算法(Dijkstra变体) 前端集成:React组件封装路径可视化 ️ 模块3:交易风险防控(合约沙盒模拟)// 恶意合约检测器(基于Slither showVisualization(risk.flowChart) // 展示资金流向图 requireMultiSig() // 触发多签审批 } }}防御技术栈: 静态分析:Slither 开发者行动清单: 立即用Revoke.cash 清理测试网授权 在Remix中运行Slither 扫描你的合约 使用Chainlink CCIP 构建首个跨链应用
代码审计:使用工具(如 Slither、MythX)进行静态分析。聘请专业团队进行人工审计。2.前端安全主要风险:私钥泄露:用户私钥被恶意脚本或钓鱼网站窃取。注入攻击:恶意代码注入前端,篡改交易内容。 静态分析工具:Slither、MythX、Securify。测试工具:Truffle、Ganache、Waffle。最佳实践:代码审计:开发完成后进行全面的安全审计。
例如开发者使用 Slither 工具在本地检测代码,可提前发现权限漏洞。 例如 Slither 开源后被全球数千开发者使用,衍生出多个优化版本;而国内工具多为闭源或学术原型,实际应用范围有限。 3.静态分析工具 Slither 功能全面,支持 100 + 漏洞检测规则。 安装命令:pip install slither-analyzer,检测命令:slither contract.sol,输出漏洞详细信息和修复建议; Mythril 集成符号执行和静态分析,适合自动化流程 例如在 GitHub Actions 中配置 Slither,每次提交代码自动检测,确保代码质量。
静态分析: 使用Slither等工具进行自动化分析: # 安装Slither pip install slither-analyzer # 运行静态分析 slither AuditTarget.sol 区块链安全工具与审计框架 4.1 智能合约安全工具 4.1.1 静态分析工具 Slither: 开源的静态分析框架 可以检测常见漏洞如重入、溢出、访问控制等 支持自定义检测器开发 Mythril
明确审计目标和重点领域 确定时间安排和里程碑 设定可交付成果和验收标准 2.2 审计执行阶段 审计执行阶段是审计流程的核心,包括多种技术手段的综合运用: 静态代码分析: 使用自动化工具扫描代码(如Slither 以下高危漏洞仍然是智能合约安全的主要威胁: 重入攻击(Reentrancy): 原理:攻击者在合约函数执行完成前重复调用该函数,绕过状态更新 检测方法:使用ReentrancyGuard模式检查、Slither 0.8.0+内置检查 案例:Beauty Chain代币漏洞、Rubixi漏洞 访问控制缺陷(Access Control): 原理:关键函数缺乏适当的权限检查 检测方法:手动审查权限修饰符、使用Slither 分析预言机依赖、验证多源数据 案例:Harvest Finance攻击、Cream Finance攻击 3.2 自动化审计工具详解 自动化审计工具是现代合约审计流程中不可或缺的组成部分: 静态分析工具: Slither :最受欢迎的静态分析框架,支持多种漏洞检测 # 安装Slither pip install slither-analyzer # 分析合约 slither /path/to/contracts Mythril
常用安全分析工具 工具名称 类型 功能 适用场景 Slither 静态分析 检测常见漏洞、优化建议 开发过程中快速检查 Mythril 符号执行 深度分析代码逻辑 发现复杂漏洞 Echidna 模糊测试 分析 runSlither() { console.log('运行Slither静态分析...'); try { const output = execSync(`slither ${this.contractPath} --json ${this.outputDir}/slither-report.json`).toString(); fs.writeFileSync (`${this.outputDir}/slither-output.txt`, output); console.log('Slither分析完成'); return true ; } catch (error) { console.error('Slither分析失败:', error.message); return false; }
中的基本性能测试 链接: https://www.vinta.com.br/blog/2020/counting-queries-basic-performance-testing-in-django/ 书籍 Slither into Python 链接: https://www.slitherintopython.com/ Slither into Python 是完全针对 Python 初学者的入门书。
像所有自动化测试工具一样,Slither 并不完美,它在报告一侧出现了太多错误。 即使在不存在可开发的脆弱性的情况下,它也可以就潜在的重返提出警告。 在代码更改之间在 Slither 输出中查看 DIFERENER 常常非常有启发性,可以帮助发现比等待您的项目代码完成早得多的漏洞。MythrilMythril 是 EVM 字节码的安全分析工具。
防御手段: 使用最新 Solidity 编译器,避免 ABI 自动推导漏洞 避免函数名过长或构造极端签名 使用工具检测潜在冲突(如 Slither、Surya) 3、selfdestruct 的风险 selfdestruct 存储槽冲突 —— 升级合约的最大坑 ABI 混淆 —— 极端但可能的攻击面 selfdestruct —— 强制转账与合约摧毁 开发者必须: 使用官方工具(OpenZeppelin Upgrades、Slither
使用自动化安全分析工具(如 Slither, MythX)。2. 智能合约安全分析工具: Slither, MythX, Oyente 等。
slither-read-storage[41]使用指南,检索存储槽, Optimism 的 Drippie[42]: 基于如 Gelato 服务的链上自动运行 ethers-rs v0.17[43]: trufflesuite/ganache/releases/tag/v7.4.0 [40] v2: https://twitter.com/naddison/status/1553048037085564929 [41] slither-read-storage : https://blog.trailofbits.com/2022/07/28/shedding-smart-contract-storage-with-slither/ [42] Drippie:
是一款基于Geth构建的开源EVM模糊测试器,其首个正式版本具有以下核心特性:覆盖率引导测试:通过HTML报告提供高效合约探索和直接反馈并行测试:根据硬件配置无缝扩展以加速测试进程智能变异值生成:结合Slither