审计上下文构建

audit-context-building
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.60/5
使用3.1K

深度上下文构建技能 (超细粒度纯上下文模式)

1. 目的

本技能规定了 Claude 在审计的上下文构建阶段的思考方式

激活后,Claude 将:

  • 默认执行逐行/逐块的代码分析。

  • 在微观尺度上应用第一性原理 (First Principles)5 Why 分析法5 How 分析法

  • 持续建立“洞察 $\rightarrow$ 函数 $\rightarrow$ 模块 $\rightarrow$ 整个系统”的链接。

  • 维护一个稳定且明确的心理模型,并随新证据的出现而演进。

  • 识别不变式 (Invariants)、假设、流程和推理陷阱。

本技能定义了一套结构化的分析格式(见下文“函数微观分析示例”),并在漏洞挖掘阶段之前运行。

---

使用场景

适用场景:
  • 在发现 Bug 或漏洞之前需要深度理解。
  • 需要自下而上的理解,而非高层级的猜测。
  • 必须减少幻觉、矛盾和上下文丢失。
  • 为安全审计、架构评审或威胁建模做准备。

适用于:

  • 漏洞发现

  • 修复建议

  • Exploit 推演

  • 严重程度/影响评级

---

2. 技能行为

激活后,Claude 将:

  • 默认对每个代码块和每一行进行超细粒度分析

  • 应用微观层面的第一性原理、5 Why 和 5 How。

  • 构建并完善一个持久的全局心理模型。

  • 当之前的假设被推翻时及时更新(例如:“之前我认为是 X;现在发现是 Y。”)。

  • 定期进行锚点总结以维持稳定的上下文。

  • 避免臆测;必要时明确表达不确定性。

目标:深度、准确的理解,而非得出结论。

---

合理化陷阱 (不可跳过)

| 常见合理化借口 | 错误原因 | 要求采取的行动 |
|-----------------|----------------|-----------------|
| “我大概明白了” | 概括性的理解会遗漏边缘情况 | 必须进行逐行分析 |
| “这个函数很简单” | 简单函数的组合会产生复杂的 Bug | 依然应用 5 Why 分析 |
| “我会记住这个不变式” | 你不会。上下文会衰减。 | 必须明确记录下来 |
| “外部调用大概没问题” | 在证明安全前,外部调用 = 对抗性的 | 深入代码或将其建模为敌对状态 |
| “我可以跳过这个辅助函数” | 辅助函数包含会传递的假设 | 追踪完整的调用链 |
| “这太花时间了” | 上下文构建仓促 $\rightarrow$ 后期产生幻觉漏洞 | 慢即是快 |

---

3. 第一阶段 — 初始定向 (自下而上扫描)

在深度分析之前,Claude 将进行最小化映射:

1. 识别主要模块/文件/合约。
2. 记录明显的公共/外部入口点。
3. 识别可能的角色(用户、所有者、中继器、预言机、其他合约)。
4. 识别重要的存储变量、字典、状态结构体或单元 (cells)。
5. 构建初步结构,不对行为做假设。

这为详细分析建立了锚点。

---

4. 第二阶段 — 超细粒度函数分析 (默认模式)

每个非平凡函数都将接受完整的微观分析。

5.1 函数微观结构检查清单

针对每个函数:

1. 目的
- 函数存在的原因及其在系统中的角色。

2. 输入与假设
- 参数和隐式输入(状态、发送者、环境)。
- 前置条件和约束。

3. 输出与影响
- 返回值。
-

  • 状态/存储写入。

- 事件/消息。
- 外部交互。

4. 逐块/逐行分析
针对每个逻辑块:
- 它的功能。
- 为什么出现在此处(排序逻辑)。
- 它依赖于哪些假设。
- 它建立或维护了哪些不变性(Invariants)。
- 后续哪些逻辑依赖于它。

对每个块应用:
- 第一性原理 (First Principles)
- 5 Whys (五个为什么)
- 5 Hows (五个怎么做)

---

5.2 跨函数与外部流程分析

*(全面集成“跳转至外部代码”规则)*

在遇到调用时,跨越边界继续执行相同的微观第一性分析。

#### 内部调用

  • 立即跳转至被调用者。

  • 对相关代码进行逐块分析。

  • 追踪数据流、假设和不变性:

调用者 $\rightarrow$ 被调用者 $\rightarrow$ 返回 $\rightarrow$ 调用者。
  • 记录被调用者逻辑在此特定调用上下文中是否表现不同。

#### 外部调用 —— 分两种情况

情况 A — 调用代码库中存在的合约
将其视为内部调用:

  • 跳转至目标合约/函数。

  • 继续进行逐块微观分析。

  • 无缝传递不变性和假设。

  • 基于*实际*代码而非黑盒猜测来考虑边缘情况。

情况 B — 调用无可用代码的合约(真正的外部/黑盒)
将其视为对抗性分析:

  • 描述发送的 Payload/Value/Gas 或参数。

  • 识别对目标的假设。

  • 考虑所有可能的结果:

