name: audit_context description: 审计前建立上下文的指南。
审计上下文构建
这个技能帮助你在深入漏洞挖掘之前快速构建代码库的思维模型。
1. 侦察
- 识别核心逻辑: 资金或关键逻辑在哪里?
- MultiversX: 查找
#[multiversx_sc::contract],#[payable], 和impl块。
- MultiversX: 查找
- 识别外部依赖:
- 与哪些其他合约交互?
- 是否有硬编码地址?(例如,
sc:智能合约字面量)。
- 识别文档:
README.md,specs/,whitepaper.pdf。- MultiversX:
mxpy.json(构建配置),multiversx.yaml,snippets.sh。
2. 系统映射
创建系统的思维(或书面)地图。
- 角色: 谁可以做什么?(
Owner,Admin,User,Whitelisted)。 - 资产: 哪些代币在流动?(EGLD, ESDT, NFT, SFT)。
- 状态: 存储了什么?(
SingleValueMapper,VecMapper)。
3. 威胁建模(初步)
- 风险资产: 如果此合约失败,会丢失什么?
- 攻击者画像: 外部用户?恶意管理员?重入合约?
- 入口点: 列出所有
#[endpoint]函数。哪些是未经检查的?
4. 环境检查
- 语言版本:
cargo.toml是否使用最新的multiversx-sc版本? - 测试套件:
scenarios/是否存在?运行sc-meta test-gen查看测试是否是最新的。
输出格式
审计上下文报告
合同: [名称]
提交: [哈希值]
框架: multiversx-sc [来自 Cargo.toml 的版本]
测试套件: [scenarios/ 存在: 是/否] [测试数量]
系统概览:
- 核心逻辑: [1-2 句话描述合同的作用]
- 价值流: [资金/代币如何通过合同流动]
角色:
| 角色 | 访问级别 | 端点 |
|------|-------------|-----------|
| 所有者 | #[only_owner] | [列表] |
| 管理员 | #[only_role] | [列表] |
| 用户 | 公开 | [列表] |
资产:
| 代币 | 类型 | 角色持有 | 流 |
|-------|------|------------|------|
| [id] | EGLD/ESDT/NFT/SFT | 铸造/燃烧/转移 | [输入/输出/两者] |
外部依赖:
| 合同/服务 | 交互类型 | 风险 |
|-----------------|-----------------|------|
| [地址/名称] | 同步调用/异步/代理 | [高/中/低] |
异步调用图:
[合同 A] --async_call--> [合同 B] --callback--> [合同 A]
威胁摘要:
- 风险资产: [可能被盗/锁定/膨胀的内容]
- 攻击者画像: [外部用户 / 恶意管理员 / 重入合约]
- 最高风险入口点: [按风险排序的前 3 个端点]
范围确定:
- 升级: [是/否]
- DeFi: [是/否]
- 多合同: [是/否]
完成标准
上下文构建完成时:
- 所有角色及其权限都已记录。
- 所有资产及其流动都已映射。
- 所有外部依赖都已识别。
- 威胁摘要为每个攻击者画像识别至少一个风险。
- 范围确定已填写(驱动哪些审计阶段适用)。