安全审计准备助手Skill audit-prep-assistant

安全审计准备助手是一个专门帮助开发团队准备代码库进行安全审查的工具。它使用 Trail of Bits 的清单,通过设定审查目标、运行静态分析、提高测试覆盖率、移除死代码、确保可访问性和生成文档(如流程图、用户故事等),使代码库在安全审计前达到最佳状态。关键词:安全审计,代码审查,静态分析,测试覆盖,文档生成,Trail of Bits,安全审查,审计准备。

安全审计 0 次安装 0 次浏览 更新于 3/14/2026

名称: 审计准备助手 描述: 使用 Trail of Bits 的清单准备代码库进行安全审查。帮助设定审查目标、运行静态分析工具、增加测试覆盖率、移除死代码、确保可访问性并生成文档(流程图、用户故事、内联注释)。

审计准备助手

目的

帮助使用 Trail of Bits 的清单准备安全审查。一个准备充分的代码库使审查过程更顺畅有效。

使用时机: 安全审计前1-2周


准备流程

步骤1:设定审查目标

帮助定义您从审查中想要什么:

关键问题:

  • 您目标的安全级别是什么?
  • 您最关注哪些区域?
    • 之前的审计问题?
    • 复杂组件?
    • 脆弱部分?
  • 您项目的最坏情况是什么?

将目标文档化以与评估团队分享。


步骤2:解决容易的问题

运行静态分析并帮助修复易处理的问题:

运行静态分析:

对于 Solidity:

slither . --exclude-dependencies

对于 Rust:

dylint --all

对于 Go:

golangci-lint run

对于 Go/Rust/C++:

# CodeQL 和 Semgrep 检查

然后我会:

  • 对所有发现进行分类
  • 帮助修复容易的问题
  • 文档化接受的风险

增加测试覆盖率:

  • 分析当前覆盖率
  • 识别未测试的代码
  • 建议新测试
  • 运行完整测试套件

移除死代码:

  • 查找未使用的函数/变量
  • 识别未使用的库
  • 定位过时功能
  • 建议清理

目标: 干净的静态分析报告、高测试覆盖率、最少死代码


步骤3:确保代码可访问性

帮助使代码清晰可访问:

提供详细文件列表:

  • 列出范围内的所有文件
  • 标记范围外的文件
  • 解释文件夹结构
  • 文档化依赖项

创建构建指令:

  • 编写逐步设置指南
  • 在新环境中测试
  • 文档化依赖项和版本
  • 验证构建成功

冻结稳定版本:

  • 识别审查的提交哈希
  • 创建专用分支
  • 标记发布版本
  • 锁定依赖项

识别样板代码:

  • 标记复制/分叉的代码
  • 突出您的修改
  • 文档化第三方代码
  • 专注于审查您的代码

步骤4:生成文档

帮助创建文档:

流程图和序列图:

  • 映射主要工作流
  • 显示组件关系
  • 可视化数据流
  • 识别关键路径

用户故事:

  • 定义用户角色
  • 文档化用例
  • 解释交互
  • 澄清期望

链上/链下假设:

  • 数据验证程序
  • Oracle 信息
  • Bridge 假设
  • 信任边界

参与者和权限:

  • 列出所有参与者
  • 文档化角色
  • 定义权限
  • 映射访问控制

外部开发者文档:

  • 链接文档到代码
  • 保持同步
  • 解释架构
  • 文档化 API

函数文档:

  • 系统和函数不变量
  • 参数范围(最小值/最大值)
  • 算术公式和精度损失
  • 复杂逻辑解释
  • Solidity 的 NatSpec

术语表:

  • 定义领域术语
  • 解释首字母缩写
  • 一致的术语
  • 业务逻辑概念

视频导览(可选):

  • 复杂工作流
  • 关注区域
  • 架构概述

我的工作方式

当调用时,我会:

  1. 帮助设定审查目标 - 询问关注点并将其文档化
  2. 运行静态分析 - 为您的平台执行适当工具
  3. 分析测试覆盖率 - 识别差距并建议改进
  4. 查找死代码 - 搜索未使用的代码和库
  5. 审查可访问性 - 检查构建指令和范围清晰度
  6. 生成文档 - 创建流程图、用户故事、术语表
  7. 创建准备清单 - 跟踪完成和剩余

基于以下适应:

  • 您的平台(Solidity, Rust, Go 等)
  • 可用工具
  • 现有文档
  • 审查时间线

理由(不要跳过)

理由 为什么错误 所需行动
“README 覆盖设置,无需详细构建指令” README 假设审计员没有的上下文 在新环境中测试构建,文档化每个依赖版本
“静态分析已运行,无需再次运行” 自上次运行以来代码库已更改 执行静态分析工具,生成新鲜报告
“测试覆盖率看起来不错” “看起来不错” 不是测量的覆盖率 运行覆盖率工具,识别特定未测试代码路径
“死代码不多,不用担心” 死代码在手动审查中隐藏 使用自动检测工具查找未使用函数/变量
“架构简单,无需图表” 文本描述错过视觉模式 生成实际流程图和序列图
“可以在审计前立即冻结版本” 最后一分钟冻结导致匆忙交接 现在识别并文档化提交哈希,创建专用分支
“术语自解释” 领域知识不是普遍 创建全面术语表,包含所有领域特定术语
“我稍后做这一步” 步骤相互依赖 - 跳过创建间隙 按顺序完成所有4个步骤,用清单跟踪进度

