名称: 安全开发工作流指南 描述: 引导通过Trail of Bits的5步安全开发工作流。运行Slither扫描,检查特殊功能(可升级性/ERC合规性/代币集成),生成可视化安全图,帮助记录安全属性以进行模糊测试/验证,并审查手动安全领域。
安全开发工作流指南
目的
引导通过Trail of Bits的安全开发工作流——一个5步流程,在整个开发过程中增强智能合约安全性。
使用场景: 每次提交前、部署前,或当您需要进行安全审查时
5步工作流
涵盖一个安全工作流,包括:
第1步: 检查已知安全问题
运行Slither(内置70多个检测器)以发现常见漏洞:
- 按严重性解析发现
- 用文件引用解释每个问题
- 推荐修复方案
- 帮助筛选误报
目标: 干净的Slither报告或已记录的筛选
第2步: 检查特殊功能
检测和验证适用功能:
- 可升级性: slither-check-upgradeability(17种升级风险)
- ERC合规性: slither-check-erc(6种常见规范)
- 代币集成: 推荐token-integration-analyzer技能
- 安全属性: slither-prop用于ERC20
注意: 仅运行适用于您代码库的检查
第3步: 可视化安全检查
生成3种安全图:
- 继承图: 识别阴影和C3线性化问题
- 功能摘要: 显示可见性和访问控制
- 变量和授权: 映射谁可以写入状态变量
审查每张图以发现安全问题
第4步: 记录安全属性
帮助记录关键安全属性:
- 状态机转换和不变量
- 访问控制需求
- 算术约束和精度
- 外部交互安全性
- 标准合规性
然后设置测试:
- Echidna: 基于属性的模糊测试与不变量
- Manticore: 符号执行的形式验证
- 自定义Slither检查: 项目特定业务逻辑
注意: 对安全性最重要的活动
第5步: 手动审查领域
分析自动化工具遗漏的领域:
- 隐私: 链上秘密,提交-揭示需求
- 前运行: 滑点保护,排序风险,MEV
- 密码学: 弱随机性,签名问题,哈希碰撞
- DeFi交互: 预言机操纵,闪电贷,协议假设
搜索代码库以发现这些模式并标记风险
有关每个步骤的详细说明、命令和解释,请参阅WORKFLOW_STEPS.md。
工作方式
调用时,我将:
- 探索您的代码库 以了解结构
- 运行第1步: Slither安全扫描
- 检测并运行第2步: 特殊功能检查(仅适用部分)
- 生成第3步: 可视化安全图
- 指导第4步: 安全属性记录
- 分析第5步: 手动审查领域
- 提供行动计划: 优先级修复和后续步骤
根据以下调整:
- 您已安装的工具
- 适用于您项目的部分
- 您在开发中的阶段
合理化(请勿跳过)
| 合理化 | 为什么错误 | 必要行动 |
|---|---|---|
| “Slither不可用,我将手动检查” | 手动检查会错过70多个检测器模式 | 安装并运行Slither,或记录为什么受阻 |
| “无法生成图,我将描述架构” | 描述不直观——图能揭示文本遗漏的模式 | 执行slither --print命令,生成实际可视化输出 |
| “未检测到升级,跳过可升级性检查” | 代理和升级通常是隐式或计划的 | 在跳过第2步检查前,用代码库搜索验证 |
| “不是代币,跳过ERC检查” | 代币可能集成而无需明显的ERC继承 | 在跳过前,检查代币交互、转账、余额 |
| “现在无法设置Echidna,建议稍后” | 基于属性的测试是第4步,非可选 | 现在记录属性,设置模糊测试基础设施 |
| “无DeFi交互,跳过年预言机/闪电贷检查” | DeFi模式出现在意外地方(价格源、外部调用) | 完成第5步手动审查,搜索代码库以发现模式 |
| “此步骤不适用于我的项目” | 未经验证的"不适用"会导致遗漏漏洞 | 在声明不适用前,用明确代码库搜索验证 |
| “我将提供通用安全建议而非运行工作流” | 通用建议不可操作,工作流能找到具体问题 | 执行所有5步,生成项目特定发现并附文件:行引用 |
示例输出
完成工作流后,您将获得一份全面安全报告,包括:
- 第1步: Slither发现,含严重性、文件引用和修复建议
- 第2步: 特殊功能验证结果(可升级性、ERC合规性等)
- 第3步: 可视化图分析继承、功能和状态变量授权
- 第4步: 记录的安全属性和测试设置(Echidna/Manticore)
- 第5步: 手动审查发现(隐私、前运行、密码学、DeFi风险)
- 行动计划: 关键/高/中等优先级任务,带工作量估计
- 工作流检查清单: 所有5步进度
有关完整示例工作流报告,请参阅EXAMPLE_REPORT.md。
您将获得
安全报告:
- Slither发现,含严重性和修复
- 特殊功能验证结果
- 可视化图(PNG/PDF)
- 手动审查发现
行动计划:
- [ ] 需立即修复的关键问题
- [ ] 需记录的安全属性
- [ ] 需设置的测试(Echidna/Manticore)
- [ ] 需审查的手动领域
工作流检查清单:
- [ ] 干净的Slither报告
- [ ] 特殊功能已验证
- [ ] 可视化检查完成
- [ ] 属性已记录
- [ ] 手动审查完成
获取帮助
Trail of Bits资源:
- 办公时间: 每周二(预约)
- Empire Hacking Slack: #crytic和#ethereum频道
其他安全:
- 记住: 安全不仅仅是智能合约
- 链下安全(所有者密钥、基础设施)同样关键
准备开始
告诉我您准备好了,我将与您的代码库一起运行工作流!