- revert(回滚)
- 错误/异常的返回值
- 意外的状态变更
- 行为异常
- 重入(如果适用)

#### 连续性规则
将整个调用链视为一个连续的执行流
绝不要重置上下文。
所有不变性、假设和数据依赖必须在调用之间传递。

---

5.3 完整分析示例

请参阅 FUNCTION_MICRO_ANALYSIS_EXAMPLE.md 以获取完整演示,包括:

  • DEX swap 函数的完整微观分析

  • 第一性原理、5 Whys 和 5 Hows 的应用

  • 包含不变性和假设的逐块分析

  • 跨函数依赖映射

  • 外部交互的风险分析

该示例展示了所有分析函数所需的深度和结构水平。

---

5.4 输出要求

在进行超细粒度分析时,Claude 必须遵循 OUTPUT_REQUIREMENTS.md 中定义的格式构建输出。

关键要求:

  • 目的 (Purpose)(至少 2-3 句话)

  • 输入与假设 (Inputs & Assumptions)(所有参数、前置条件、信任假设)

  • 输出与影响 (Outputs & Effects)(返回值、状态写入、外部调用、事件、后置条件)

  • 逐块分析 (Block-by-Block Analysis)(做什么、为何在此、假设、第一性原理/5 Whys/5 Hows)

  • 跨函数依赖 (Cross-Function Dependencies)(内部调用、带风险分析的外部调用、共享状态)

质量阈值:

  • 每个函数至少 3 个不变性

  • 至少记录 5 个假设

  • 外部交互至少 3 项风险考量

  • 至少 1 次第一性原理应用

  • 至少 3 次 5 Whys/5 Hows 综合应用

---

5.5 完整性检查清单

在结束函数的微观分析前,请对照 COMPLETENESS_CHECKLIST.md 进行验证:

  • 结构完整性:所有必要章节均已包含(目的、输入、输出、逐块分析、依赖)
  • 内容深度:达到最低阈值(不变性、假设、风险分析、第一性原理)
  • 连续性与集成:交叉引用、传递的假设、不变性耦合
  • 反幻觉:行
标注引用,拒绝模糊表述,主张证据支撑。

当所有检查清单项均已满足且不存在未解决的“不明确”项时,分析即告完成。

---

5. 第三阶段 —— 全局系统理解

在完成充分的微观分析后:

1. 状态与不变式重构
- 映射每个状态变量的读/写操作。
- 推导跨函数和跨模块的不变式(Invariants)。

2. 工作流重构
- 识别端到端流程(如:存款、取款、生命周期、升级)。
- 追踪状态在这些流程中的转换过程。
- 记录在各步骤中持续存在的假设。

3. 信任边界映射
- 角色 $\rightarrow$ 入口点 $\rightarrow$ 行为。
- 识别不可信的输入路径。
- 权限变更及隐式角色预期。

4. 复杂度与脆弱性聚类
- 包含大量假设的函数。
- 高分支逻辑。
- 多步依赖关系。
- 跨模块的耦合状态变更。

这些聚类将为漏洞挖掘阶段提供引导。

---

6. 稳定性与一致性规则

*(反幻觉,反矛盾)*

Claude 必须:

  • 绝不为了迎合先前的假设而篡改证据。
当出现矛盾时: - 更新模型。 - 明确陈述修正内容。
  • 定期锚定关键事实
总结核心内容: - 不变式 - 状态关系 - 角色职责 - 工作流
  • 避免模糊猜测
使用: - “不明确;需要检查 X。” 而非: - “可能……”
  • 持续进行交叉引用
将新见解与之前的状态、流程和不变式相连接,以维持全局连贯性。

---

7. 子代理(Subagent)的使用

Claude 可针对以下场景创建子代理:

  • 密集或复杂的函数。

  • 冗长的数据流或控制流链。

  • 加密/数学逻辑。

  • 复杂的状态机。

  • 跨模块的工作流重构。

使用 function-analyzer 代理进行单函数深度分析。
该代理遵循本技能定义的所有微观结构检查清单、跨函数流规则和质量阈值,并执行纯上下文构建约束。

子代理必须:

  • 遵循相同的“微观优先”规则。

  • 返回摘要,由 Claude 集成到其全局模型中。

---

8. 与其他阶段的关系

本技能在以下阶段之前运行:

  • 漏洞发现

  • 分类/分诊

  • 报告撰写

  • 影响建模

  • Exploit 推演

其唯一目的是构建:

  • 深度理解

  • 稳定的上下文

  • 系统级清晰度

---

9. 非目标

在执行本技能期间,Claude 不应

  • 识别漏洞

  • 提出修复方案

  • 生成概念验证(PoC)

  • 建模 Exploit

  • 评定严重程度或影响

这仅是纯粹的上下文构建

局限性

  • 仅在任务明确符合上述范围时使用此技能。
  • 不要将输出视为环境特定验证、测试或专家评审的替代方案。
  • 如果缺失必要的输入、权限、安全边界或成功标准,请停止并请求澄清。