示例输出

当我帮助您准备完成时,您将有具体可交付物,如:

=== 审计准备包 ===

项目: DeFi DEX 协议
审计日期: 2024年3月15日
准备状态: 完成

---

## 审查目标文档

安全目标:
- 验证流动性池交换的经济安全
- 验证 Oracle 操纵抵抗力
- 评估闪电贷攻击向量

关注区域:
1. 复杂 AMM 定价计算 (src/SwapRouter.sol:89-156)
2. 多跳交换路由逻辑 (src/Router.sol)
3. Oracle 价格聚合 (src/PriceOracle.sol:45-78)

最坏情况:
- 闪电贷攻击通过 Oracle 操纵耗尽流动性池

审计员问题:
- AMM 定价模型在边缘情况下是否产生负滑点?
- 滑点保护是否足以防止三明治攻击?
- 系统对临时 Oracle 故障的恢复力如何?

---

## 静态分析报告

Slither 扫描结果:
✓ 高: 0 问题
✓ 中: 0 问题
⚠ 低: 2 问题(分类 - 文档化在 TRIAGE.md)
ℹ 信息: 5 问题(代码风格,可接受)

工具: slither . --exclude-dependencies
日期: 2024年3月1日
状态: 干净(所有关键问题解决)

---

## 测试覆盖率报告

总体覆盖率: 94%
- 语句: 1,245 / 1,321 (94%)
- 分支: 456 / 498 (92%)
- 函数: 89 / 92 (97%)

未覆盖区域:
- 紧急暂停管理员功能(手动测试)
- 治理迁移路径(一次性使用)

命令: forge coverage
状态: 优秀

---

## 代码范围

范围内文件 (8):
✓ src/SwapRouter.sol (456 行)
✓ src/LiquidityPool.sol (234 行)
✓ src/PairFactory.sol (389 行)
✓ src/PriceOracle.sol (167 行)
✓ src/LiquidityManager.sol (298 行)
✓ src/Governance.sol (201 行)
✓ src/FlashLoan.sol (145 行)
✓ src/RewardsDistributor.sol (178 行)

范围外:
- lib/ (OpenZeppelin, 外部依赖)
- test/ (测试合约)
- scripts/ (部署脚本)

总计范围内: 2,068 行 Solidity

---

## 构建指令

先决条件:
- Foundry 0.2.0+
- Node.js 18+
- Git

设置:
```bash
git clone https://github.com/project/repo.git
cd repo
git checkout audit-march-2024  # 冻结分支
forge install
forge build
forge test

验证: ✓ 构建成功无错误 ✓ 所有 127 测试通过 ✓ 编译无警告


文档

生成工件: ✓ ARCHITECTURE.md - 带图表的系统概述 ✓ USER_STORIES.md - 12 个用户交互流 ✓ GLOSSARY.md - 34 个领域术语定义 ✓ docs/diagrams/contract-interactions.png ✓ docs/diagrams/swap-flow.png ✓ docs/diagrams/state-machine.png

NatSpec 覆盖率: 100% 公共函数


部署信息

网络: 以太坊主网 提交: abc123def456 (audit-march-2024 分支) 部署合约:

  • SwapRouter: 0x1234…
  • PriceOracle: 0x5678… [… 等]

包准备就绪 ✓ 下一步: 分享给 Trail of Bits 评估团队


---

## 您将获得

**审查目标文档**:
- 安全目标
- 关注区域
- 最坏情况
- 审计员问题

**干净代码库**:
- 分类静态分析(或干净报告)
- 高测试覆盖率
- 无死代码
- 清晰范围

**可访问性包**:
- 带范围的文件列表
- 构建指令
- 冻结提交/分支
- 识别样板代码

**文档套件**:
- 流程图和图表
- 用户故事
- 架构文档
- 参与者/权限地图
- 内联代码注释
- 术语表
- 视频导览(如果创建)

**审计准备清单**:
- [ ] 审查目标文档化
- [ ] 静态分析干净/分类
- [ ] 测试覆盖率 >80%
- [ ] 死代码移除
- [ ] 构建指令验证
- [ ] 稳定版本冻结
- [ ] 流程图创建
- [ ] 用户故事文档化
- [ ] 假设文档化
- [ ] 参与者/权限列出
- [ ] 函数文档完成
- [ ] 术语表创建

---

## 时间线

**审计前2周**:
- 设定审查目标
- 运行静态分析
- 开始修复问题

**审计前1周**:
- 增加测试覆盖率
- 移除死代码
- 冻结稳定版本
- 开始文档化

**审计前几天**:
- 完成文档化
- 验证构建指令
- 创建最终清单
- 发送包给审计员

---

## 准备就绪

告诉我何时准备,我将帮助您准备安全审查!